@@ -44,6 +44,85 @@ describe('useListData', function () {
44
44
expect ( result . current . selectedKeys ) . toEqual ( new Set ( [ 'Sam' , 'Julia' ] ) ) ;
45
45
} ) ;
46
46
47
+ describe ( 'addKeysToSelection' , function ( ) {
48
+ it ( 'should add selected keys' , function ( ) {
49
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : [ 'Sam' ] } ) ) ;
50
+ let initialResult = result . current ;
51
+
52
+ act ( ( ) => {
53
+ result . current . addKeysToSelection ( [ 'Julia' ] ) ;
54
+ } ) ;
55
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
56
+ expect ( result . current . selectedKeys ) . toEqual ( new Set ( [ 'Sam' , 'Julia' ] ) ) ;
57
+ } ) ;
58
+
59
+ it ( 'should support adding "all" to selected keys' , function ( ) {
60
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : [ 'Sam' ] } ) ) ;
61
+ let initialResult = result . current ;
62
+
63
+ act ( ( ) => {
64
+ result . current . addKeysToSelection ( 'all' ) ;
65
+ } ) ;
66
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
67
+ expect ( result . current . selectedKeys ) . toEqual ( 'all' ) ;
68
+ } ) ;
69
+
70
+ it ( 'should still return "all" if selected keys was already "all"' , function ( ) {
71
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : 'all' } ) ) ;
72
+
73
+ act ( ( ) => {
74
+ result . current . addKeysToSelection ( [ 'Same' ] ) ;
75
+ } ) ;
76
+ expect ( result . current . selectedKeys ) . toEqual ( 'all' ) ;
77
+ } ) ;
78
+ } ) ;
79
+
80
+ describe ( 'removeKeysFromSelection' , function ( ) {
81
+ it ( 'should remove all keys' , function ( ) {
82
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : [ 'Sam' , 'Julia' ] } ) ) ;
83
+ let initialResult = result . current ;
84
+
85
+ act ( ( ) => {
86
+ result . current . removeKeysFromSelection ( 'all' ) ;
87
+ } ) ;
88
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
89
+ expect ( result . current . selectedKeys ) . toEqual ( new Set ( ) ) ;
90
+ } ) ;
91
+
92
+ it ( 'should remove the selected keys' , function ( ) {
93
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : [ 'Sam' , 'Julia' ] } ) ) ;
94
+ let initialResult = result . current ;
95
+
96
+ act ( ( ) => {
97
+ result . current . removeKeysFromSelection ( [ 'Sam' ] ) ;
98
+ } ) ;
99
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
100
+ expect ( result . current . selectedKeys ) . toEqual ( new Set ( [ 'Julia' ] ) ) ;
101
+ } ) ;
102
+
103
+ it ( 'should remove the selected keys from an "all" set' , function ( ) {
104
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : 'all' } ) ) ;
105
+ let initialResult = result . current ;
106
+
107
+ act ( ( ) => {
108
+ result . current . removeKeysFromSelection ( [ 'Sam' , 'David' ] ) ;
109
+ } ) ;
110
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
111
+ expect ( result . current . selectedKeys ) . toEqual ( new Set ( [ 'Julia' ] ) ) ;
112
+ } ) ;
113
+
114
+ it ( 'should support removing "all"' , function ( ) {
115
+ let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey, initialSelectedKeys : [ 'Sam' , 'Julia' ] } ) ) ;
116
+ let initialResult = result . current ;
117
+
118
+ act ( ( ) => {
119
+ result . current . removeKeysFromSelection ( 'all' ) ;
120
+ } ) ;
121
+ expect ( result . current . selectedKeys ) . not . toBe ( initialResult . selectedKeys ) ;
122
+ expect ( result . current . selectedKeys ) . toEqual ( new Set ( [ ] ) ) ;
123
+ } ) ;
124
+ } ) ;
125
+
47
126
it ( 'should get an item by key' , function ( ) {
48
127
let { result} = renderHook ( ( ) => useListData ( { initialItems : initial , getKey} ) ) ;
49
128
expect ( result . current . getItem ( 'Sam' ) ) . toBe ( initial [ 1 ] ) ;
0 commit comments