@sankhyalabs/core 6.1.0-dev.4 → 6.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.docs/classes/Change.md +11 -11
- package/.docs/classes/ColumnFilterManager.md +6 -6
- package/.docs/classes/DataUnit.md +157 -157
- package/.docs/classes/DataUnitLoaderUtils.md +6 -6
- package/.docs/classes/SelectionInfo.md +16 -16
- package/.docs/enumerations/ChangeOperation.md +4 -4
- package/.docs/enumerations/SelectionMode.md +2 -2
- package/.docs/functions/defaultDataLoader.md +1 -1
- package/.docs/interfaces/DUActionInterceptor.md +1 -1
- package/.docs/interfaces/PageRequest.md +3 -3
- package/.docs/interfaces/PaginationInfoBuilderParams.md +3 -3
- package/.docs/interfaces/QuickFilter.md +3 -3
- package/.docs/interfaces/Record.md +4 -4
- package/.docs/interfaces/SavedRecord.md +5 -5
- package/.docs/interfaces/WaitingChange.md +3 -3
- package/.docs/type-aliases/DataUnitEventOptions.md +1 -1
- package/dist/dataunit/DataUnit.d.ts +129 -9
- package/dist/dataunit/DataUnit.js +177 -87
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/dataunit/DataUnitHelper.d.ts +1 -2
- package/dist/dataunit/DataUnitHelper.js.map +1 -1
- package/dist/dataunit/formatting/PrettyFormatter.js +3 -5
- package/dist/dataunit/formatting/PrettyFormatter.js.map +1 -1
- package/dist/dataunit/loader/utils/dataUnitLoaderUtils.d.ts +1 -2
- package/dist/dataunit/loader/utils/dataUnitLoaderUtils.js.map +1 -1
- package/dist/dataunit/loading/LoadDataRequest.d.ts +1 -1
- package/dist/dataunit/loading/LoadDataResponse.d.ts +1 -1
- package/dist/dataunit/sorting/FieldComparator.d.ts +1 -1
- package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +1 -1
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +1 -2
- package/dist/dataunit/state/slice/ChangesSlice.js +1 -2
- package/dist/dataunit/state/slice/ChangesSlice.js.map +1 -1
- package/dist/dataunit/state/slice/LoadingControlSlice.js.map +1 -1
- package/dist/dataunit/state/slice/RecordsSlice.d.ts +1 -1
- package/dist/dataunit/state/slice/RecordsSlice.js +1 -1
- package/dist/dataunit/state/slice/RecordsSlice.js.map +1 -1
- package/dist/dataunit/state/slice/SelectionSlice.d.ts +1 -2
- package/dist/dataunit/state/slice/SelectionSlice.js +1 -2
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -1
- package/dist/dataunit/state/slice/SnapshotSlice.d.ts +1 -1
- package/dist/dataunit/state/slice/WaitingChangesSlice.d.ts +1 -1
- package/dist/index.d.ts +1 -4
- package/dist/index.js +1 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/ColumnFilterManager.d.ts +1 -2
- package/dist/utils/ColumnFilterManager.js.map +1 -1
- package/dist/utils/SortingUtils.d.ts +1 -1
- package/package.json +1 -2
- package/reports/test-report.xml +557 -758
- package/src/dataunit/DataUnit.ts +397 -242
- package/src/dataunit/DataUnitHelper.ts +1 -2
- package/src/dataunit/formatting/PrettyFormatter.ts +5 -4
- package/src/dataunit/loader/utils/dataUnitLoaderUtils.ts +1 -2
- package/src/dataunit/loading/LoadDataRequest.ts +1 -1
- package/src/dataunit/loading/LoadDataResponse.ts +1 -1
- package/src/dataunit/sorting/FieldComparator.ts +1 -1
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +1 -1
- package/src/dataunit/state/slice/ChangesSlice.ts +1 -2
- package/src/dataunit/state/slice/LoadingControlSlice.ts +2 -1
- package/src/dataunit/state/slice/RecordsSlice.ts +2 -3
- package/src/dataunit/state/slice/SelectionSlice.ts +1 -2
- package/src/dataunit/state/slice/SnapshotSlice.ts +1 -1
- package/src/dataunit/state/slice/WaitingChangesSlice.ts +1 -1
- package/src/dataunit/state/slice/test/RecordsSlice.spec.ts +1 -1
- package/src/dataunit/test/DataUnit.spec.ts +44 -0
- package/src/index.ts +1 -4
- package/src/utils/ColumnFilterManager.ts +1 -2
- package/src/utils/SortingUtils.ts +1 -1
- package/test/dataunit/formatting/PrettyFormatter.spec.ts +1 -1
- package/test/dataunit/loader/dataUnitInMemoryLoader.spec.ts +1 -2
- package/test/dataunit/loader/utils/dataUnitLoaderUtils.spec.ts +1 -1
- package/test/util/ColumnFilterManager.spec.ts +1 -2
- package/tsconfig.json +0 -1
- package/dist/dataunit/Changes.d.ts +0 -52
- package/dist/dataunit/Changes.js +0 -64
- package/dist/dataunit/Changes.js.map +0 -1
- package/dist/dataunit/SelectionInfo.d.ts +0 -16
- package/dist/dataunit/SelectionInfo.js +0 -39
- package/dist/dataunit/SelectionInfo.js.map +0 -1
- package/dist/dataunit/interfaces/dataUnit.d.ts +0 -61
- package/dist/dataunit/interfaces/dataUnit.js +0 -13
- package/dist/dataunit/interfaces/dataUnit.js.map +0 -1
- package/src/dataunit/Changes.ts +0 -77
- package/src/dataunit/SelectionInfo.ts +0 -55
- package/src/dataunit/interfaces/dataUnit.ts +0 -71
- package/test/dataunit/AccessParentsDataUnit.spec.ts +0 -69
- package/test/dataunit/Actions.spec.ts +0 -74
- package/test/dataunit/Change.spec.ts +0 -66
- package/test/dataunit/FieldManager.spec.ts +0 -286
- package/test/dataunit/FilterSortsLockersAndObservers.spec.ts +0 -339
- package/test/dataunit/InfoManager.spec.ts +0 -254
- package/test/dataunit/LoadDataAndMetadata.spec.ts +0 -269
- package/test/dataunit/RecodsSelection.spec.ts +0 -229
- package/test/dataunit/RecordsManager.spec.ts +0 -323
- package/test/dataunit/SavingData.spec.ts +0 -206
- package/test/dataunit/SelectionInfo.spec.ts +0 -143
- package/test/dataunit/loader/utils/createDataUnitMock.ts +0 -34
- package/test/dataunit/resources/metadata.ts +0 -39
- package/test/dataunit/resources/records.ts +0 -29
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import DataUnit from "../../src/dataunit/DataUnit";
|
|
2
|
-
import { DUActionInterceptor, LoadDataParams } from "../../src/dataunit/interfaces/dataUnit";
|
|
3
|
-
import { PaginationInfo } from "../../src/dataunit/loading/PaginationInfo";
|
|
4
|
-
import { Action, ExecutionContext } from "../../src/dataunit/state/action/DataUnitAction";
|
|
5
|
-
import ErrorException from "../../src/exceptions/ErrorException";
|
|
6
|
-
import { createDataUnitMock } from "./loader/utils/createDataUnitMock";
|
|
7
|
-
import { metadata } from "./resources/metadata";
|
|
8
|
-
import { recordsTest } from "./resources/records";
|
|
9
|
-
|
|
10
|
-
describe('Load data and metadata', () => {
|
|
11
|
-
let dataUnit: DataUnit;
|
|
12
|
-
let dataLoaderMock = jest.fn();
|
|
13
|
-
let metadataLoaderMock = jest.fn();
|
|
14
|
-
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
jest.clearAllMocks();
|
|
17
|
-
window.requestAnimationFrame = (functionCallback: Function) => functionCallback();
|
|
18
|
-
({ dataUnit, dataLoaderMock, metadataLoaderMock } = createDataUnitMock());
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe('gotoPage', () => {
|
|
22
|
-
it('should not call loader when pageSize is not defined', async () => {
|
|
23
|
-
await dataUnit.gotoPage(2);
|
|
24
|
-
expect(dataLoaderMock).not.toHaveBeenCalled();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it('should pass limit size and offset on request when pageSize is bigger than 0', async () => {
|
|
28
|
-
dataUnit.pageSize = 1;
|
|
29
|
-
const dataLoaderMock = jest.fn().mockResolvedValue({ records: recordsTest });
|
|
30
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
31
|
-
await dataUnit.loadData();
|
|
32
|
-
await dataUnit.gotoPage(2);
|
|
33
|
-
expect(dataLoaderMock).toHaveBeenCalledWith(dataUnit, expect.objectContaining({ limit: 1, offset: 0 }));
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should call loadData when have a next page', async () => {
|
|
37
|
-
dataUnit.pageSize = 1;
|
|
38
|
-
const dataLoaderMock = jest.fn().mockResolvedValue({ records: recordsTest });
|
|
39
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
40
|
-
await dataUnit.updatePagination({
|
|
41
|
-
currentPage: 0,
|
|
42
|
-
firstRecord: 0,
|
|
43
|
-
hasMore: true,
|
|
44
|
-
lastRecord: 4,
|
|
45
|
-
total: 5
|
|
46
|
-
});
|
|
47
|
-
const response = await dataUnit.gotoPage(2);
|
|
48
|
-
expect(dataLoaderMock).toHaveBeenCalled();
|
|
49
|
-
expect(response).toStrictEqual({ records: recordsTest });
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('should return undefined when not have any next page', async () => {
|
|
53
|
-
dataUnit.pageSize = 1;
|
|
54
|
-
const dataLoaderMock = jest.fn().mockResolvedValue({ records: recordsTest });
|
|
55
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
56
|
-
await dataUnit.updatePagination({
|
|
57
|
-
currentPage: 5,
|
|
58
|
-
firstRecord: 0,
|
|
59
|
-
hasMore: false,
|
|
60
|
-
lastRecord: 4,
|
|
61
|
-
total: 5
|
|
62
|
-
});
|
|
63
|
-
const response = await dataUnit.gotoPage(6);
|
|
64
|
-
expect(dataLoaderMock).not.toHaveBeenCalled();
|
|
65
|
-
expect(response).toBeUndefined();
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('nextPage', () => {
|
|
70
|
-
it('should call loadData for the next page', async () => {
|
|
71
|
-
const dataUnit = new DataUnit();
|
|
72
|
-
dataUnit.pageSize = 1;
|
|
73
|
-
const dataLoaderMock = jest.fn().mockResolvedValue({ records: recordsTest });
|
|
74
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
75
|
-
await dataUnit.updatePagination({
|
|
76
|
-
currentPage: 0,
|
|
77
|
-
firstRecord: 0,
|
|
78
|
-
hasMore: true,
|
|
79
|
-
lastRecord: 4,
|
|
80
|
-
total: 5
|
|
81
|
-
});
|
|
82
|
-
const response = await dataUnit.nextPage();
|
|
83
|
-
expect(dataLoaderMock).toHaveBeenCalledWith(dataUnit, expect.objectContaining({ offset: 1 }));
|
|
84
|
-
expect(response).toStrictEqual({ records: recordsTest });
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
describe('previousPage', () => {
|
|
89
|
-
it('should call loadData for the previous page', async () => {
|
|
90
|
-
const dataUnit = new DataUnit();
|
|
91
|
-
dataUnit.pageSize = 1;
|
|
92
|
-
const dataLoaderMock = jest.fn().mockResolvedValue({ records: recordsTest });
|
|
93
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
94
|
-
await dataUnit.updatePagination({
|
|
95
|
-
currentPage: 1,
|
|
96
|
-
firstRecord: 0,
|
|
97
|
-
hasMore: true,
|
|
98
|
-
lastRecord: 4,
|
|
99
|
-
total: 5
|
|
100
|
-
});
|
|
101
|
-
const response = await dataUnit.previousPage();
|
|
102
|
-
expect(dataLoaderMock).toHaveBeenCalledWith(dataUnit, expect.objectContaining({ offset: 0 }));
|
|
103
|
-
expect(response).toStrictEqual({ records: recordsTest });
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
describe('dataLoader', () => {
|
|
108
|
-
it('should return records from dataLoader', async () => {
|
|
109
|
-
const result = await dataUnit.loadData();
|
|
110
|
-
expect(result.records).toStrictEqual(recordsTest);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it('should call dataLoader when loadData is invoked', async () => {
|
|
114
|
-
dataLoaderMock.mockResolvedValue({ records: [] });
|
|
115
|
-
dataUnit.dataLoader = dataLoaderMock;
|
|
116
|
-
|
|
117
|
-
const result = await dataUnit.loadData();
|
|
118
|
-
expect(dataLoaderMock).toHaveBeenCalled();
|
|
119
|
-
expect(result).toEqual({ records: [] });
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it('should clear dataUnit when parent record is undefined', async () => {
|
|
123
|
-
dataUnit.selectFirst();
|
|
124
|
-
const childDataUnit = new DataUnit('child', dataUnit);
|
|
125
|
-
|
|
126
|
-
const result = await childDataUnit.loadData();
|
|
127
|
-
|
|
128
|
-
expect(childDataUnit.records).toEqual([]);
|
|
129
|
-
expect(result).toEqual({ records: [] });
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it('should clear dataUnit when parent record is new', async () => {
|
|
133
|
-
dataUnit.addRecord();
|
|
134
|
-
const childDataUnit = new DataUnit('child', dataUnit);
|
|
135
|
-
|
|
136
|
-
const result = await childDataUnit.loadData();
|
|
137
|
-
|
|
138
|
-
expect(childDataUnit.records).toEqual([]);
|
|
139
|
-
expect(result).toEqual({ records: [] });
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('should pass quickFilter on request', async () => {
|
|
143
|
-
const quickFilter = { term: 'test' };
|
|
144
|
-
await dataUnit.loadData(quickFilter);
|
|
145
|
-
expect(dataLoaderMock).toHaveBeenCalledWith(dataUnit, expect.objectContaining({ quickFilter }));
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
it('should pass limit size and offset on request when pageSize is bigger than 0', async () => {
|
|
149
|
-
dataUnit.pageSize = 1;
|
|
150
|
-
await dataUnit.loadData();
|
|
151
|
-
expect(dataLoaderMock).toHaveBeenCalledWith(dataUnit, expect.objectContaining({ limit: 1, offset: 0 }));
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
it('should avoid call dataLoader when request is the same at the last', async () => {
|
|
155
|
-
const paginationInfo: PaginationInfo = {
|
|
156
|
-
currentPage: 0,
|
|
157
|
-
firstRecord: 0,
|
|
158
|
-
hasMore: true,
|
|
159
|
-
lastRecord: 4,
|
|
160
|
-
};
|
|
161
|
-
jest.spyOn(dataUnit, 'getPaginationInfo').mockReturnValue(paginationInfo);
|
|
162
|
-
const response1 = await dataUnit.loadData(undefined, undefined, true, undefined, true);
|
|
163
|
-
const response2 = await dataUnit.loadData(undefined, undefined, true, undefined, true);
|
|
164
|
-
const selectedRecord = dataUnit.getSelectedRecord();
|
|
165
|
-
expect(selectedRecord).toStrictEqual(recordsTest[0]);
|
|
166
|
-
expect(dataLoaderMock).toHaveBeenCalledTimes(1);
|
|
167
|
-
expect(response1.records).toStrictEqual(response2.records);
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
it('should select first record when propertie selectFirstRecord is true', async () => {
|
|
171
|
-
await dataUnit.loadData(undefined, undefined, undefined, undefined, true);
|
|
172
|
-
const selectedRecord = dataUnit.getSelectedRecord();
|
|
173
|
-
expect(selectedRecord).toStrictEqual(recordsTest[0]);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it('should handle error dataLoader', async () => {
|
|
177
|
-
dataLoaderMock.mockRejectedValue(new Error("Error test"));
|
|
178
|
-
const loadData = async () => await dataUnit.loadData();
|
|
179
|
-
await expect(loadData()).rejects.toBeInstanceOf(ErrorException);
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
|
|
183
|
-
describe('loadDataWithParams', () => {
|
|
184
|
-
it('should pass params to loadData correctly', async () => {
|
|
185
|
-
const loadDataMock = jest.spyOn(dataUnit, 'loadData');
|
|
186
|
-
const executionCtx: ExecutionContext = {
|
|
187
|
-
before: jest.fn((value) => value),
|
|
188
|
-
after: jest.fn((value) => value),
|
|
189
|
-
}
|
|
190
|
-
const params: LoadDataParams = {
|
|
191
|
-
checkLastFilter: true,
|
|
192
|
-
executionCtx,
|
|
193
|
-
keepSelection: true,
|
|
194
|
-
quickFilter: { term: 'test' },
|
|
195
|
-
selectFirstRecord: true,
|
|
196
|
-
source: 'test'
|
|
197
|
-
}
|
|
198
|
-
dataUnit.loadDataWithParams(params);
|
|
199
|
-
expect(loadDataMock).toHaveBeenCalledWith(
|
|
200
|
-
params.quickFilter,
|
|
201
|
-
params.executionCtx,
|
|
202
|
-
params.checkLastFilter,
|
|
203
|
-
params.source,
|
|
204
|
-
params.selectFirstRecord,
|
|
205
|
-
params.keepSelection
|
|
206
|
-
);
|
|
207
|
-
});
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
describe('loadMetadata', () => {
|
|
211
|
-
it('should return metadata', async () => {
|
|
212
|
-
const response = await dataUnit.loadMetadata();
|
|
213
|
-
expect(response).toStrictEqual(metadata);
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
it('should handle error metadataLoader', async () => {
|
|
217
|
-
metadataLoaderMock.mockRejectedValue(new Error("Error test"));
|
|
218
|
-
const loadMetadata = async () => await dataUnit.loadMetadata();
|
|
219
|
-
await expect(loadMetadata()).rejects.toBeInstanceOf(ErrorException);
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
it('should call executionCtx methods', async () => {
|
|
223
|
-
const executionCtx: ExecutionContext = {
|
|
224
|
-
before: jest.fn((value) => value),
|
|
225
|
-
after: jest.fn((value) => value),
|
|
226
|
-
}
|
|
227
|
-
await dataUnit.loadMetadata(executionCtx);
|
|
228
|
-
expect(executionCtx.before).toHaveBeenCalled();
|
|
229
|
-
expect(executionCtx.after).toHaveBeenCalled();
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it('should call interceptors', async () => {
|
|
233
|
-
const loadingMetadata = jest.fn();
|
|
234
|
-
const metadataLoaded = jest.fn();
|
|
235
|
-
const interceptor: DUActionInterceptor = {
|
|
236
|
-
interceptAction: (action) => {
|
|
237
|
-
switch (action.type) {
|
|
238
|
-
case Action.LOADING_METADATA:
|
|
239
|
-
loadingMetadata(action.payload);
|
|
240
|
-
break;
|
|
241
|
-
case Action.METADATA_LOADED:
|
|
242
|
-
metadataLoaded(action.payload);
|
|
243
|
-
break;
|
|
244
|
-
}
|
|
245
|
-
return action;
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
dataUnit.addInterceptor(interceptor);
|
|
249
|
-
const promiseLoadMetadata = dataUnit.loadMetadata();
|
|
250
|
-
|
|
251
|
-
expect(loadingMetadata).toHaveBeenCalled();
|
|
252
|
-
expect(metadataLoaded).not.toHaveBeenCalled();
|
|
253
|
-
await promiseLoadMetadata;
|
|
254
|
-
|
|
255
|
-
expect(metadataLoaded).toHaveBeenCalledWith(metadata);
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
it('should interrupt by executionCtx', async () => {
|
|
259
|
-
const executionCtx: ExecutionContext = {
|
|
260
|
-
before: jest.fn(),
|
|
261
|
-
after: jest.fn(),
|
|
262
|
-
}
|
|
263
|
-
await dataUnit.loadMetadata(executionCtx);
|
|
264
|
-
expect(executionCtx.before).toHaveBeenCalled();
|
|
265
|
-
expect(executionCtx.after).not.toHaveBeenCalled();
|
|
266
|
-
expect(dataUnit.metadataLoader).not.toHaveBeenCalled();
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
});
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
import DataUnit from "../../src/dataunit/DataUnit";
|
|
2
|
-
import { DataType } from "../../src/dataunit/metadata/DataType";
|
|
3
|
-
import { Sort, SortingProvider, SortMode } from "../../src/dataunit/metadata/UnitMetadata";
|
|
4
|
-
import { ExecutionContext } from "../../src/dataunit/state/action/DataUnitAction";
|
|
5
|
-
import { createDataUnitMock } from "./loader/utils/createDataUnitMock";
|
|
6
|
-
import { recordsTest } from "./resources/records";
|
|
7
|
-
|
|
8
|
-
describe('Records selection', () => {
|
|
9
|
-
let dataUnit: DataUnit;
|
|
10
|
-
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
jest.clearAllMocks();
|
|
13
|
-
window.requestAnimationFrame = (functionCallback: Function) => functionCallback();
|
|
14
|
-
({ dataUnit } = createDataUnitMock());
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
describe('getSelectionInfo', () => {
|
|
18
|
-
it('should return selection records', async () => {
|
|
19
|
-
await dataUnit.loadData();
|
|
20
|
-
dataUnit.selectFirst();
|
|
21
|
-
const response = dataUnit.getSelectionInfo();
|
|
22
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [recordsTest[0]] }));
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it('should get all records', async () => {
|
|
26
|
-
await dataUnit.loadData();
|
|
27
|
-
const allRecodsLoader = jest.fn().mockReturnValue(recordsTest);
|
|
28
|
-
dataUnit.allRecordsLoader = allRecodsLoader;
|
|
29
|
-
dataUnit.selectFirst();
|
|
30
|
-
const response = dataUnit.getSelectionInfo();
|
|
31
|
-
const allRecords = response.getAllRecords?.();
|
|
32
|
-
expect(allRecodsLoader).toHaveBeenCalledWith(dataUnit);
|
|
33
|
-
expect(allRecords).toStrictEqual(recordsTest);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should return empty array when loader return invalid value', async () => {
|
|
37
|
-
await dataUnit.loadData();
|
|
38
|
-
const allRecodsLoader = jest.fn();
|
|
39
|
-
dataUnit.allRecordsLoader = allRecodsLoader;
|
|
40
|
-
dataUnit.selectFirst();
|
|
41
|
-
const response = dataUnit.getSelectionInfo();
|
|
42
|
-
const allRecords = response.getAllRecords?.();
|
|
43
|
-
expect(allRecodsLoader).toHaveBeenCalledWith(dataUnit);
|
|
44
|
-
expect(allRecords).toStrictEqual([]);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('should return empty array when not has a loader', async () => {
|
|
48
|
-
await dataUnit.loadData();
|
|
49
|
-
dataUnit.allRecordsLoader = undefined;
|
|
50
|
-
dataUnit.selectFirst();
|
|
51
|
-
const response = dataUnit.getSelectionInfo();
|
|
52
|
-
const allRecords = response.getAllRecords?.();
|
|
53
|
-
expect(allRecords).toStrictEqual([]);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it('should return sortable records', async () => {
|
|
57
|
-
const sortingProvider: SortingProvider = {
|
|
58
|
-
getSort: () => {
|
|
59
|
-
const sort: Sort = {
|
|
60
|
-
field: 'column_name_1',
|
|
61
|
-
dataType: DataType.TEXT,
|
|
62
|
-
mode: SortMode.DESC,
|
|
63
|
-
};
|
|
64
|
-
return [sort];
|
|
65
|
-
},
|
|
66
|
-
}
|
|
67
|
-
dataUnit.sortingProvider = sortingProvider;
|
|
68
|
-
await dataUnit.loadMetadata();
|
|
69
|
-
await dataUnit.loadData();
|
|
70
|
-
const allRecodsLoader = jest.fn().mockReturnValue(recordsTest);
|
|
71
|
-
dataUnit.allRecordsLoader = allRecodsLoader;
|
|
72
|
-
dataUnit.selectFirst();
|
|
73
|
-
const response = dataUnit.getSelectionInfo();
|
|
74
|
-
const allRecords = response.getAllRecords?.();
|
|
75
|
-
expect(allRecodsLoader).toHaveBeenCalledWith(dataUnit);
|
|
76
|
-
expect(allRecords).toStrictEqual(recordsTest);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
describe('selectAllRecords', () => {
|
|
81
|
-
it('should select all records', async () => {
|
|
82
|
-
await dataUnit.loadData();
|
|
83
|
-
await dataUnit.selectAllRecords();
|
|
84
|
-
const response = dataUnit.getSelectionInfo();
|
|
85
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: recordsTest }));
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
describe('unSelectAllRecords', () => {
|
|
90
|
-
it('should remove all records selection', async () => {
|
|
91
|
-
await dataUnit.loadData();
|
|
92
|
-
await dataUnit.selectAllRecords();
|
|
93
|
-
await dataUnit.unSelectAllRecords();
|
|
94
|
-
const response = dataUnit.getSelectionInfo();
|
|
95
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [] }));
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
describe('clearSelection', () => {
|
|
100
|
-
it('should remove all records selection', async () => {
|
|
101
|
-
await dataUnit.loadData();
|
|
102
|
-
dataUnit.selectFirst();
|
|
103
|
-
dataUnit.clearSelection();
|
|
104
|
-
const response = dataUnit.getSelectionInfo();
|
|
105
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [] }));
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
describe('updatePageSelection', () => {
|
|
110
|
-
it('should set records selection', async () => {
|
|
111
|
-
await dataUnit.loadData();
|
|
112
|
-
dataUnit.selectFirst();
|
|
113
|
-
const response = await dataUnit.updatePageSelection([recordsTest[4].__record__id__]);
|
|
114
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [recordsTest[4]] }));
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
it('should remove all records selection', async () => {
|
|
118
|
-
await dataUnit.loadData();
|
|
119
|
-
dataUnit.selectFirst();
|
|
120
|
-
const response = await dataUnit.updatePageSelection([]);
|
|
121
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [] }));
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
it('should remove all records selection', async () => {
|
|
125
|
-
await dataUnit.loadData();
|
|
126
|
-
dataUnit.selectFirst();
|
|
127
|
-
const response = await dataUnit.updatePageSelection();
|
|
128
|
-
expect(response).toStrictEqual(expect.objectContaining({ records: [recordsTest[0]] }));
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
describe('hasNext', () => {
|
|
133
|
-
it('should return true when has a next record', async () => {
|
|
134
|
-
await dataUnit.loadData();
|
|
135
|
-
dataUnit.selectFirst();
|
|
136
|
-
const response = dataUnit.hasNext();
|
|
137
|
-
expect(response).toBeTruthy();
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it('should return false when not has a next record', async () => {
|
|
141
|
-
await dataUnit.loadData();
|
|
142
|
-
dataUnit.selectLast();
|
|
143
|
-
const response = dataUnit.hasNext();
|
|
144
|
-
expect(response).toBeFalsy();
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
describe('hasPrevious', () => {
|
|
149
|
-
it('should return true when has a prevous record', async () => {
|
|
150
|
-
await dataUnit.loadData();
|
|
151
|
-
dataUnit.selectFirst();
|
|
152
|
-
const response = dataUnit.hasPrevious();
|
|
153
|
-
expect(response).toBeFalsy();
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it('should return false when not has a prevous record', async () => {
|
|
157
|
-
await dataUnit.loadData();
|
|
158
|
-
dataUnit.selectLast();
|
|
159
|
-
const response = dataUnit.hasPrevious();
|
|
160
|
-
expect(response).toBeTruthy();
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
describe('nextRecord', () => {
|
|
165
|
-
it('should change selection to second record when has a next in the same page', async () => {
|
|
166
|
-
await dataUnit.loadData();
|
|
167
|
-
dataUnit.selectFirst();
|
|
168
|
-
await dataUnit.nextRecord();
|
|
169
|
-
const response = dataUnit.getSelectionInfo();
|
|
170
|
-
expect(response.records).toStrictEqual([recordsTest[1]]);
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('should change selection to second record when not has a next in the same page', async () => {
|
|
174
|
-
dataUnit.pageSize = 2;
|
|
175
|
-
await dataUnit.loadData();
|
|
176
|
-
dataUnit.selectLast();
|
|
177
|
-
await dataUnit.nextRecord();
|
|
178
|
-
const response = dataUnit.getSelectionInfo();
|
|
179
|
-
expect(response.records).toStrictEqual([recordsTest[2]]);
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
it('should call executionCtx', async () => {
|
|
183
|
-
dataUnit.pageSize = 2;
|
|
184
|
-
await dataUnit.loadData();
|
|
185
|
-
dataUnit.selectLast();
|
|
186
|
-
const executionCtx: ExecutionContext = {
|
|
187
|
-
before: jest.fn((value) => value),
|
|
188
|
-
}
|
|
189
|
-
await dataUnit.nextRecord(executionCtx);
|
|
190
|
-
const response = dataUnit.getSelectionInfo();
|
|
191
|
-
expect(response.records).toStrictEqual([recordsTest[2]]);
|
|
192
|
-
expect(executionCtx.before).toHaveBeenCalled();
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
describe('previousRecord', () => {
|
|
197
|
-
it('should change selection to first record when has a previous in the same page', async () => {
|
|
198
|
-
await dataUnit.loadData();
|
|
199
|
-
dataUnit.selectLast();
|
|
200
|
-
await dataUnit.previousRecord();
|
|
201
|
-
const response = dataUnit.getSelectionInfo();
|
|
202
|
-
expect(response.records).toStrictEqual([recordsTest[3]]);
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it('should change selection to first record when not has a previous in the same page', async () => {
|
|
206
|
-
dataUnit.pageSize = 2;
|
|
207
|
-
await dataUnit.loadData();
|
|
208
|
-
await dataUnit.gotoPage(1);
|
|
209
|
-
dataUnit.selectFirst();
|
|
210
|
-
await dataUnit.previousRecord();
|
|
211
|
-
const response = dataUnit.getSelectionInfo();
|
|
212
|
-
expect(response.records).toStrictEqual([recordsTest[1]]);
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
it('should call executionCtx', async () => {
|
|
216
|
-
dataUnit.pageSize = 2;
|
|
217
|
-
await dataUnit.loadData();
|
|
218
|
-
await dataUnit.gotoPage(1);
|
|
219
|
-
dataUnit.selectFirst();
|
|
220
|
-
const executionCtx: ExecutionContext = {
|
|
221
|
-
before: jest.fn((value) => value),
|
|
222
|
-
}
|
|
223
|
-
await dataUnit.previousRecord(executionCtx);
|
|
224
|
-
const response = dataUnit.getSelectionInfo();
|
|
225
|
-
expect(response.records).toStrictEqual([recordsTest[1]]);
|
|
226
|
-
expect(executionCtx.before).toHaveBeenCalled();
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
});
|