@zeedhi/teknisa-components-common 3.0.0 → 3.0.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/.package.json +4 -1
- package/dist/teknisa-components-common.js +3722 -32
- package/dist/teknisa-components-common.min.js +3722 -32
- package/dist/types/components/index.d.ts +5 -0
- package/dist/types/components/tek-datasource/index.d.ts +3 -0
- package/dist/types/components/tek-datasource/interfaces.d.ts +16 -0
- package/dist/types/components/tek-datasource/tek-memory-datasource.d.ts +93 -0
- package/dist/types/components/tek-datasource/tek-rest-datasource.d.ts +95 -0
- package/dist/types/components/tek-grid/columns-searcher.d.ts +5 -0
- package/dist/types/components/tek-grid/dynamic-filter-datasource-factory.d.ts +6 -0
- package/dist/types/components/tek-grid/filter-helper.d.ts +7 -0
- package/dist/types/components/tek-grid/grid-filter-button.d.ts +29 -0
- package/dist/types/components/tek-grid/grouped-data-manager.d.ts +82 -0
- package/dist/types/components/tek-grid/grouped-data-selector.d.ts +7 -0
- package/dist/types/components/tek-grid/grouped-view-navigator.d.ts +14 -0
- package/dist/types/components/tek-grid/index.d.ts +18 -0
- package/dist/types/components/tek-grid/interfaces.d.ts +259 -0
- package/dist/types/components/tek-grid/keymap-grouped.d.ts +6 -0
- package/dist/types/components/tek-grid/layout-options.d.ts +39 -0
- package/dist/types/components/tek-grid/tek-grid-column.d.ts +42 -0
- package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.d.ts +8 -0
- package/dist/types/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.d.ts +13 -0
- package/dist/types/components/tek-grid/tek-grid-controller.d.ts +31 -0
- package/dist/types/components/tek-grid/tek-grid-events.d.ts +31 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.d.ts +17 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/index.d.ts +3 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.d.ts +5 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.d.ts +12 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/index.d.ts +2 -0
- package/dist/types/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.d.ts +22 -0
- package/dist/types/components/tek-grid/tek-grid.d.ts +216 -0
- package/dist/types/components/tek-user-info/TekUserInfoController.d.ts +22 -0
- package/dist/types/components/tek-user-info/interfaces.d.ts +27 -0
- package/dist/types/components/tek-user-info/tek-user-info-list.d.ts +32 -0
- package/dist/types/components/tek-user-info/tek-user-info.d.ts +37 -0
- package/dist/types/error/tek-grid-delete-rows-error.d.ts +7 -0
- package/dist/types/error/teknisa-common-error.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/config/config.d.ts +7 -0
- package/dist/types/utils/index.d.ts +3 -0
- package/dist/types/utils/is-filled-object/is-filled-object.d.ts +2 -0
- package/dist/types/utils/is-nil.d.ts +1 -0
- package/package.json +2 -2
- package/src/components/index.ts +5 -12
- package/src/components/tek-datasource/index.ts +3 -0
- package/src/components/tek-datasource/interfaces.ts +36 -0
- package/src/components/tek-datasource/tek-memory-datasource.ts +314 -0
- package/src/components/tek-datasource/tek-rest-datasource.ts +224 -0
- package/src/components/tek-grid/columns-searcher.ts +22 -0
- package/src/components/tek-grid/dynamic-filter-datasource-factory.ts +20 -0
- package/src/components/tek-grid/filter-helper.ts +20 -0
- package/src/components/tek-grid/grid-filter-button.ts +419 -0
- package/src/components/tek-grid/grouped-data-manager.ts +448 -0
- package/src/components/tek-grid/grouped-data-selector.ts +40 -0
- package/src/components/tek-grid/grouped-view-navigator.ts +84 -0
- package/src/components/tek-grid/index.ts +18 -0
- package/src/components/tek-grid/interfaces.ts +329 -0
- package/src/components/tek-grid/keymap-grouped.ts +20 -0
- package/src/components/tek-grid/layout-options.ts +248 -0
- package/src/components/tek-grid/tek-grid-column.ts +193 -0
- package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button-controller.ts +28 -0
- package/src/components/tek-grid/tek-grid-columns-button/tek-grid-columns-button.ts +38 -0
- package/src/components/tek-grid/tek-grid-controller.ts +140 -0
- package/src/components/tek-grid/tek-grid-events.ts +105 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/button-option.ts +26 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/index.ts +3 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/interfaces.ts +6 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/export-options/multi-option.ts +85 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/index.ts +2 -0
- package/src/components/tek-grid/tek-grid-toolbar-provider/tek-grid-toolbar-provider.ts +365 -0
- package/src/components/tek-grid/tek-grid.ts +1118 -0
- package/src/components/tek-user-info/TekUserInfoController.ts +87 -0
- package/src/components/tek-user-info/interfaces.ts +21 -0
- package/src/components/tek-user-info/tek-user-info-list.ts +64 -0
- package/src/components/tek-user-info/tek-user-info.ts +337 -0
- package/src/error/tek-grid-delete-rows-error.ts +15 -0
- package/src/error/teknisa-common-error.ts +8 -0
- package/src/index.ts +1 -0
- package/src/utils/config/config.ts +8 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/is-filled-object/is-filled-object.ts +5 -0
- package/src/utils/is-nil.ts +3 -0
- package/tests/unit/components/tek-grid/button-option.spec.ts +49 -0
- package/tests/unit/components/tek-grid/columns-searcher.spec.ts +112 -0
- package/tests/unit/components/tek-grid/dynamic-filter-datasource-factory.spec.ts +90 -0
- package/tests/unit/components/tek-grid/filter-helper.spec.ts +34 -130
- package/tests/unit/components/tek-grid/grid-filter-button.spec.ts +110 -241
- package/tests/unit/components/tek-grid/grouped-data-manager.spec.ts +593 -0
- package/tests/unit/components/tek-grid/grouped-data-selector.spec.ts +136 -0
- package/tests/unit/components/tek-grid/grouped-view-navigator.spec.ts +244 -0
- package/tests/unit/components/tek-grid/keymap-grouped.spec.ts +20 -0
- package/tests/unit/components/tek-grid/{layout_options.spec.ts → layout-options.spec.ts} +77 -35
- package/tests/unit/components/tek-grid/multi-option.spec.ts +139 -0
- package/tests/unit/components/tek-grid/{grid-column.spec.ts → tek-grid-column.spec.ts} +48 -6
- package/tests/unit/components/tek-grid/{grid-columns-button.spec.ts → tek-grid-columns-button.spec.ts} +42 -9
- package/tests/unit/components/tek-grid/tek-grid-controller.spec.ts +253 -0
- package/tests/unit/components/tek-grid/tek-grid-events.spec.ts +186 -0
- package/tests/unit/components/tek-grid/tek-grid-toolbar-provider.spec.ts +34 -0
- package/tests/unit/components/tek-grid/tek-grid.spec.ts +895 -0
- package/tests/unit/components/tek-grid/tek-memory-datasource.spec.ts +482 -0
- package/tests/unit/components/tek-grid/tek-rest-datasource.spec.ts +422 -0
- package/src/error/delete-rows-error.ts +0 -11
- package/tests/unit/components/tek-grid/grid.spec.ts +0 -2701
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
/* eslint-disable no-underscore-dangle */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
-
Button,
|
|
4
|
+
Button, Form, IButton, IForm, IModal, Modal, ModalService,
|
|
5
5
|
} from '@zeedhi/common';
|
|
6
6
|
import {
|
|
7
|
-
Http, Metadata, DateHelper,
|
|
7
|
+
Http, Metadata, DateHelper,
|
|
8
|
+
Loader,
|
|
9
|
+
SimpleControllerBuilder,
|
|
8
10
|
} from '@zeedhi/core';
|
|
9
11
|
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
TekGrid, type TekGridColumn, TekGridFilterButton, type TekRestDatasource,
|
|
12
|
+
ITekGridFilterButton,
|
|
13
|
+
TekGrid, TekGridFilterButton, TekRestDatasource,
|
|
13
14
|
} from '../../../../src';
|
|
14
|
-
import {
|
|
15
|
+
import { flushPromises, getChild, setClick } from '../../__helpers__';
|
|
15
16
|
|
|
16
17
|
jest.mock('lodash.debounce', () => jest.fn((fn) => fn));
|
|
17
18
|
|
|
18
|
-
jest.useFakeTimers();
|
|
19
|
+
// jest.useFakeTimers();
|
|
19
20
|
|
|
20
21
|
const clickOnFilterButton = (grid: TekGrid, event?: any) => {
|
|
21
22
|
const buttonProps = getChild<ITekGridFilterButton>(grid.toolbarSlot, `${grid.name}_filterButton`);
|
|
@@ -26,6 +27,10 @@ const clickOnFilterButton = (grid: TekGrid, event?: any) => {
|
|
|
26
27
|
};
|
|
27
28
|
|
|
28
29
|
describe('TekGridFilterButton', () => {
|
|
30
|
+
beforeAll(() => {
|
|
31
|
+
Loader.setBuilder(new SimpleControllerBuilder());
|
|
32
|
+
});
|
|
33
|
+
|
|
29
34
|
beforeEach(() => {
|
|
30
35
|
// clear all metadata instances before testing
|
|
31
36
|
const { instances } = Metadata as any;
|
|
@@ -33,7 +38,7 @@ describe('TekGridFilterButton', () => {
|
|
|
33
38
|
Metadata.clearInstance(key, instances[key].componentId);
|
|
34
39
|
});
|
|
35
40
|
|
|
36
|
-
jest.clearAllTimers();
|
|
41
|
+
// jest.clearAllTimers();
|
|
37
42
|
});
|
|
38
43
|
|
|
39
44
|
describe('loadGrid()', () => {
|
|
@@ -92,6 +97,7 @@ describe('TekGridFilterButton', () => {
|
|
|
92
97
|
name: 'grid_filterClick1',
|
|
93
98
|
component: 'TekGrid',
|
|
94
99
|
});
|
|
100
|
+
instance.onCreated();
|
|
95
101
|
|
|
96
102
|
const formInstance = new Form({
|
|
97
103
|
name: 'form',
|
|
@@ -105,11 +111,10 @@ describe('TekGridFilterButton', () => {
|
|
|
105
111
|
const button = clickOnFilterButton(instance);
|
|
106
112
|
button.onCreated();
|
|
107
113
|
|
|
108
|
-
expect(spy).
|
|
114
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
109
115
|
button.click();
|
|
110
|
-
expect(spy).
|
|
116
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
111
117
|
expect(button.isVisible).toBeFalsy();
|
|
112
|
-
(instance as any).gridBase.hideFilterModal();
|
|
113
118
|
|
|
114
119
|
button.onBeforeDestroy();
|
|
115
120
|
|
|
@@ -153,7 +158,7 @@ describe('TekGridFilterButton', () => {
|
|
|
153
158
|
clickOnFilterButton(instance, { defaultPrevented: true });
|
|
154
159
|
|
|
155
160
|
expect(filterClickCalled).toBeTruthy();
|
|
156
|
-
expect(spy).not.
|
|
161
|
+
expect(spy).not.toHaveBeenCalled();
|
|
157
162
|
|
|
158
163
|
spy.mockReset();
|
|
159
164
|
});
|
|
@@ -280,60 +285,6 @@ describe('TekGridFilterButton', () => {
|
|
|
280
285
|
spy.mockReset();
|
|
281
286
|
});
|
|
282
287
|
|
|
283
|
-
it('when creating a SelectMultiple filter, should change the filter value depending on checkboxAll', () => {
|
|
284
|
-
const instance = new TekGrid({
|
|
285
|
-
name: 'grid_filterClick5',
|
|
286
|
-
component: 'TekGrid',
|
|
287
|
-
columns: [
|
|
288
|
-
{
|
|
289
|
-
name: 'id',
|
|
290
|
-
filterable: true,
|
|
291
|
-
filterProps: [{
|
|
292
|
-
name: 'id_edit', label: 'id', component: 'ZdSelectMultiple', showCheckboxAll: false,
|
|
293
|
-
}],
|
|
294
|
-
},
|
|
295
|
-
],
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
let form: IForm = { name: 'form', component: 'ZdForm' };
|
|
299
|
-
let select: ISelectMultiple = { name: 'select', component: 'ZdSelectMultiple' };
|
|
300
|
-
let applyButton: IButton = { name: 'apply', component: 'ZdButton' };
|
|
301
|
-
const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
|
|
302
|
-
const modalFooter = getChild(modal.children || [], `${instance.name}-filter-footer`);
|
|
303
|
-
form = getChild(modal.children || [], `${instance.name}-filter-form`);
|
|
304
|
-
select = getChild(form.children || [], `${instance.name}-filter-AND-CONTAINS-id-0`);
|
|
305
|
-
applyButton = getChild(modalFooter.rightSlot, `${instance.name}-filter-okButton`);
|
|
306
|
-
|
|
307
|
-
return new Modal(modal);
|
|
308
|
-
});
|
|
309
|
-
instance.onCreated();
|
|
310
|
-
clickOnFilterButton(instance);
|
|
311
|
-
const applyButtonObject = new Button(applyButton);
|
|
312
|
-
|
|
313
|
-
const formObject = new Form(form);
|
|
314
|
-
const selectObject = new SelectMultiple(select);
|
|
315
|
-
jest.spyOn(Metadata, 'getInstance').mockReturnValue(formObject);
|
|
316
|
-
jest.spyOn(formObject, 'getChildInstance').mockReturnValue(selectObject);
|
|
317
|
-
|
|
318
|
-
formObject.value['grid_filterClick5-filter-AND-CONTAINS-id-0'] = ['example'];
|
|
319
|
-
setClick(applyButtonObject);
|
|
320
|
-
|
|
321
|
-
expect(instance.datasource.filter).toEqual({
|
|
322
|
-
id: ['example'],
|
|
323
|
-
});
|
|
324
|
-
|
|
325
|
-
selectObject.checkboxAll = true;
|
|
326
|
-
setClick(applyButtonObject);
|
|
327
|
-
|
|
328
|
-
expect(instance.datasource.filter).toEqual({});
|
|
329
|
-
|
|
330
|
-
(Config as any).set({ selectAllCompatibilityMode: true });
|
|
331
|
-
setClick(applyButtonObject);
|
|
332
|
-
expect(instance.datasource.filter).toEqual({ id: 'T' });
|
|
333
|
-
|
|
334
|
-
spy.mockReset();
|
|
335
|
-
});
|
|
336
|
-
|
|
337
288
|
it('should create modal with filterable and ordered form elements', () => {
|
|
338
289
|
const instance = new TekGrid({
|
|
339
290
|
name: 'grid-filter-order',
|
|
@@ -484,171 +435,6 @@ describe('TekGridFilterButton', () => {
|
|
|
484
435
|
dateHelperSpy.mockReset();
|
|
485
436
|
});
|
|
486
437
|
|
|
487
|
-
it('should apply helper value', () => {
|
|
488
|
-
const instance = new TekGrid({
|
|
489
|
-
name: 'grid_filterClick8',
|
|
490
|
-
component: 'TekGrid',
|
|
491
|
-
datasource: {
|
|
492
|
-
type: 'tek-rest',
|
|
493
|
-
lazyLoad: true,
|
|
494
|
-
},
|
|
495
|
-
columns: [
|
|
496
|
-
{
|
|
497
|
-
name: 'date1',
|
|
498
|
-
componentProps: { name: 'date_edit1', component: 'ZdDate' },
|
|
499
|
-
filterProps: {
|
|
500
|
-
name: 'date_edit1',
|
|
501
|
-
label: 'date1',
|
|
502
|
-
operation: 'NOT_EQUALS',
|
|
503
|
-
relation: 'OR',
|
|
504
|
-
helperOptions: [
|
|
505
|
-
'TODAY',
|
|
506
|
-
'TOMORROW',
|
|
507
|
-
],
|
|
508
|
-
},
|
|
509
|
-
},
|
|
510
|
-
{
|
|
511
|
-
name: 'date2',
|
|
512
|
-
componentProps: { name: 'date_edit2', component: 'ZdDate' },
|
|
513
|
-
filterProps: [
|
|
514
|
-
{
|
|
515
|
-
name: 'date_edit21',
|
|
516
|
-
label: 'date21',
|
|
517
|
-
operation: 'NOT_EQUALS',
|
|
518
|
-
relation: 'OR',
|
|
519
|
-
helperOptions: [
|
|
520
|
-
'TODAY',
|
|
521
|
-
'TOMORROW',
|
|
522
|
-
],
|
|
523
|
-
},
|
|
524
|
-
{
|
|
525
|
-
name: 'date_edit22',
|
|
526
|
-
label: 'date22',
|
|
527
|
-
helperOptions: [
|
|
528
|
-
'TODAY',
|
|
529
|
-
'TOMORROW',
|
|
530
|
-
],
|
|
531
|
-
},
|
|
532
|
-
],
|
|
533
|
-
},
|
|
534
|
-
],
|
|
535
|
-
});
|
|
536
|
-
|
|
537
|
-
let formElements: any = [];
|
|
538
|
-
let form: IForm;
|
|
539
|
-
const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
|
|
540
|
-
form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
|
|
541
|
-
formElements = form.children;
|
|
542
|
-
|
|
543
|
-
return new Modal(modal);
|
|
544
|
-
});
|
|
545
|
-
instance.onCreated();
|
|
546
|
-
clickOnFilterButton(instance);
|
|
547
|
-
|
|
548
|
-
const dateComp = new Date(formElements[0]);
|
|
549
|
-
dateComp.helperValue = 'TODAY';
|
|
550
|
-
dateComp.change({} as Event, {} as HTMLElement);
|
|
551
|
-
expect((instance.columns[0].filterProps as IFilterPropsComponent).helperValue).toBe('TODAY');
|
|
552
|
-
|
|
553
|
-
const dateComp21 = new Date(formElements[1]);
|
|
554
|
-
dateComp21.helperValue = 'TODAY';
|
|
555
|
-
dateComp21.change({} as Event, {} as HTMLElement);
|
|
556
|
-
expect((instance.columns[1].filterProps as IFilterPropsComponent[])[0].helperValue).toBe('TODAY');
|
|
557
|
-
|
|
558
|
-
const dateComp22 = new Date(formElements[2]);
|
|
559
|
-
dateComp22.helperValue = 'TODAY';
|
|
560
|
-
dateComp22.change({} as Event, {} as HTMLElement);
|
|
561
|
-
expect((instance.columns[1].filterProps as IFilterPropsComponent[])[1].helperValue).toBe('TODAY');
|
|
562
|
-
|
|
563
|
-
spy.mockReset();
|
|
564
|
-
});
|
|
565
|
-
|
|
566
|
-
it('should load form values from tekdatasource', () => {
|
|
567
|
-
const instance = new TekGrid({
|
|
568
|
-
name: 'grid_filterClick9',
|
|
569
|
-
component: 'TekGrid',
|
|
570
|
-
datasource: {
|
|
571
|
-
type: 'tek-rest',
|
|
572
|
-
lazyLoad: true,
|
|
573
|
-
dynamicFilter: {
|
|
574
|
-
name: [
|
|
575
|
-
{
|
|
576
|
-
operation: 'NOT_EQUALS',
|
|
577
|
-
relation: 'OR',
|
|
578
|
-
value: 'teste',
|
|
579
|
-
},
|
|
580
|
-
],
|
|
581
|
-
phone: [
|
|
582
|
-
{
|
|
583
|
-
value: '9',
|
|
584
|
-
},
|
|
585
|
-
],
|
|
586
|
-
date: [
|
|
587
|
-
{
|
|
588
|
-
operation: 'IN',
|
|
589
|
-
relation: 'OR',
|
|
590
|
-
value: ['2021-11-12', '2021-12-12'],
|
|
591
|
-
},
|
|
592
|
-
],
|
|
593
|
-
},
|
|
594
|
-
},
|
|
595
|
-
columns: [
|
|
596
|
-
{
|
|
597
|
-
name: 'id',
|
|
598
|
-
filterProps: [{ name: 'id_edit' }],
|
|
599
|
-
},
|
|
600
|
-
{
|
|
601
|
-
name: 'name',
|
|
602
|
-
componentProps: { name: 'name_edit', component: 'ZdSelect' },
|
|
603
|
-
filterProps: {
|
|
604
|
-
name: 'name_edit', label: 'name', operation: 'NOT_EQUALS', relation: 'OR',
|
|
605
|
-
},
|
|
606
|
-
},
|
|
607
|
-
{
|
|
608
|
-
name: 'phone',
|
|
609
|
-
filterProps: [{ name: 'phone_edit' }],
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
name: 'date',
|
|
613
|
-
filterProps: { name: 'date_edit', helperValue: 'TODAY' },
|
|
614
|
-
},
|
|
615
|
-
],
|
|
616
|
-
});
|
|
617
|
-
|
|
618
|
-
let form: IForm = { name: 'form', component: 'ZdForm' };
|
|
619
|
-
const dateHelperSpy = jest.spyOn(DateHelper, 'getLabel').mockImplementation((name: string) => name);
|
|
620
|
-
const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
|
|
621
|
-
form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
|
|
622
|
-
|
|
623
|
-
return new Modal(modal);
|
|
624
|
-
});
|
|
625
|
-
instance.onCreated();
|
|
626
|
-
|
|
627
|
-
clickOnFilterButton(instance);
|
|
628
|
-
|
|
629
|
-
expect(form.name).toBe('grid_filterClick9-filter-form');
|
|
630
|
-
const formObject = new Form(form);
|
|
631
|
-
formObject.value = {
|
|
632
|
-
'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
|
|
633
|
-
'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': null,
|
|
634
|
-
'grid_filterClick9-filter-AND-CONTAINS-phone-0': null,
|
|
635
|
-
'grid_filterClick9-filter-OR-IN-date-0': null,
|
|
636
|
-
};
|
|
637
|
-
const dateObject = new Date({ name: 'date', component: 'ZdDate' });
|
|
638
|
-
const spyMetadata = jest.spyOn(Metadata, 'getInstances').mockImplementation(() => [dateObject]);
|
|
639
|
-
formObject.onMounted({} as HTMLElement);
|
|
640
|
-
expect(formObject.value).toEqual({
|
|
641
|
-
'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
|
|
642
|
-
'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': 'teste',
|
|
643
|
-
'grid_filterClick9-filter-AND-CONTAINS-phone-0': '9',
|
|
644
|
-
'grid_filterClick9-filter-OR-IN-date-0': ['2021-11-12', '2021-12-12'],
|
|
645
|
-
});
|
|
646
|
-
expect(dateObject.hint).toBe('TODAY');
|
|
647
|
-
spyMetadata.mockReset();
|
|
648
|
-
dateHelperSpy.mockReset();
|
|
649
|
-
spy.mockReset();
|
|
650
|
-
});
|
|
651
|
-
|
|
652
438
|
it('should load form values from datasource', () => {
|
|
653
439
|
const instance = new TekGrid({
|
|
654
440
|
name: 'grid_filterClick10',
|
|
@@ -692,7 +478,7 @@ describe('TekGridFilterButton', () => {
|
|
|
692
478
|
spy.mockReset();
|
|
693
479
|
});
|
|
694
480
|
|
|
695
|
-
it('should apply filter from form to tekdatasource', () => {
|
|
481
|
+
it('should apply filter from form to tekdatasource', async () => {
|
|
696
482
|
const httpSpy = jest.spyOn(Http, 'get').mockImplementation(() => Promise.resolve({
|
|
697
483
|
data: {
|
|
698
484
|
data: [
|
|
@@ -758,6 +544,8 @@ describe('TekGridFilterButton', () => {
|
|
|
758
544
|
const button = new TekGridFilterButton(buttonProps);
|
|
759
545
|
setClick(button);
|
|
760
546
|
|
|
547
|
+
await flushPromises();
|
|
548
|
+
|
|
761
549
|
const formObject = new Form(form);
|
|
762
550
|
const spyMetadata = jest.spyOn(Metadata, 'getInstance').mockImplementation(() => formObject);
|
|
763
551
|
const spyDatasourceGet = jest.spyOn(instance.datasource, 'get');
|
|
@@ -769,12 +557,23 @@ describe('TekGridFilterButton', () => {
|
|
|
769
557
|
'grid_filterClick11-filter-AND-LESS_THAN_EQUALS-salary-0': '2000',
|
|
770
558
|
};
|
|
771
559
|
const applyButtonObject = new Button(applyButton);
|
|
772
|
-
formObject.validate = () =>
|
|
560
|
+
formObject.validate = () => {
|
|
561
|
+
return new Promise((resolve) => {
|
|
562
|
+
resolve({ valid: false });
|
|
563
|
+
});
|
|
564
|
+
};
|
|
773
565
|
setClick(applyButtonObject);
|
|
774
566
|
expect((instance.datasource as TekRestDatasource).dynamicFilter).toEqual({});
|
|
775
567
|
|
|
776
|
-
formObject.validate = () =>
|
|
568
|
+
formObject.validate = () => {
|
|
569
|
+
return new Promise((resolve) => {
|
|
570
|
+
resolve({ valid: true });
|
|
571
|
+
});
|
|
572
|
+
};
|
|
777
573
|
setClick(applyButtonObject);
|
|
574
|
+
|
|
575
|
+
await flushPromises();
|
|
576
|
+
|
|
778
577
|
expect((instance.datasource as TekRestDatasource).dynamicFilter).toEqual({
|
|
779
578
|
id: [
|
|
780
579
|
{
|
|
@@ -803,8 +602,8 @@ describe('TekGridFilterButton', () => {
|
|
|
803
602
|
},
|
|
804
603
|
],
|
|
805
604
|
});
|
|
806
|
-
expect(instance.
|
|
807
|
-
expect(spyDatasourceGet).
|
|
605
|
+
expect(instance.columnHasFilter('name')).toBeTruthy();
|
|
606
|
+
expect(spyDatasourceGet).toHaveBeenCalled();
|
|
808
607
|
spyMetadata.mockReset();
|
|
809
608
|
spyDatasourceGet.mockReset();
|
|
810
609
|
spyModalService.mockReset();
|
|
@@ -902,7 +701,7 @@ describe('TekGridFilterButton', () => {
|
|
|
902
701
|
httpSpy.mockReset();
|
|
903
702
|
});
|
|
904
703
|
|
|
905
|
-
it('should apply filter from form to datasource', () => {
|
|
704
|
+
it('should apply filter from form to datasource', async () => {
|
|
906
705
|
let beforeApplyFilterCalled = false;
|
|
907
706
|
let changeLayoutCalled = false;
|
|
908
707
|
const instance = new TekGrid({
|
|
@@ -928,6 +727,8 @@ describe('TekGridFilterButton', () => {
|
|
|
928
727
|
},
|
|
929
728
|
});
|
|
930
729
|
|
|
730
|
+
instance.onCreated();
|
|
731
|
+
|
|
931
732
|
let form: IForm = { name: 'form', component: 'ZdForm' };
|
|
932
733
|
let applyButton: IButton = { name: 'apply', component: 'ZdButton' };
|
|
933
734
|
const spyModalService = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
|
|
@@ -939,8 +740,6 @@ describe('TekGridFilterButton', () => {
|
|
|
939
740
|
return new Modal(modal);
|
|
940
741
|
});
|
|
941
742
|
|
|
942
|
-
instance.onCreated();
|
|
943
|
-
|
|
944
743
|
clickOnFilterButton(instance);
|
|
945
744
|
|
|
946
745
|
const formObject = new Form(form);
|
|
@@ -954,6 +753,9 @@ describe('TekGridFilterButton', () => {
|
|
|
954
753
|
};
|
|
955
754
|
const applyButtonObject = new Button(applyButton);
|
|
956
755
|
setClick(applyButtonObject);
|
|
756
|
+
|
|
757
|
+
await flushPromises();
|
|
758
|
+
|
|
957
759
|
expect(instance.datasource.filter).toEqual({
|
|
958
760
|
id: '1;2;3',
|
|
959
761
|
name: 'teste',
|
|
@@ -961,13 +763,80 @@ describe('TekGridFilterButton', () => {
|
|
|
961
763
|
});
|
|
962
764
|
expect(beforeApplyFilterCalled).toBeTruthy();
|
|
963
765
|
expect(changeLayoutCalled).toBeTruthy();
|
|
964
|
-
expect(instance.
|
|
766
|
+
expect(instance.columnHasFilter('name')).toBeTruthy();
|
|
965
767
|
|
|
966
768
|
setClick(applyButtonObject, { defaultPrevented: true });
|
|
967
|
-
expect(spyDatasourceGet).
|
|
769
|
+
expect(spyDatasourceGet).toHaveBeenCalledTimes(1);
|
|
968
770
|
spyMetadata.mockReset();
|
|
969
771
|
spyDatasourceGet.mockReset();
|
|
970
772
|
spyModalService.mockReset();
|
|
971
773
|
});
|
|
774
|
+
|
|
775
|
+
it('should load form values from tekdatasource', () => {
|
|
776
|
+
const instance = new TekGrid({
|
|
777
|
+
name: 'grid_filterClick9',
|
|
778
|
+
component: 'TekGrid',
|
|
779
|
+
datasource: {
|
|
780
|
+
type: 'tek-rest',
|
|
781
|
+
lazyLoad: true,
|
|
782
|
+
dynamicFilter: {
|
|
783
|
+
name: [
|
|
784
|
+
{
|
|
785
|
+
operation: 'NOT_EQUALS',
|
|
786
|
+
relation: 'OR',
|
|
787
|
+
value: 'teste',
|
|
788
|
+
},
|
|
789
|
+
],
|
|
790
|
+
phone: [
|
|
791
|
+
{
|
|
792
|
+
value: '9',
|
|
793
|
+
},
|
|
794
|
+
],
|
|
795
|
+
},
|
|
796
|
+
},
|
|
797
|
+
columns: [
|
|
798
|
+
{
|
|
799
|
+
name: 'id',
|
|
800
|
+
filterProps: [{ name: 'id_edit' }],
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
name: 'name',
|
|
804
|
+
componentProps: { name: 'name_edit', component: 'ZdSelect' },
|
|
805
|
+
filterProps: {
|
|
806
|
+
name: 'name_edit', label: 'name', operation: 'NOT_EQUALS', relation: 'OR',
|
|
807
|
+
},
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
name: 'phone',
|
|
811
|
+
filterProps: [{ name: 'phone_edit' }],
|
|
812
|
+
},
|
|
813
|
+
],
|
|
814
|
+
});
|
|
815
|
+
|
|
816
|
+
let form: IForm = { name: 'form', component: 'ZdForm' };
|
|
817
|
+
const spy = jest.spyOn(ModalService, 'create').mockImplementation((modal: IModal) => {
|
|
818
|
+
form = getChild<IForm>(modal.children || [], `${instance.name}-filter-form`);
|
|
819
|
+
|
|
820
|
+
return new Modal(modal);
|
|
821
|
+
});
|
|
822
|
+
instance.onCreated();
|
|
823
|
+
|
|
824
|
+
clickOnFilterButton(instance);
|
|
825
|
+
|
|
826
|
+
expect(form.name).toBe('grid_filterClick9-filter-form');
|
|
827
|
+
const formObject = new Form(form);
|
|
828
|
+
formObject.value = {
|
|
829
|
+
'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
|
|
830
|
+
'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': null,
|
|
831
|
+
'grid_filterClick9-filter-AND-CONTAINS-phone-0': null,
|
|
832
|
+
};
|
|
833
|
+
formObject.onMounted({} as HTMLElement);
|
|
834
|
+
expect(formObject.value).toEqual({
|
|
835
|
+
'grid_filterClick9-filter-AND_CONTAINS-id-0': null,
|
|
836
|
+
'grid_filterClick9-filter-OR-NOT_EQUALS-name-0': 'teste',
|
|
837
|
+
'grid_filterClick9-filter-AND-CONTAINS-phone-0': '9',
|
|
838
|
+
});
|
|
839
|
+
spy.mockReset();
|
|
840
|
+
});
|
|
972
841
|
});
|
|
973
842
|
});
|