@@ -3,10 +3,16 @@ import {assert} from 'chai';
33import { shallow } from 'enzyme' ;
44import * as td from 'testdouble' ;
55import { Checkbox } from '../../../packages/checkbox/index' ;
6+ import { MDCCheckboxAdapter } from '@material/checkbox/adapter' ;
67import { coerceForTesting } from '../helpers/types' ;
78
89suite ( 'Checkbox' ) ;
910
11+ const getAdapter = ( instance : Checkbox ) : MDCCheckboxAdapter => {
12+ // @ts -ignore adapter_ is a protected property, we need to override it
13+ return instance . foundation . adapter_ ;
14+ } ;
15+
1016test ( 'creates foundation' , ( ) => {
1117 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
1218 assert . exists ( wrapper . instance ( ) . foundation ) ;
@@ -48,84 +54,80 @@ test('native control props.checked is true when props.checked is true', () => {
4854
4955test ( '#foundation.handleChange gets called when prop.checked updates' , ( ) => {
5056 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
51- wrapper . instance ( ) . foundation . handleChange = td . func ( ) ;
57+ wrapper . instance ( ) . foundation . handleChange = td . func < ( ) => null > ( ) ;
5258 wrapper . setProps ( { checked : true } ) ;
5359 td . verify ( wrapper . instance ( ) . foundation . handleChange ( ) , { times : 1 } ) ;
5460} ) ;
5561
5662test ( '#foundation.handleChange gets called when prop.indeterminate updates' , ( ) => {
5763 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
58- wrapper . instance ( ) . foundation . handleChange = td . func ( ) ;
64+ wrapper . instance ( ) . foundation . handleChange = td . func < ( ) => null > ( ) ;
5965 wrapper . setProps ( { indeterminate : true } ) ;
6066 td . verify ( wrapper . instance ( ) . foundation . handleChange ( ) , { times : 1 } ) ;
6167} ) ;
6268
6369test ( '#foundation.setDisabled gets called when prop.disabled updates' , ( ) => {
6470 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
65- wrapper . instance ( ) . foundation . setDisabled = td . func ( ) ;
71+ wrapper . instance ( ) . foundation . setDisabled = td . func < ( disabled : boolean ) => null > ( ) ;
6672 wrapper . setProps ( { disabled : true } ) ;
6773 td . verify ( wrapper . instance ( ) . foundation . setDisabled ( true ) , { times : 1 } ) ;
6874} ) ;
6975
7076test ( '#componentWillUnmount destroys foundation' , ( ) => {
7177 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
7278 const foundation = wrapper . instance ( ) . foundation ;
73- foundation . destroy = td . func ( ) ;
79+ foundation . destroy = td . func < ( ) => void > ( ) ;
7480 wrapper . unmount ( ) ;
7581 td . verify ( foundation . destroy ( ) , { times : 1 } ) ;
7682} ) ;
7783
7884test ( '#adapter.addClass adds class to state.classList' , ( ) => {
7985 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
80- wrapper . instance ( ) . foundation . adapter_ . addClass ( 'test-class-name' ) ;
86+ getAdapter ( wrapper . instance ( ) ) . addClass ( 'test-class-name' ) ;
8187 assert . isTrue ( wrapper . state ( ) . classList . has ( 'test-class-name' ) ) ;
8288} ) ;
8389
8490test ( '#adapter.removeClass removes class from state.classList' , ( ) => {
8591 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
8692 wrapper . setState ( { classList : new Set ( [ 'test-class-name' ] ) } ) ;
87- wrapper . instance ( ) . foundation . adapter_ . removeClass ( 'test-class-name' ) ;
93+ getAdapter ( wrapper . instance ( ) ) . removeClass ( 'test-class-name' ) ;
8894 assert . isFalse ( wrapper . state ( ) . classList . has ( 'test-class-name' ) ) ;
8995} ) ;
9096
9197test ( '#adapter.isChecked returns state.checked if true' , ( ) => {
9298 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
9399 wrapper . setState ( { checked : true } ) ;
94- assert . isTrue ( wrapper . instance ( ) . foundation . adapter_ . isChecked ( ) ) ;
100+ assert . isTrue ( getAdapter ( wrapper . instance ( ) ) . isChecked ( ) ) ;
95101} ) ;
96102
97103test ( '#adapter.isChecked returns state.checked if false' , ( ) => {
98104 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
99105 wrapper . setState ( { checked : false } ) ;
100- assert . isFalse ( wrapper . instance ( ) . foundation . adapter_ . isChecked ( ) ) ;
106+ assert . isFalse ( getAdapter ( wrapper . instance ( ) ) . isChecked ( ) ) ;
101107} ) ;
102108
103109test ( '#adapter.isIndeterminate returns state.indeterminate if true' , ( ) => {
104110 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
105111 wrapper . setState ( { indeterminate : true } ) ;
106- assert . isTrue ( wrapper . instance ( ) . foundation . adapter_ . isIndeterminate ( ) ) ;
112+ assert . isTrue ( getAdapter ( wrapper . instance ( ) ) . isIndeterminate ( ) ) ;
107113} ) ;
108114
109115test ( '#adapter.isIndeterminate returns state.indeterminate if false' , ( ) => {
110116 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
111117 wrapper . setState ( { indeterminate : false } ) ;
112- assert . isFalse ( wrapper . instance ( ) . foundation . adapter_ . isIndeterminate ( ) ) ;
118+ assert . isFalse ( getAdapter ( wrapper . instance ( ) ) . isIndeterminate ( ) ) ;
113119} ) ;
114120
115121test ( '#adapter.setNativeControlAttr sets aria-checked state' , ( ) => {
116122 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
117- wrapper
118- . instance ( )
119- . foundation . adapter_ . setNativeControlAttr ( 'aria-checked' , true ) ;
120- assert . isTrue ( wrapper . state ( ) [ 'aria-checked' ] ) ;
123+ getAdapter ( wrapper . instance ( ) ) . setNativeControlAttr ( 'aria-checked' , 'true' ) ;
124+ assert . equal ( wrapper . state ( ) [ 'aria-checked' ] , 'true' ) ;
121125} ) ;
122126
123127test ( '#adapter.removeNativeControlAttr sets aria-checked state as false' , ( ) => {
124128 const wrapper = shallow < Checkbox > ( < Checkbox /> ) ;
125- wrapper . setState ( { 'aria-checked' : true } ) ;
126- wrapper
127- . instance ( )
128- . foundation . adapter_ . removeNativeControlAttr ( 'aria-checked' ) ;
129+ wrapper . setState ( { 'aria-checked' : 'true' } ) ;
130+ getAdapter ( wrapper . instance ( ) ) . removeNativeControlAttr ( 'aria-checked' ) ;
129131 assert . isFalse ( wrapper . state ( ) [ 'aria-checked' ] ) ;
130132} ) ;
131133
@@ -148,7 +150,7 @@ test('calls foundation.handleChange in native control props.onChange', () => {
148150 indeterminate : false ,
149151 } ,
150152 } ;
151- wrapper . instance ( ) . foundation . handleChange = td . func ( ) ;
153+ wrapper . instance ( ) . foundation . handleChange = td . func < ( ) => void > ( ) ;
152154 nativeControl . simulate ( 'change' , mockEvt ) ;
153155 td . verify ( wrapper . instance ( ) . foundation . handleChange ( ) , { times : 1 } ) ;
154156} ) ;
0 commit comments