@@ -233,6 +233,44 @@ describe('MdRadio', () => {
233233 . toBe ( 0 , 'Expect no [md-ripple] in radio buttons' ) ;
234234 }
235235 } ) ) ;
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+ } ) ;
236274 } ) ;
237275
238276 describe ( 'group with ngModel' , ( ) => {
0 commit comments