@@ -4198,45 +4198,56 @@ describe('$compile', function() {
4198
4198
4199
4199
4200
4200
it ( 'should respect explicit return value from controller' , function ( ) {
4201
+ var expectedController ;
4201
4202
module ( function ( ) {
4202
4203
directive ( 'logControllerProp' , function ( log ) {
4203
4204
return {
4204
4205
controller : function ( $scope ) {
4205
4206
this . foo = 'baz' ; // value should not be used.
4206
- return { foo : 'bar' } ;
4207
+ return expectedController = { foo : 'bar' } ;
4207
4208
} ,
4208
4209
link : function ( scope , element , attrs , controller ) {
4209
- log ( controller . foo ) ;
4210
+ expect ( expectedController ) . toBeDefined ( ) ;
4211
+ expect ( controller ) . toBe ( expectedController ) ;
4212
+ expect ( controller . foo ) . toBe ( 'bar' ) ;
4213
+ log ( 'done' ) ;
4210
4214
}
4211
4215
} ;
4212
4216
} ) ;
4213
4217
} ) ;
4214
4218
inject ( function ( log , $compile , $rootScope ) {
4215
4219
element = $compile ( '<log-controller-prop></log-controller-prop>' ) ( $rootScope ) ;
4216
- expect ( log ) . toEqual ( 'bar ' ) ;
4217
- expect ( element . data ( '$logControllerPropController' ) . foo ) . toEqual ( 'bar' ) ;
4220
+ expect ( log ) . toEqual ( 'done ' ) ;
4221
+ expect ( element . data ( '$logControllerPropController' ) ) . toBe ( expectedController ) ;
4218
4222
} ) ;
4219
4223
} ) ;
4220
4224
4221
4225
4222
4226
it ( 'should get explicit return value of required parent controller' , function ( ) {
4227
+ var expectedController ;
4223
4228
module ( function ( ) {
4224
4229
directive ( 'nested' , function ( log ) {
4225
4230
return {
4226
4231
require : '^^?nested' ,
4227
4232
controller : function ( ) {
4228
- return { foo : 'bar' } ;
4233
+ if ( ! expectedController ) expectedController = { foo : 'bar' } ;
4234
+ return expectedController ;
4229
4235
} ,
4230
4236
link : function ( scope , element , attrs , controller ) {
4231
- log ( ! ! controller && controller . foo ) ;
4237
+ if ( element . parent ( ) . length ) {
4238
+ expect ( expectedController ) . toBeDefined ( ) ;
4239
+ expect ( controller ) . toBe ( expectedController ) ;
4240
+ expect ( controller . foo ) . toBe ( 'bar' ) ;
4241
+ log ( 'done' ) ;
4242
+ }
4232
4243
}
4233
4244
} ;
4234
4245
} ) ;
4235
4246
} ) ;
4236
4247
inject ( function ( log , $compile , $rootScope ) {
4237
4248
element = $compile ( '<div nested><div nested></div></div>' ) ( $rootScope ) ;
4238
-
4239
- expect ( log ) . toEqual ( 'bar; false' ) ;
4249
+ expect ( log ) . toEqual ( 'done' ) ;
4250
+ expect ( element . data ( '$nestedController' ) ) . toBe ( expectedController ) ;
4240
4251
} ) ;
4241
4252
} ) ;
4242
4253
@@ -4268,11 +4279,10 @@ describe('$compile', function() {
4268
4279
var expectedController ;
4269
4280
module ( function ( ) {
4270
4281
directive ( 'nester' , valueFn ( {
4271
- transclude : 'content' ,
4282
+ transclude : true ,
4272
4283
controller : function ( $transclude ) {
4273
4284
this . foo = 'baz' ;
4274
- expectedController = { transclude :$transclude , foo : 'bar' } ;
4275
- return expectedController ;
4285
+ return expectedController = { transclude :$transclude , foo : 'bar' } ;
4276
4286
} ,
4277
4287
link : function ( scope , el , attr , ctrl ) {
4278
4288
ctrl . transclude ( cloneAttach ) ;
@@ -4285,6 +4295,7 @@ describe('$compile', function() {
4285
4295
return {
4286
4296
require : '^^nester' ,
4287
4297
link : function ( scope , element , attrs , controller ) {
4298
+ expect ( controller ) . toBeDefined ( ) ;
4288
4299
expect ( controller ) . toBe ( expectedController ) ;
4289
4300
log ( 'done' ) ;
4290
4301
}
@@ -4294,7 +4305,8 @@ describe('$compile', function() {
4294
4305
inject ( function ( log , $compile ) {
4295
4306
element = $compile ( '<div nester><div nested></div></div>' ) ( $rootScope ) ;
4296
4307
$rootScope . $apply ( ) ;
4297
- expect ( log ) . toEqual ( 'done' ) ;
4308
+ expect ( log . toString ( ) ) . toBe ( 'done' ) ;
4309
+ expect ( element . data ( '$nesterController' ) ) . toBe ( expectedController ) ;
4298
4310
} ) ;
4299
4311
} ) ;
4300
4312
0 commit comments