@@ -233,6 +233,44 @@ describe('MdRadio', () => {
233
233
. toBe ( 0 , 'Expect no [md-ripple] in radio buttons' ) ;
234
234
}
235
235
} ) ) ;
236
+
237
+ it ( 'should update the group\'s selected radio to null when unchecking that radio '
238
+ + 'programmatically' , ( ) => {
239
+ let changeSpy = jasmine . createSpy ( 'radio-group change listener' ) ;
240
+ groupInstance . change . subscribe ( changeSpy ) ;
241
+ radioInstances [ 0 ] . checked = true ;
242
+
243
+ fixture . detectChanges ( ) ;
244
+
245
+ expect ( changeSpy ) . toHaveBeenCalled ( ) ;
246
+ expect ( groupInstance . value ) . toBeTruthy ( ) ;
247
+
248
+ radioInstances [ 0 ] . checked = false ;
249
+
250
+ fixture . detectChanges ( ) ;
251
+
252
+ expect ( changeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
253
+ expect ( groupInstance . value ) . toBeFalsy ( ) ;
254
+ expect ( radioInstances . every ( radio => ! radio . checked ) ) . toBe ( true ) ;
255
+ expect ( groupInstance . selected ) . toBeNull ( ) ;
256
+ } ) ;
257
+
258
+ it ( 'should fire a change event from the group whenever a radio checked state changes' , ( ) => {
259
+ let changeSpy = jasmine . createSpy ( 'radio-group change listener' ) ;
260
+ groupInstance . change . subscribe ( changeSpy ) ;
261
+ radioInstances [ 0 ] . checked = true ;
262
+
263
+ fixture . detectChanges ( ) ;
264
+
265
+ expect ( changeSpy ) . toHaveBeenCalled ( ) ;
266
+ expect ( groupInstance . value ) . toBeTruthy ( ) ;
267
+
268
+ radioInstances [ 1 ] . checked = true ;
269
+
270
+ fixture . detectChanges ( ) ;
271
+
272
+ expect ( changeSpy ) . toHaveBeenCalledTimes ( 2 ) ;
273
+ } ) ;
236
274
} ) ;
237
275
238
276
describe ( 'group with ngModel' , ( ) => {
0 commit comments