@@ -9,7 +9,20 @@ configure({ adapter: new Adapter() });
99
1010const dummyEvent = { preventDefault : ( ) => { } } ;
1111
12- describe ( '<Collapsbile />' , ( ) => {
12+ class CollapsibleStateContainer extends React . Component {
13+ constructor ( props ) {
14+ super ( props ) ;
15+ this . state = { open : ! this . props . changeOpenTo } ;
16+ }
17+ componentDidMount ( ) {
18+ this . setState ( { open : this . props . changeOpenTo } ) ;
19+ }
20+ render ( ) {
21+ return < Collapsible { ...this . props } open = { this . state . open } /> ;
22+ }
23+ }
24+
25+ describe ( '<Collapsible />' , ( ) => {
1326 it ( 'renders an element with the class `.Collapsible`.' , ( ) => {
1427 const wrapper = shallow ( < Collapsible /> ) ;
1528 expect ( wrapper . is ( '.Collapsible' ) ) . toEqual ( true ) ;
@@ -22,8 +35,8 @@ describe('<Collapsbile />', () => {
2235
2336 it ( 'given a closed Collapsible fires the onOpening prop when clicked to open' , ( ) => {
2437 const mockOnOpening = jest . fn ( ) ;
25- const collapsbile = shallow ( < Collapsible trigger = 'Hello World' onOpening = { mockOnOpening } /> ) ;
26- const trigger = collapsbile . find ( '.Collapsible__trigger' ) ;
38+ const collapsible = shallow ( < Collapsible trigger = 'Hello World' onOpening = { mockOnOpening } /> ) ;
39+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
2740
2841 expect ( trigger ) . toHaveLength ( 1 ) ;
2942 trigger . simulate ( 'click' , dummyEvent ) ;
@@ -32,8 +45,8 @@ describe('<Collapsbile />', () => {
3245
3346 it ( 'given an open Collapsible fires the onClosing prop when clicked to close' , ( ) => {
3447 const mockOnClosing = jest . fn ( ) ;
35- const collapsbile = mount ( < Collapsible open trigger = 'Hello World' onClosing = { mockOnClosing } /> ) ;
36- const trigger = collapsbile . find ( '.Collapsible__trigger' ) ;
48+ const collapsible = mount ( < Collapsible open trigger = 'Hello World' onClosing = { mockOnClosing } /> ) ;
49+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
3750
3851 expect ( trigger ) . toHaveLength ( 1 ) ;
3952 trigger . simulate ( 'click' , dummyEvent ) ;
@@ -42,8 +55,8 @@ describe('<Collapsbile />', () => {
4255
4356 it ( 'given a closed Collapsible it fires the onOpen prop after the transistion' , ( ) => {
4457 const mockOnOpen = jest . fn ( ) ;
45- const collapsbile = shallow ( < Collapsible open trigger = 'Hello World' onOpen = { mockOnOpen } > Some Content</ Collapsible > ) ;
46- const outer = collapsbile . find ( '.Collapsible__contentOuter' ) ;
58+ const collapsible = shallow ( < Collapsible open trigger = 'Hello World' onOpen = { mockOnOpen } > Some Content</ Collapsible > ) ;
59+ const outer = collapsible . find ( '.Collapsible__contentOuter' ) ;
4760
4861 expect ( outer ) . toHaveLength ( 1 ) ;
4962 outer . simulate ( 'transitionEnd' , dummyEvent ) ;
@@ -52,8 +65,8 @@ describe('<Collapsbile />', () => {
5265
5366 it ( 'given an open Collapsible it fires the onClose prop after the transistion' , ( ) => {
5467 const mockOnClose = jest . fn ( ) ;
55- const collapsbile = shallow ( < Collapsible trigger = 'Hello World' onClose = { mockOnClose } > Some Content</ Collapsible > ) ;
56- const outer = collapsbile . find ( '.Collapsible__contentOuter' ) ;
68+ const collapsible = shallow ( < Collapsible trigger = 'Hello World' onClose = { mockOnClose } > Some Content</ Collapsible > ) ;
69+ const outer = collapsible . find ( '.Collapsible__contentOuter' ) ;
5770
5871 expect ( outer ) . toHaveLength ( 1 ) ;
5972 outer . simulate ( 'transitionEnd' , dummyEvent ) ;
@@ -62,11 +75,53 @@ describe('<Collapsbile />', () => {
6275
6376 it ( 'given a Collapsible with the handleTriggerClick prop, the handleTriggerClick prop gets fired' , ( ) => {
6477 const mockHandleTriggerClick = jest . fn ( ) ;
65- const collapsbile = shallow ( < Collapsible handleTriggerClick = { mockHandleTriggerClick } trigger = "Hello world" /> ) ;
66- const trigger = collapsbile . find ( '.Collapsible__trigger' ) ;
78+ const collapsible = shallow ( < Collapsible handleTriggerClick = { mockHandleTriggerClick } trigger = "Hello world" /> ) ;
79+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
6780
6881 expect ( trigger ) . toHaveLength ( 1 ) ;
6982 trigger . simulate ( 'click' , dummyEvent ) ;
7083 expect ( mockHandleTriggerClick . mock . calls ) . toHaveLength ( 1 ) ;
7184 } )
72- } )
85+
86+ describe ( 'onTriggerOpening prop' , ( ) => {
87+ it ( 'is called when a closed Collapsible is triggered' , ( ) => {
88+ const mockOnTriggerOpening = jest . fn ( ) ;
89+ const collapsible = mount ( < Collapsible trigger = 'Hello World' onTriggerOpening = { mockOnTriggerOpening } /> ) ;
90+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
91+
92+ expect ( trigger ) . toHaveLength ( 1 ) ;
93+ trigger . simulate ( 'click' , dummyEvent ) ;
94+ expect ( mockOnTriggerOpening . mock . calls ) . toHaveLength ( 1 ) ;
95+ } ) ;
96+
97+ it ( "is not called when a closed collapsible's open prop changes to true" , ( ) => {
98+ const mockOnTriggerOpening = jest . fn ( ) ;
99+ const collapsible = mount ( < CollapsibleStateContainer changeOpenTo = { true } trigger = 'Hello World' onTriggerOpening = { mockOnTriggerOpening } /> ) ;
100+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
101+
102+ expect ( trigger ) . toHaveLength ( 1 ) ;
103+ expect ( mockOnTriggerOpening . mock . calls ) . toHaveLength ( 0 ) ;
104+ } ) ;
105+ } ) ;
106+
107+ describe ( 'onTriggerClosing prop' , ( ) => {
108+ it ( 'is called when an open Collapsible is triggered' , ( ) => {
109+ const mockOnTriggerClosing = jest . fn ( ) ;
110+ const collapsible = mount ( < Collapsible open trigger = 'Hello World' onTriggerClosing = { mockOnTriggerClosing } /> ) ;
111+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
112+
113+ expect ( trigger ) . toHaveLength ( 1 ) ;
114+ trigger . simulate ( 'click' , dummyEvent ) ;
115+ expect ( mockOnTriggerClosing . mock . calls ) . toHaveLength ( 1 ) ;
116+ } ) ;
117+
118+ it ( "is not called when an open collapsible's open prop changes to false" , ( ) => {
119+ const mockOnTriggerClosing = jest . fn ( ) ;
120+ const collapsible = mount ( < CollapsibleStateContainer changeOpenTo = { false } trigger = 'Hello World' onTriggerClosing = { mockOnTriggerClosing } /> ) ;
121+ const trigger = collapsible . find ( '.Collapsible__trigger' ) ;
122+
123+ expect ( trigger ) . toHaveLength ( 1 ) ;
124+ expect ( mockOnTriggerClosing . mock . calls ) . toHaveLength ( 0 ) ;
125+ } ) ;
126+ } ) ;
127+ } )
0 commit comments