@@ -33,47 +33,102 @@ describe('useRecordSelection', () => {
3333 expect ( selected ) . toEqual ( [ 123 , 456 ] ) ;
3434 } ) ;
3535
36- it ( 'should allow to select/unselect a record' , ( ) => {
37- const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
38- wrapper,
36+ describe ( 'select' , ( ) => {
37+ it ( 'should allow to select a record' , ( ) => {
38+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
39+ wrapper,
40+ } ) ;
41+ const [ selected1 , { select } ] = result . current ;
42+ expect ( selected1 ) . toEqual ( [ ] ) ;
43+ select ( [ 123 , 456 ] ) ;
44+ const [ selected2 ] = result . current ;
45+ expect ( selected2 ) . toEqual ( [ 123 , 456 ] ) ;
46+ } ) ;
47+ it ( 'should ignore previous selection' , ( ) => {
48+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
49+ wrapper,
50+ } ) ;
51+ const [ selected1 , { select } ] = result . current ;
52+ expect ( selected1 ) . toEqual ( [ ] ) ;
53+ select ( [ 123 , 456 ] ) ;
54+ const [ selected2 ] = result . current ;
55+ expect ( selected2 ) . toEqual ( [ 123 , 456 ] ) ;
56+ select ( [ 123 , 789 ] ) ;
57+ const [ selected3 ] = result . current ;
58+ expect ( selected3 ) . toEqual ( [ 123 , 789 ] ) ;
3959 } ) ;
40- const [ selected1 , { select } ] = result . current ;
41- expect ( selected1 ) . toEqual ( [ ] ) ;
42- select ( [ 123 , 456 ] ) ;
43- const [ selected2 , { unselect } ] = result . current ;
44- expect ( selected2 ) . toEqual ( [ 123 , 456 ] ) ;
45- unselect ( [ 123 ] ) ;
46- const [ selected3 ] = result . current ;
47- expect ( selected3 ) . toEqual ( [ 456 ] ) ;
4860 } ) ;
49-
50- it ( 'should allow to toggle a record' , ( ) => {
51- const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
52- wrapper,
61+ describe ( 'unselect' , ( ) => {
62+ it ( 'should allow to unselect a record' , ( ) => {
63+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
64+ wrapper,
65+ } ) ;
66+ const [ , { select, unselect } ] = result . current ;
67+ select ( [ 123 , 456 ] ) ;
68+ unselect ( [ 123 ] ) ;
69+ const [ selected ] = result . current ;
70+ expect ( selected ) . toEqual ( [ 456 ] ) ;
71+ } ) ;
72+ it ( 'should not fail if the record was not selected' , ( ) => {
73+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
74+ wrapper,
75+ } ) ;
76+ const [ , { select, unselect } ] = result . current ;
77+ select ( [ 123 , 456 ] ) ;
78+ unselect ( [ 789 ] ) ;
79+ const [ selected ] = result . current ;
80+ expect ( selected ) . toEqual ( [ 123 , 456 ] ) ;
5381 } ) ;
54- const [ selected1 , { toggle } ] = result . current ;
55- expect ( selected1 ) . toEqual ( [ ] ) ;
56- toggle ( 123 ) ;
57- const [ selected2 ] = result . current ;
58- expect ( selected2 ) . toEqual ( [ 123 ] ) ;
59- toggle ( 456 ) ;
60- const [ selected3 ] = result . current ;
61- expect ( selected3 ) . toEqual ( [ 123 , 456 ] ) ;
62- toggle ( 123 ) ;
63- const [ selected4 ] = result . current ;
64- expect ( selected4 ) . toEqual ( [ 456 ] ) ;
6582 } ) ;
66-
67- it ( 'should allow to clear the selection' , ( ) => {
68- const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
69- wrapper,
83+ describe ( 'toggle' , ( ) => {
84+ it ( 'should allow to toggle a record selection' , ( ) => {
85+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
86+ wrapper,
87+ } ) ;
88+ const [ selected1 , { toggle } ] = result . current ;
89+ expect ( selected1 ) . toEqual ( [ ] ) ;
90+ toggle ( 123 ) ;
91+ const [ selected2 ] = result . current ;
92+ expect ( selected2 ) . toEqual ( [ 123 ] ) ;
93+ toggle ( 456 ) ;
94+ const [ selected3 ] = result . current ;
95+ expect ( selected3 ) . toEqual ( [ 123 , 456 ] ) ;
96+ toggle ( 123 ) ;
97+ const [ selected4 ] = result . current ;
98+ expect ( selected4 ) . toEqual ( [ 456 ] ) ;
99+ } ) ;
100+ it ( 'should allow to empty the selection' , ( ) => {
101+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
102+ wrapper,
103+ } ) ;
104+ const [ , { select, toggle } ] = result . current ;
105+ select ( [ 123 ] ) ;
106+ toggle ( 123 ) ;
107+ const [ selected ] = result . current ;
108+ expect ( selected ) . toEqual ( [ ] ) ;
109+ } ) ;
110+ } ) ;
111+ describe ( 'clearSelection' , ( ) => {
112+ it ( 'should allow to clear the selection' , ( ) => {
113+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
114+ wrapper,
115+ } ) ;
116+ const [ , { toggle, clearSelection } ] = result . current ;
117+ toggle ( 123 ) ;
118+ const [ selected2 ] = result . current ;
119+ expect ( selected2 ) . toEqual ( [ 123 ] ) ;
120+ clearSelection ( ) ;
121+ const [ selected3 ] = result . current ;
122+ expect ( selected3 ) . toEqual ( [ ] ) ;
123+ } ) ;
124+ it ( 'should not fail on empty selection' , ( ) => {
125+ const { result } = renderHook ( ( ) => useRecordSelection ( 'foo' ) , {
126+ wrapper,
127+ } ) ;
128+ const [ , { clearSelection } ] = result . current ;
129+ clearSelection ( ) ;
130+ const [ selected ] = result . current ;
131+ expect ( selected ) . toEqual ( [ ] ) ;
70132 } ) ;
71- const [ , { toggle, clearSelection } ] = result . current ;
72- toggle ( 123 ) ;
73- const [ selected2 ] = result . current ;
74- expect ( selected2 ) . toEqual ( [ 123 ] ) ;
75- clearSelection ( ) ;
76- const [ selected3 ] = result . current ;
77- expect ( selected3 ) . toEqual ( [ ] ) ;
78133 } ) ;
79134} ) ;
0 commit comments