@@ -42,6 +42,15 @@ describe('grid connector', () => {
42
42
expect ( getBodyCellText ( grid , 0 , 0 ) ) . to . equal ( 'foo' ) ;
43
43
} ) ;
44
44
45
+ it ( 'should cancel debounced requests if all data has already been received' , async ( ) => {
46
+ setRootItems ( grid . $connector , [ { key : '0' , name : 'foo' } ] ) ;
47
+ await nextFrame ( ) ;
48
+ grid . $connector . reset ( ) ;
49
+ setRootItems ( grid . $connector , [ { key : '0' , name : 'bar' } ] ) ;
50
+ await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
51
+ expect ( grid . $server . setViewportRange ) . to . be . not . called ;
52
+ } ) ;
53
+
45
54
describe ( 'empty grid' , ( ) => {
46
55
it ( 'should not have loading state when refreshing grid' , async ( ) => {
47
56
setRootItems ( grid . $connector , [ ] ) ;
@@ -73,7 +82,7 @@ describe('grid connector', () => {
73
82
74
83
beforeEach ( async ( ) => {
75
84
// Use a smaller page size for testing
76
- grid . pageSize = 25 ;
85
+ grid . pageSize = 10 ;
77
86
grid . $connector . reset ( ) ;
78
87
79
88
// Add all root items
@@ -84,23 +93,23 @@ describe('grid connector', () => {
84
93
describe ( 'last requested range is in viewport' , ( ) => {
85
94
beforeEach ( async ( ) => {
86
95
// Request a range of items at the top
87
- clear ( grid . $connector , 0 , 50 ) ;
96
+ clear ( grid . $connector , 0 , 30 ) ;
88
97
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
89
- expect ( grid . $server . setViewportRange ) . to . be . calledOnceWith ( 0 , 50 ) ;
90
- setRootItems ( grid . $connector , items , 0 , 50 ) ;
98
+ expect ( grid . $server . setViewportRange ) . to . be . calledOnceWith ( 0 , 30 ) ;
99
+ setRootItems ( grid . $connector , items , 0 , 30 ) ;
91
100
grid . $server . setViewportRange . resetHistory ( ) ;
92
101
} ) ;
93
102
94
103
it ( 'should request new items after incomplete confirm' , async ( ) => {
95
104
// Clear the items again
96
- clear ( grid . $connector , 0 , 100 ) ;
105
+ clear ( grid . $connector , 0 , 30 ) ;
97
106
98
107
// Add the first page items back before the request timeout (partial/incomplete preload)
99
108
setRootItems ( grid . $connector , items , 0 , grid . pageSize ) ;
100
109
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
101
110
102
111
// Grid should have requested for the missing items
103
- expect ( grid . $server . setViewportRange ) . to . be . calledOnceWith ( 0 , 50 ) ;
112
+ expect ( grid . $server . setViewportRange ) . to . be . calledOnceWith ( 0 , 30 ) ;
104
113
} ) ;
105
114
106
115
it ( 'should not request for new items after complete confirm' , async ( ) => {
@@ -122,8 +131,8 @@ describe('grid connector', () => {
122
131
clear ( grid . $connector , 50 , 50 ) ;
123
132
grid . scrollToIndex ( 50 ) ;
124
133
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
125
- expect ( grid . $server . setViewportRange ) . to . have . been . calledOnceWith ( 25 , 75 ) ;
126
- setRootItems ( grid . $connector , items , 25 , 75 ) ;
134
+ expect ( grid . $server . setViewportRange ) . to . have . been . calledOnceWith ( 30 , 50 ) ;
135
+ setRootItems ( grid . $connector , items , 30 , 50 ) ;
127
136
grid . $server . setViewportRange . resetHistory ( ) ;
128
137
} ) ;
129
138
@@ -133,15 +142,15 @@ describe('grid connector', () => {
133
142
// - Clear last requested range partially
134
143
// - Preload first two pages so that grid doesn't need to request a new range yet
135
144
grid . scrollToIndex ( 0 ) ;
136
- clear ( grid . $connector , 50 , grid . pageSize ) ;
137
- setRootItems ( grid . $connector , items , 0 , 50 ) ;
145
+ clear ( grid . $connector , 40 , grid . pageSize ) ;
146
+ setRootItems ( grid . $connector , items , 0 , 30 ) ;
138
147
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
139
148
expect ( grid . $server . setViewportRange ) . to . not . have . been . called ;
140
149
141
150
// Scroll down again, should reload the range because part of it was cleared
142
151
grid . scrollToIndex ( 50 ) ;
143
152
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
144
- expect ( grid . $server . setViewportRange ) . to . have . been . calledOnceWith ( 25 , 75 ) ;
153
+ expect ( grid . $server . setViewportRange ) . to . have . been . calledOnceWith ( 30 , 50 ) ;
145
154
} ) ;
146
155
147
156
it ( 'should not request for items if data outside of the last range was cleared' , async ( ) => {
@@ -150,7 +159,7 @@ describe('grid connector', () => {
150
159
// - Clear data outside the requested range
151
160
// - Preload first two pages so that grid doesn't need to request a new range yet
152
161
grid . scrollToIndex ( 0 ) ;
153
- clear ( grid . $connector , 75 , grid . pageSize ) ;
162
+ clear ( grid . $connector , 70 , grid . pageSize ) ;
154
163
grid . $connector . confirm ( - 1 ) ;
155
164
await aTimeout ( GRID_CONNECTOR_ROOT_REQUEST_DELAY ) ;
156
165
expect ( grid . $server . setViewportRange ) . to . not . have . been . called ;
0 commit comments