@sankhyalabs/core 5.20.0-dev.69 → 5.20.0-dev.70

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.
Files changed (37) hide show
  1. package/.docs/classes/ColumnFilterManager.md +145 -0
  2. package/.docs/classes/DataUnitInMemoryLoader.md +303 -0
  3. package/.docs/classes/DataUnitLoaderUtils.md +151 -0
  4. package/.docs/classes/FieldComparator.md +2 -2
  5. package/.docs/enumerations/RECORD_DATE_FORMAT.md +27 -0
  6. package/.docs/globals.md +6 -0
  7. package/.docs/interfaces/DataUnitInMemoryLoaderConfig.md +37 -0
  8. package/.docs/interfaces/PaginationInfoBuilderParams.md +37 -0
  9. package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.d.ts +9 -0
  10. package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.js +6 -0
  11. package/dist/dataunit/loader/DataUnitInMemoryLoaderConfig.js.map +1 -0
  12. package/dist/dataunit/loader/dataUnitInMemoryLoader.d.ts +25 -0
  13. package/dist/dataunit/loader/dataUnitInMemoryLoader.js +131 -0
  14. package/dist/dataunit/loader/dataUnitInMemoryLoader.js.map +1 -0
  15. package/dist/dataunit/loader/utils/dataUnitLoaderUtils.d.ts +20 -0
  16. package/dist/dataunit/loader/utils/dataUnitLoaderUtils.js +62 -0
  17. package/dist/dataunit/loader/utils/dataUnitLoaderUtils.js.map +1 -0
  18. package/dist/dataunit/sorting/FieldComparator.d.ts +2 -2
  19. package/dist/dataunit/sorting/FieldComparator.js +4 -9
  20. package/dist/dataunit/sorting/FieldComparator.js.map +1 -1
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.js +5 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/utils/ColumnFilterManager.d.ts +19 -0
  25. package/dist/utils/ColumnFilterManager.js +73 -0
  26. package/dist/utils/ColumnFilterManager.js.map +1 -0
  27. package/package.json +1 -1
  28. package/reports/test-report.xml +136 -96
  29. package/src/dataunit/loader/DataUnitInMemoryLoaderConfig.ts +10 -0
  30. package/src/dataunit/loader/dataUnitInMemoryLoader.ts +176 -0
  31. package/src/dataunit/loader/utils/dataUnitLoaderUtils.ts +86 -0
  32. package/src/dataunit/sorting/FieldComparator.ts +18 -32
  33. package/src/index.ts +11 -1
  34. package/src/utils/ColumnFilterManager.ts +104 -0
  35. package/test/dataunit/loader/dataUnitInMemoryLoader.spec.ts +221 -0
  36. package/test/dataunit/loader/utils/dataUnitLoaderUtils.spec.ts +158 -0
  37. package/test/util/ColumnFilterManager.spec.ts +133 -0
@@ -0,0 +1,133 @@
1
+ import { ColumnFilterManager, IColumnFilter } from '../../src/utils/ColumnFilterManager.js';
2
+ import { FieldDescriptor, Filter, FilterParam } from '../../src/dataunit/metadata/UnitMetadata.js';
3
+ import DataUnit, { Record } from '../../src/dataunit/DataUnit';
4
+
5
+
6
+ describe('ColumnFilterManager', () => {
7
+ beforeEach(() => {
8
+ jest.clearAllMocks();
9
+ });
10
+
11
+
12
+ describe('getColumnFilters', () => {
13
+ it('should return an empty map if filters are undefined or empty', () => {
14
+ expect(ColumnFilterManager.getColumnFilters(undefined as any, 'field')).toEqual(new Map());
15
+ expect(ColumnFilterManager.getColumnFilters([], 'field')).toEqual(new Map());
16
+ });
17
+
18
+ it('should return a map of filters matching the pattern and not the provided fieldName', () => {
19
+ const filters: Filter[] = [
20
+ { name: 'FILTRO_COLUNA_field1', expression: '' },
21
+ { name: 'FILTRO_COLUNA_field2', expression: '' },
22
+ ];
23
+
24
+ const result = ColumnFilterManager.getColumnFilters(filters, 'field1');
25
+
26
+ expect(result.size).toBe(1);
27
+ expect(result.has('FILTRO_COLUNA_field2')).toBe(true);
28
+ expect(result.get('FILTRO_COLUNA_field2')?.columnName).toBe('field2');
29
+ });
30
+ });
31
+
32
+
33
+ describe('getFilterFunction', () => {
34
+ const mockDataUnit = {
35
+ getField: jest.fn(),
36
+ valueFromString: jest.fn()
37
+ } as unknown as DataUnit;
38
+
39
+ mockDataUnit.getField = jest.fn().mockReturnValue({} as FieldDescriptor);
40
+ mockDataUnit.valueFromString = jest.fn().mockReturnValue('test');
41
+
42
+ beforeEach(() => {
43
+ jest.clearAllMocks();
44
+ })
45
+
46
+ it('should return undefined if no filters are provided', () => {
47
+ expect(ColumnFilterManager.getFilterFunction(mockDataUnit, undefined)).toBeUndefined();
48
+ expect(ColumnFilterManager.getFilterFunction(mockDataUnit, [])).toBeUndefined();
49
+ });
50
+
51
+ it('should return a function that evaluates records based on filters', () => {
52
+ const filters: IColumnFilter[] = [
53
+ {
54
+ columnName: 'field1',
55
+ name: 'FILTRO_COLUNA_field1',
56
+ expression: '',
57
+ params: [{value: "mockedPAram"} as FilterParam]
58
+ },
59
+ ];
60
+
61
+
62
+ const filterFunction = ColumnFilterManager.getFilterFunction(mockDataUnit, filters);
63
+ expect(filterFunction).toBeDefined();
64
+
65
+ const record: Record = { field1: 'test' } as unknown as Record;
66
+ expect(filterFunction!(record)).toBe(true);
67
+ });
68
+
69
+ it('should return a function that evaluates records and return false', () => {
70
+ const filters: IColumnFilter[] = [
71
+ {
72
+ columnName: 'field1',
73
+ name: 'FILTRO_COLUNA_field1',
74
+ expression: '',
75
+ },
76
+ ];
77
+
78
+ const filterFunction = ColumnFilterManager.getFilterFunction(mockDataUnit, filters);
79
+ expect(filterFunction).toBeDefined();
80
+
81
+ const record: Record = { field1: 'test' } as unknown as Record;
82
+ expect(filterFunction!(record)).toBe(false);
83
+ });
84
+ });
85
+
86
+
87
+ describe("compileDistinct", () => {
88
+ const mockDataUnit = {
89
+ getField: jest.fn(),
90
+ valueFromString: jest.fn()
91
+ } as unknown as DataUnit;
92
+
93
+ mockDataUnit.getFormattedValue = jest.fn().mockImplementation((_, value) => value);
94
+ mockDataUnit.getFormattedValue = jest.fn().mockImplementation((_, value) => value);
95
+
96
+ const filters: Filter[] = [{ name: "FILTRO_COLUNA_fieldName", expression: '' }];
97
+ mockDataUnit.getLastLoadRequest = jest.fn().mockReturnValue({ filters });
98
+
99
+
100
+ beforeEach(() => {
101
+ jest.clearAllMocks();
102
+ })
103
+
104
+ it("should return an array of distinct field values formatted correctly", () => {
105
+ mockDataUnit.records = [
106
+ { fieldName: "value1" },
107
+ { fieldName: "value2" },
108
+ { fieldName: "value1" },
109
+ ] as unknown as Record[];
110
+
111
+ const distinct = ColumnFilterManager.compileDistinct("fieldName", mockDataUnit);
112
+
113
+ expect(distinct).toEqual([
114
+ { label: "value1", value: "value1", check: true },
115
+ { label: "value2", value: "value2", check: true },
116
+ ]);
117
+ });
118
+
119
+ it("should filter records if a load request is present", () => {
120
+ mockDataUnit.records = [
121
+ { fieldName: "value1" },
122
+ { fieldName: "value2" },
123
+ ] as unknown as Record[];
124
+
125
+ const distinct = ColumnFilterManager.compileDistinct("fieldName", mockDataUnit);
126
+
127
+ expect(distinct).toEqual([
128
+ { label: "value1", value: "value1", check: true },
129
+ { label: "value2", value: "value2", check: true },
130
+ ]);
131
+ });
132
+ });
133
+ });