@@ -65,6 +65,56 @@ test('if props.active updates to false, foundation.deactivate is called', () =>
65
65
td . verify ( wrapper . instance ( ) . deactivate ( ) , { times : 1 } ) ;
66
66
} ) ;
67
67
68
+ test ( 'calls foundation.setFocusOnActivate when props.focusOnActivate changes from false to true' , ( ) => {
69
+ const wrapper = shallow < Tab > ( < Tab focusOnActivate = { false } /> ) ;
70
+ wrapper . instance ( ) . foundation . setFocusOnActivate = td . func ( ) ;
71
+ wrapper . setProps ( { focusOnActivate : true } ) ;
72
+ td . verify ( wrapper . instance ( ) . foundation . setFocusOnActivate ( true ) , { times : 1 } ) ;
73
+ } ) ;
74
+
75
+ test ( 'calls foundation.setFocusOnActivate when props.focusOnActivate changes from true to false' , ( ) => {
76
+ const wrapper = shallow < Tab > ( < Tab focusOnActivate /> ) ;
77
+ wrapper . instance ( ) . foundation . setFocusOnActivate = td . func ( ) ;
78
+ wrapper . setProps ( { focusOnActivate : false } ) ;
79
+ td . verify ( wrapper . instance ( ) . foundation . setFocusOnActivate ( false ) , { times : 1 } ) ;
80
+ } ) ;
81
+
82
+ test ( 'when props.focusOnActivate is true, an active tab should be focused on mount' , ( ) => {
83
+ const div = document . createElement ( 'div' ) ;
84
+ document . body . append ( div ) ;
85
+ const wrapper = mount < Tab > ( < Tab active focusOnActivate /> , { attachTo : div } ) ;
86
+ assert . equal ( document . activeElement , wrapper . getDOMNode ( ) ) ;
87
+ div . remove ( ) ;
88
+ } ) ;
89
+
90
+ test ( 'when props.focusOnActivate is true and active is changed to true, the tab should be focused' , ( ) => {
91
+ const div = document . createElement ( 'div' ) ;
92
+ document . body . append ( div ) ;
93
+ const wrapper = mount < Tab > ( < Tab focusOnActivate /> , { attachTo : div } ) ;
94
+ assert . notEqual ( document . activeElement , wrapper . getDOMNode ( ) ) ;
95
+ wrapper . setProps ( { active : true } ) ;
96
+ assert . equal ( document . activeElement , wrapper . getDOMNode ( ) ) ;
97
+ div . remove ( ) ;
98
+ } ) ;
99
+
100
+ test ( 'when props.focusOnActivate is false, an active tab should not be focused on mount' , ( ) => {
101
+ const div = document . createElement ( 'div' ) ;
102
+ document . body . append ( div ) ;
103
+ const wrapper = mount < Tab > ( < Tab active focusOnActivate = { false } /> , { attachTo : div } ) ;
104
+ assert . notEqual ( document . activeElement , wrapper . getDOMNode ( ) ) ;
105
+ div . remove ( ) ;
106
+ } ) ;
107
+
108
+ test ( 'when props.focusOnActivate is false and active is changed to true, the tab should not be focused' , ( ) => {
109
+ const div = document . createElement ( 'div' ) ;
110
+ document . body . append ( div ) ;
111
+ const wrapper = mount < Tab > ( < Tab focusOnActivate = { false } /> , { attachTo : div } ) ;
112
+ assert . notEqual ( document . activeElement , wrapper . getDOMNode ( ) ) ;
113
+ wrapper . setProps ( { active : true } ) ;
114
+ assert . notEqual ( document . activeElement , wrapper . getDOMNode ( ) ) ;
115
+ div . remove ( ) ;
116
+ } ) ;
117
+
68
118
test ( '#adapter.addClass adds class to state.classList' , ( ) => {
69
119
const wrapper = shallow < Tab > ( < Tab /> ) ;
70
120
wrapper . instance ( ) . adapter . addClass ( 'test-class' ) ;
0 commit comments