@entropic-bond/crud-panel 3.9.1 → 3.10.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.
@@ -1,4 +1,4 @@
1
- import { Callback, EntropicComponent, Model, Observable, PropChangeEvent, Unsubscriber } from 'entropic-bond';
1
+ import { Callback, ClassPropNames, EntropicComponent, Model, Observable, PropChangeEvent, Unsubscriber } from 'entropic-bond';
2
2
  import { ProgressController, ProgressEvent } from './progress-controller';
3
3
  type CrudControllerAction = 'saved' | 'deleted' | 'populated';
4
4
  export interface CrudControllerEvent<T extends EntropicComponent> {
@@ -8,14 +8,20 @@ export interface CrudControllerEvent<T extends EntropicComponent> {
8
8
  action?: CrudControllerAction;
9
9
  /** deprecated */ error?: Error;
10
10
  }
11
+ type ValidatorFunction<V> = (value: V) => boolean;
11
12
  export declare abstract class CrudController<T extends EntropicComponent> {
12
13
  static readonly errorMessages: {
13
14
  missedDocument: string;
14
15
  };
15
16
  constructor(document?: T);
16
- abstract allRequiredPropertiesFilled(): boolean;
17
17
  protected abstract createDocument(): T;
18
18
  protected abstract getModel(): Model<T>;
19
+ allRequiredPropertiesFilled(): boolean;
20
+ get nonFilledRequiredProperties(): ClassPropNames<T>[];
21
+ get requiredProperties(): ClassPropNames<T>[];
22
+ addValidator<P extends ClassPropNames<T>>(prop: P, validatorFn: ValidatorFunction<T[P]>): void;
23
+ removeValidator(prop: ClassPropNames<T>): void;
24
+ private validateProp;
19
25
  protected storeDoc(): Promise<void>;
20
26
  protected deleteDoc(): Promise<void>;
21
27
  protected findDocs(limit?: number): Promise<T[]>;
@@ -62,5 +68,6 @@ export declare abstract class CrudController<T extends EntropicComponent> {
62
68
  private _document;
63
69
  private unsubscribeDocument;
64
70
  private _filter;
71
+ private validator;
65
72
  }
66
73
  export {};
@@ -8,8 +8,34 @@ class CrudController {
8
8
  this.progressController = new progress_controller_1.ProgressController();
9
9
  this.onChangeHdl = new entropic_bond_1.Observable();
10
10
  this.onErrorHdl = new entropic_bond_1.Observable();
11
+ this.validator = {};
11
12
  this.setDocument(document || this.createDocument());
12
13
  }
14
+ allRequiredPropertiesFilled() {
15
+ return this.nonFilledRequiredProperties.length <= 0;
16
+ }
17
+ get nonFilledRequiredProperties() {
18
+ return this.requiredProperties.filter(prop => this.validateProp(prop));
19
+ }
20
+ get requiredProperties() {
21
+ if (!this.document)
22
+ throw new Error(CrudController.errorMessages.missedDocument);
23
+ return this.document.getPersistentProperties()
24
+ .filter(prop => prop.required)
25
+ .map(prop => prop.name);
26
+ }
27
+ addValidator(prop, validatorFn) {
28
+ this.validator[prop] = validatorFn;
29
+ }
30
+ removeValidator(prop) {
31
+ delete this.validator[prop];
32
+ }
33
+ validateProp(prop) {
34
+ if (!this.document)
35
+ throw new Error(CrudController.errorMessages.missedDocument);
36
+ const propVal = this.document[prop];
37
+ return this.validator[prop] ? !this.validator[prop](propVal) : !propVal;
38
+ }
13
39
  storeDoc() {
14
40
  if (!this.document)
15
41
  throw new Error(CrudController.errorMessages.missedDocument);
@@ -1 +1 @@
1
- {"version":3,"file":"crud-controller.js","sourceRoot":"","sources":["../src/crud-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud-controller.js","sourceRoot":"","sources":["../src/crud-controller.ts"],"names":[],"mappings":"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"}
package/lib/crud-panel.js CHANGED
@@ -129,7 +129,9 @@ class CrudPanel extends react_1.Component {
129
129
  const { addNewDocumentLabel, singularDocumentInCollectionCaption, documentsInCollectionCaption, noDocumentsFoundLabel } = labels;
130
130
  return (react_1.default.createElement("div", { className: `crud-panel ${docClassName} ${className || ''}` },
131
131
  mode === Mode.normal && layout !== 'formAndItems' && !cardAddButton &&
132
- react_1.default.createElement("button", { onClick: () => this.newDocument() }, addNewDocumentLabel),
132
+ react_1.default.createElement("div", { className: "header" },
133
+ this.props.header || react_1.default.createElement(react_1.default.Fragment, null),
134
+ react_1.default.createElement("button", { onClick: () => this.newDocument() }, addNewDocumentLabel)),
133
135
  (layout === 'formAndItems' || mode === Mode.add || mode === Mode.edit) &&
134
136
  react_1.default.createElement("div", { className: "content-panel" }, this.invokeContentViewChild(labels)),
135
137
  (layout === 'itemsAlways' || layout === 'formAndItems' || mode === Mode.normal) &&
@@ -145,7 +147,8 @@ class CrudPanel extends react_1.Component {
145
147
  react_1.default.createElement("div", { className: "add-label" }, addNewDocumentLabel)),
146
148
  documents?.length
147
149
  ? documents.map((document) => this.invokeDetailViewChild(document))
148
- : react_1.default.createElement("p", null, noDocumentsFoundLabel)))));
150
+ : react_1.default.createElement("p", null, noDocumentsFoundLabel))),
151
+ this.props.footer || react_1.default.createElement(react_1.default.Fragment, null)));
149
152
  }
150
153
  }
151
154
  exports.CrudPanel = CrudPanel;
@@ -1 +1 @@
1
- {"version":3,"file":"crud-panel.js","sourceRoot":"","sources":["../src/crud-panel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud-panel.js","sourceRoot":"","sources":["../src/crud-panel.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entropic-bond/crud-panel",
3
- "version": "3.9.1",
3
+ "version": "3.10.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "branches": [
@@ -46,22 +46,22 @@
46
46
  "devDependencies": {
47
47
  "@semantic-release/changelog": "^6.0.3",
48
48
  "@semantic-release/git": "^10.0.1",
49
- "@testing-library/jest-dom": "^5.16.5",
49
+ "@testing-library/jest-dom": "^6.1.3",
50
50
  "@testing-library/react": "^14.0.0",
51
- "@testing-library/user-event": "^14.4.3",
52
- "@types/jest": "^29.5.2",
53
- "@types/react": "^18.2.14",
54
- "@types/react-dom": "^18.2.6",
51
+ "@testing-library/user-event": "^14.5.1",
52
+ "@types/jest": "^29.5.5",
53
+ "@types/react": "^18.2.22",
54
+ "@types/react-dom": "^18.2.7",
55
55
  "fetch-mock": "^9.11.0",
56
56
  "git-branch-is": "^4.0.0",
57
57
  "husky": "^8.0.3",
58
- "jest": "^29.5.0",
59
- "jest-environment-jsdom": "^29.5.0",
58
+ "jest": "^29.7.0",
59
+ "jest-environment-jsdom": "^29.7.0",
60
60
  "react": "^18.2.0",
61
61
  "react-dom": "^18.2.0",
62
- "semantic-release": "^21.0.5",
63
- "ts-jest": "^29.1.0",
64
- "typescript": "^5.1.5"
62
+ "semantic-release": "^22.0.5",
63
+ "ts-jest": "^29.1.1",
64
+ "typescript": "^5.2.2"
65
65
  },
66
66
  "husky": {
67
67
  "hooks": {
@@ -69,6 +69,6 @@
69
69
  }
70
70
  },
71
71
  "dependencies": {
72
- "entropic-bond": "^1.44.7"
72
+ "entropic-bond": "^1.46.1"
73
73
  }
74
74
  }
@@ -1,14 +0,0 @@
1
- import { EntropicComponent, Model } from 'entropic-bond';
2
- import { CrudController } from './crud-controller';
3
- export declare class Test extends EntropicComponent {
4
- set testProp(value: string | undefined);
5
- get testProp(): string | undefined;
6
- private _testProp;
7
- }
8
- export declare class TestController extends CrudController<Test> {
9
- createDocument(): Test;
10
- protected getModel(): Model<Test>;
11
- allRequiredPropertiesFilled(): boolean;
12
- notifyNewEvent(): void;
13
- callManagedThrow(): void;
14
- }
@@ -1,168 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.TestController = exports.Test = void 0;
10
- const entropic_bond_1 = require("entropic-bond");
11
- const crud_controller_1 = require("./crud-controller");
12
- const mockData = {
13
- Test: {
14
- test1: {
15
- __className: 'Test',
16
- id: 'test1',
17
- testProp: 'Test prop 1'
18
- },
19
- test2: {
20
- __className: 'Test',
21
- id: 'test2',
22
- testProp: 'Test prop 2'
23
- }
24
- }
25
- };
26
- let Test = exports.Test = class Test extends entropic_bond_1.EntropicComponent {
27
- set testProp(value) {
28
- this.changeProp('testProp', value);
29
- }
30
- get testProp() {
31
- return this._testProp;
32
- }
33
- };
34
- __decorate([
35
- entropic_bond_1.persistent
36
- ], Test.prototype, "_testProp", void 0);
37
- exports.Test = Test = __decorate([
38
- (0, entropic_bond_1.registerPersistentClass)('Test')
39
- ], Test);
40
- class TestController extends crud_controller_1.CrudController {
41
- createDocument() {
42
- return new Test();
43
- }
44
- getModel() {
45
- return entropic_bond_1.Store.getModel('Test');
46
- }
47
- allRequiredPropertiesFilled() {
48
- return true;
49
- }
50
- notifyNewEvent() {
51
- this.notifyChange({
52
- newEvent: 'new event fired'
53
- });
54
- }
55
- callManagedThrow() {
56
- this.managedThrow(new Error('test error'));
57
- }
58
- }
59
- exports.TestController = TestController;
60
- describe('Crud Controller', () => {
61
- let controller;
62
- let datasource;
63
- let onProgress;
64
- beforeEach(() => {
65
- datasource = new entropic_bond_1.JsonDataSource(JSON.parse(JSON.stringify(mockData)));
66
- entropic_bond_1.Store.useDataSource(datasource);
67
- controller = new TestController();
68
- onProgress = jest.fn();
69
- controller.onProgress(onProgress);
70
- });
71
- describe('Long operations', () => {
72
- beforeEach(() => {
73
- datasource.simulateDelay(50);
74
- });
75
- it('should notify busy on delete', async () => {
76
- const promise = controller.deleteDocument();
77
- expect(onProgress).toHaveBeenLastCalledWith(expect.objectContaining({ busy: true }));
78
- await promise;
79
- expect(onProgress).toHaveBeenLastCalledWith(expect.objectContaining({ busy: false }));
80
- });
81
- it('should notify busy on store', async () => {
82
- const promise = controller.storeDocument();
83
- expect(onProgress).toHaveBeenLastCalledWith(expect.objectContaining({ busy: true }));
84
- await promise;
85
- expect(onProgress).toHaveBeenLastCalledWith(expect.objectContaining({ busy: false }));
86
- });
87
- });
88
- it('should notify new event', () => {
89
- const spy = jest.fn();
90
- controller.onChange(spy);
91
- controller.notifyNewEvent();
92
- expect(spy).toHaveBeenCalledWith({ newEvent: 'new event fired' });
93
- });
94
- it('should not throw setting an undefined document', () => {
95
- expect(() => {
96
- controller.setDocument(undefined);
97
- }).not.toThrow();
98
- });
99
- it('should notify on filter set', async () => {
100
- const spy = jest.fn();
101
- controller.onChange(spy);
102
- await controller.setFilter(() => true);
103
- expect(spy).toHaveBeenCalledWith({ documentCollection: expect.anything() });
104
- });
105
- it('should return a filtered collection', async () => {
106
- const collection = await controller.documentCollection();
107
- expect(collection.length).toBe(2);
108
- controller.setFilter(doc => doc.id === 'test1');
109
- const filteredCollection = await controller.documentCollection();
110
- expect(filteredCollection.length).toBe(1);
111
- });
112
- describe('Error handling', () => {
113
- beforeEach(() => {
114
- datasource.simulateError({
115
- store: 'store test error',
116
- delete: 'delete test error',
117
- find: 'find test error',
118
- findById: 'findById test error',
119
- });
120
- controller.setDocument(new Test());
121
- });
122
- afterEach(() => datasource.simulateError(undefined));
123
- describe('without observable', () => {
124
- beforeEach(() => controller.setDocument(new Test()));
125
- it('should throw on managedThrow', () => {
126
- expect(() => {
127
- controller.callManagedThrow();
128
- }).toThrow('test error');
129
- });
130
- it('should reject of an error on deleteDocument', async () => {
131
- expect(controller.deleteDocument()).rejects.toThrow('delete test error');
132
- });
133
- it('should reject of an error on storeDocument', async () => {
134
- expect(controller.storeDocument()).rejects.toThrow('store test error');
135
- });
136
- it('should reject of an error on documentCollection', async () => {
137
- expect(controller.documentCollection()).rejects.toThrow('find test error');
138
- });
139
- });
140
- describe('with observable', () => {
141
- it('should notify of an error on managedThrow', () => {
142
- const spy = jest.fn();
143
- controller.onError(spy);
144
- controller.callManagedThrow();
145
- expect(spy).toHaveBeenCalledWith(Error('test error'));
146
- });
147
- it('should notify of an error on deleteDocument', async () => {
148
- const spy = jest.fn();
149
- controller.onError(spy);
150
- await controller.deleteDocument();
151
- expect(spy).toHaveBeenCalledWith(Error('delete test error'));
152
- });
153
- it('should notify of an error on storeDocument', async () => {
154
- const spy = jest.fn();
155
- controller.onError(spy);
156
- await controller.storeDocument();
157
- expect(spy).toHaveBeenCalledWith(Error('store test error'));
158
- });
159
- it('should notify of an error on documentCollection', async () => {
160
- const spy = jest.fn();
161
- controller.onError(spy);
162
- await controller.documentCollection();
163
- expect(spy).toHaveBeenCalledWith(Error('find test error'));
164
- });
165
- });
166
- });
167
- });
168
- //# sourceMappingURL=crud-controller.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-controller.spec.js","sourceRoot":"","sources":["../src/crud-controller.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,262 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const react_1 = __importStar(require("react"));
30
- const react_2 = require("@testing-library/react");
31
- const user_event_1 = __importDefault(require("@testing-library/user-event"));
32
- const entropic_bond_1 = require("entropic-bond");
33
- const crud_panel_1 = require("./crud-panel");
34
- const crud_controller_spec_1 = require("./crud-controller.spec");
35
- const crudLabels = {
36
- addNewDocumentLabel: 'Add new document',
37
- addButtonLabel: 'Add',
38
- updateButtonLabel: 'Update',
39
- documentsInCollectionCaption: 'Existing documents',
40
- singularDocumentInCollectionCaption: 'Existing document',
41
- noDocumentsFoundLabel: 'No documents found',
42
- };
43
- const testViewPlaceholder = 'Test View Placeholder';
44
- const editButtonLabel = 'Edit';
45
- const deleteButtonLabel = 'Delete';
46
- const cancelButtonCaption = 'Cancel';
47
- const viewHeader = 'View header';
48
- const mockData = {
49
- Test: {
50
- test1: {
51
- __className: 'Test',
52
- id: 'test1',
53
- testProp: 'Test prop 1'
54
- },
55
- test2: {
56
- __className: 'Test',
57
- id: 'test2',
58
- testProp: 'Test prop 2'
59
- }
60
- }
61
- };
62
- class TestView extends react_1.Component {
63
- componentDidMount() {
64
- const { controller } = this.props;
65
- controller?.onChange(e => {
66
- if (e.documentProps)
67
- this.setState(e.documentProps);
68
- });
69
- }
70
- render() {
71
- const { controller, onCancel, onSubmit, submitButtonCaption } = this.props;
72
- const { document } = controller;
73
- if (!document)
74
- return react_1.default.createElement(react_1.default.Fragment, null);
75
- return (react_1.default.createElement("div", null,
76
- react_1.default.createElement("h1", null, viewHeader),
77
- react_1.default.createElement("input", { placeholder: testViewPlaceholder, value: document.testProp || '', onChange: e => document.testProp = e.target.value }),
78
- react_1.default.createElement("button", { onClick: () => onSubmit?.(document) }, submitButtonCaption),
79
- react_1.default.createElement("button", { onClick: onCancel }, cancelButtonCaption)));
80
- }
81
- }
82
- class TestCard extends react_1.Component {
83
- render() {
84
- const { document, onDelete, onSelect } = this.props;
85
- if (!document)
86
- return react_1.default.createElement(react_1.default.Fragment, null);
87
- return (react_1.default.createElement("div", null,
88
- react_1.default.createElement("p", null, document?.testProp),
89
- react_1.default.createElement("button", { onClick: () => onSelect?.(document) }, editButtonLabel),
90
- react_1.default.createElement("button", { onClick: () => onDelete?.(document) }, deleteButtonLabel)));
91
- }
92
- }
93
- describe('Crud Panel', () => {
94
- let controller;
95
- let notifySpy;
96
- let renderResult;
97
- let datasource;
98
- beforeEach(async () => {
99
- datasource = new entropic_bond_1.JsonDataSource(JSON.parse(JSON.stringify(mockData)));
100
- entropic_bond_1.Store.useDataSource(datasource);
101
- controller = new crud_controller_spec_1.TestController();
102
- notifySpy = jest.fn();
103
- controller.onChange(notifySpy);
104
- renderResult = (0, react_2.render)(react_1.default.createElement(crud_panel_1.CrudPanel, { controller: controller, labels: crudLabels },
105
- react_1.default.createElement(TestView, null),
106
- react_1.default.createElement(TestCard, null)));
107
- // await datasource.wait()
108
- await react_2.screen.findByRole('heading');
109
- });
110
- it('should show add button', () => {
111
- expect(react_2.screen.getByRole('button', { name: crudLabels.addNewDocumentLabel })).toBeInTheDocument();
112
- });
113
- it('should show existing documents', () => {
114
- const docs = react_2.screen.getByRole('heading', { name: crudLabels.documentsInCollectionCaption }).nextElementSibling;
115
- expect((0, react_2.within)(docs).getByText('Test prop 1')).toBeInTheDocument();
116
- expect((0, react_2.within)(docs).getByText('Test prop 2')).toBeInTheDocument();
117
- expect(docs.children.length).toBe(2);
118
- });
119
- describe('Accepts children as functions', () => {
120
- beforeEach(() => {
121
- user_event_1.default.setup();
122
- renderResult.rerender(react_1.default.createElement(crud_panel_1.CrudPanel, { controller: controller, labels: crudLabels },
123
- props => react_1.default.createElement(TestView, { ...props }),
124
- props => react_1.default.createElement(TestCard, { ...props })));
125
- });
126
- it('should show add button', () => {
127
- expect(react_2.screen.getByRole('button', { name: crudLabels.addNewDocumentLabel })).toBeInTheDocument();
128
- });
129
- it('should show existing documents', () => {
130
- const docs = react_2.screen.getByRole('heading', { name: crudLabels.documentsInCollectionCaption }).nextElementSibling;
131
- expect((0, react_2.within)(docs).getByText('Test prop 1')).toBeInTheDocument();
132
- expect((0, react_2.within)(docs).getByText('Test prop 2')).toBeInTheDocument();
133
- expect(docs.children.length).toBe(2);
134
- expect(react_2.screen.getAllByRole('button', { name: editButtonLabel })[0]).toBeInTheDocument();
135
- expect(react_2.screen.getAllByRole('button', { name: deleteButtonLabel })[0]).toBeInTheDocument();
136
- });
137
- });
138
- describe('Working with TestView', () => {
139
- it('should create an empty document view on add new document button click', async () => {
140
- await user_event_1.default.click(react_2.screen.getByRole('button', { name: crudLabels.addNewDocumentLabel }));
141
- expect(react_2.screen.getByRole('heading', { name: viewHeader })).toBeInTheDocument();
142
- expect(react_2.screen.getByPlaceholderText(testViewPlaceholder)).toHaveDisplayValue('');
143
- });
144
- it('should show detail view with document data on edit button click', async () => {
145
- const testDoc = mockData.Test.test1;
146
- const editButton = react_2.screen.getAllByRole('button', { name: editButtonLabel });
147
- await user_event_1.default.click(editButton[0]);
148
- expect(react_2.screen.getByRole('heading', { name: viewHeader })).toBeInTheDocument();
149
- expect(react_2.screen.getByDisplayValue(testDoc.testProp)).toBeInTheDocument();
150
- });
151
- it('should refresh document list on new document added', async () => {
152
- await user_event_1.default.click(react_2.screen.getByRole('button', { name: crudLabels.addNewDocumentLabel }));
153
- const input = await react_2.screen.findByPlaceholderText(testViewPlaceholder);
154
- await user_event_1.default.type(input, 'New and fancy Application');
155
- await user_event_1.default.click(react_2.screen.getByRole('button', { name: crudLabels.addButtonLabel }));
156
- const docs = react_2.screen.getByRole('heading', { name: crudLabels.documentsInCollectionCaption }).nextElementSibling;
157
- expect(await (0, react_2.within)(docs).findByText('New and fancy Application')).toBeInTheDocument();
158
- });
159
- });
160
- describe('Working with detail card buttons', () => {
161
- it('should refresh document list on document edited', async () => {
162
- const editButton = react_2.screen.getAllByRole('button', { name: editButtonLabel });
163
- await user_event_1.default.click(editButton[0]);
164
- const input = await react_2.screen.findByPlaceholderText(testViewPlaceholder);
165
- await user_event_1.default.click(input);
166
- await user_event_1.default.paste(' Edited');
167
- await user_event_1.default.click(react_2.screen.getByRole('button', { name: crudLabels.updateButtonLabel }));
168
- await (0, react_2.waitFor)(() => expect(notifySpy).toHaveBeenCalled());
169
- const docs = react_2.screen.getByRole('heading', { name: crudLabels.documentsInCollectionCaption }).nextElementSibling;
170
- expect(await (0, react_2.within)(docs).findByText('Test prop 1 Edited')).toBeInTheDocument();
171
- });
172
- it('should delete document and remove from the list', async () => {
173
- expect(react_2.screen.queryByText('Test prop 2')).toBeInTheDocument();
174
- const deleteButton = react_2.screen.getAllByRole('button', { name: deleteButtonLabel });
175
- await user_event_1.default.click(deleteButton[1]);
176
- await (0, react_2.waitFor)(() => expect(notifySpy).toHaveBeenCalled());
177
- await (0, react_2.waitFor)(() => expect(react_2.screen.queryByText('Test prop 2')).not.toBeInTheDocument());
178
- });
179
- });
180
- describe('Layout behaviour', () => {
181
- const itemsView = () => react_2.screen.queryByRole('heading', { name: crudLabels.documentsInCollectionCaption });
182
- const formView = () => react_2.screen.queryByRole('heading', { name: viewHeader });
183
- const addButton = () => react_2.screen.getByRole('button', { name: crudLabels.addNewDocumentLabel });
184
- const renderWith = async (layout) => {
185
- renderResult.rerender(react_1.default.createElement(crud_panel_1.CrudPanel, { controller: controller, labels: crudLabels, layout: layout },
186
- react_1.default.createElement(TestView, null),
187
- (props) => (react_1.default.createElement("div", null,
188
- react_1.default.createElement("p", null, props.document.testProp),
189
- react_1.default.createElement("button", { onClick: () => props.onSelect(props.document) }, editButtonLabel),
190
- react_1.default.createElement("button", { onClick: () => props.onDelete(props.document) }, deleteButtonLabel)))));
191
- };
192
- it('should show always collection items when default layout', async () => {
193
- expect(itemsView()).toBeInTheDocument();
194
- expect(formView()).not.toBeInTheDocument();
195
- await user_event_1.default.click(addButton());
196
- expect(itemsView()).toBeInTheDocument();
197
- expect(formView()).toBeInTheDocument();
198
- });
199
- it('should show always collection items when layout set to itemsAlways', async () => {
200
- renderWith('itemsAlways');
201
- expect(itemsView()).toBeInTheDocument();
202
- expect(formView()).not.toBeInTheDocument();
203
- await user_event_1.default.click(addButton());
204
- expect(itemsView()).toBeInTheDocument();
205
- expect(formView()).toBeInTheDocument();
206
- });
207
- it('should show always form view and items view when layout set to formAndItems', () => {
208
- renderWith('formAndItems');
209
- expect(itemsView()).toBeInTheDocument();
210
- expect(formView()).toBeInTheDocument();
211
- });
212
- it('should alternate from form view to items view but not both when layout set to formOrItems', async () => {
213
- renderWith('formOrItems');
214
- expect(itemsView()).toBeInTheDocument();
215
- expect(formView()).not.toBeInTheDocument();
216
- await user_event_1.default.click(addButton());
217
- expect(itemsView()).not.toBeInTheDocument();
218
- expect(formView()).toBeInTheDocument();
219
- });
220
- });
221
- describe('Labels', () => {
222
- it('should show singular when only one existing document', async () => {
223
- expect(react_2.screen.queryByText('Test prop 2')).toBeInTheDocument();
224
- const deleteButton = react_2.screen.getAllByRole('button', { name: deleteButtonLabel });
225
- await user_event_1.default.click(deleteButton[1]);
226
- await (0, react_2.waitFor)(() => expect(notifySpy).toHaveBeenCalled());
227
- const heading = await react_2.screen.findByRole('heading', { name: crudLabels.singularDocumentInCollectionCaption });
228
- expect(heading).toBeInTheDocument();
229
- });
230
- it('should show plural when only one existing document but empty singular caption', async () => {
231
- crudLabels.singularDocumentInCollectionCaption = undefined;
232
- expect(react_2.screen.queryByText('Test prop 2')).toBeInTheDocument();
233
- const deleteButton = react_2.screen.getAllByRole('button', { name: deleteButtonLabel });
234
- user_event_1.default.click(deleteButton[1]);
235
- await (0, react_2.waitFor)(() => expect(notifySpy).toHaveBeenCalled());
236
- const heading = react_2.screen.getByRole('heading', { name: crudLabels.documentsInCollectionCaption });
237
- expect(heading).toBeInTheDocument();
238
- });
239
- it('should allow to pass labels as a function', async () => {
240
- const labels = (controller) => Object.entries(crudLabels)
241
- .reduce((prev, [key, label]) => {
242
- prev[key] = `${label} ${controller.document?.className}`;
243
- return prev;
244
- }, {});
245
- renderResult.rerender(react_1.default.createElement(crud_panel_1.CrudPanel, { controller: controller, labels: labels },
246
- react_1.default.createElement(TestView, null),
247
- (props) => (react_1.default.createElement("div", null,
248
- react_1.default.createElement("p", null, props.document.testProp),
249
- react_1.default.createElement("button", { onClick: () => props.onSelect(props.document) }, editButtonLabel),
250
- react_1.default.createElement("button", { onClick: () => props.onDelete(props.document) }, deleteButtonLabel)))));
251
- const documentClassName = controller.createDocument().className;
252
- expect(react_2.screen.getByText(`${crudLabels.addNewDocumentLabel} ${documentClassName}`)).toBeInTheDocument();
253
- expect(react_2.screen.getByText(`${crudLabels.documentsInCollectionCaption} ${documentClassName}`)).toBeInTheDocument();
254
- });
255
- it('should not throw on undefined labels', () => {
256
- expect(() => renderResult.rerender(react_1.default.createElement(crud_panel_1.CrudPanel, { controller: controller, labels: undefined },
257
- react_1.default.createElement(TestView, null),
258
- react_1.default.createElement(TestCard, null)))).not.toThrow();
259
- });
260
- });
261
- });
262
- //# sourceMappingURL=crud-panel.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crud-panel.spec.js","sourceRoot":"","sources":["../src/crud-panel.spec.tsx"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,139 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const progress_controller_1 = require("./progress-controller");
4
- describe('Progress Controller', () => {
5
- let observer;
6
- let controller;
7
- beforeEach(() => {
8
- observer = jest.fn();
9
- controller = new progress_controller_1.ProgressController();
10
- controller.onProgress(observer);
11
- });
12
- describe('Single stage', () => {
13
- it('should notify on push stage', () => {
14
- const stage = { name: 'test stage', progress: 0, total: 1 };
15
- controller.pushStage(stage);
16
- expect(observer).toHaveBeenCalledWith({
17
- busy: true,
18
- overallProgress: 0,
19
- stages: { 'test stage': stage }
20
- });
21
- });
22
- it('should advance progress', () => {
23
- const stage = { name: 'test stage', progress: 0, total: 1 };
24
- controller.pushStage(stage);
25
- stage.progress = 0.5;
26
- controller.pushStage(stage);
27
- expect(observer).toHaveBeenLastCalledWith({
28
- busy: true,
29
- overallProgress: 0.5,
30
- stages: { 'test stage': stage }
31
- });
32
- });
33
- it('should notify not busy on completion', () => {
34
- const stage = { name: 'test stage', progress: 0, total: 1 };
35
- controller.pushStage(stage);
36
- stage.progress = 0.5;
37
- controller.pushStage(stage);
38
- stage.progress = 1;
39
- controller.pushStage(stage);
40
- expect(observer).toHaveBeenLastCalledWith({
41
- busy: false,
42
- overallProgress: 1,
43
- stages: { 'test stage': stage }
44
- });
45
- });
46
- it('should notify only new stages after completion', () => {
47
- const stage = { name: 'test stage', progress: 1, total: 1 };
48
- controller.pushStage(stage);
49
- expect(observer).toHaveBeenLastCalledWith(expect.objectContaining({ busy: false }));
50
- controller.pushStage({ name: 'new operation stage', progress: 0, total: 1 });
51
- expect(observer).toHaveBeenLastCalledWith({
52
- busy: true,
53
- overallProgress: 0,
54
- stages: { 'new operation stage': expect.anything() }
55
- });
56
- });
57
- it('should accept ratios different from 1', () => {
58
- const stage = { name: 'test stage', progress: 30, total: 100 };
59
- controller.pushStage(stage);
60
- expect(observer).toHaveBeenCalledWith({
61
- busy: true,
62
- overallProgress: 0.3,
63
- stages: { 'test stage': stage }
64
- });
65
- });
66
- });
67
- describe('Multiple stages', () => {
68
- it('should accumulate subsequent pushed stages', () => {
69
- const stage1 = { name: 'test stage1', progress: 0, total: 1 };
70
- const stage2 = { name: 'test stage2', progress: 0, total: 1 };
71
- controller.pushStage(stage1);
72
- expect(observer).toHaveBeenLastCalledWith({
73
- busy: true,
74
- overallProgress: 0,
75
- stages: { 'test stage1': stage1 }
76
- });
77
- controller.pushStage(stage2);
78
- expect(observer).toHaveBeenLastCalledWith({
79
- busy: true,
80
- overallProgress: 0,
81
- stages: {
82
- 'test stage1': stage1,
83
- 'test stage2': stage2
84
- }
85
- });
86
- });
87
- it('should calculate overall progress from multiple stages', () => {
88
- const stage1 = { name: 'test stage1', progress: 0.1, total: 1 };
89
- const stage2 = { name: 'test stage2', progress: 0.5, total: 1 };
90
- controller.pushStage(stage1);
91
- controller.pushStage(stage2);
92
- expect(observer).toHaveBeenLastCalledWith({
93
- busy: true,
94
- overallProgress: 0.3,
95
- stages: expect.anything()
96
- });
97
- });
98
- it('should calculate overall progress from multiple stages with some stages finished', () => {
99
- const stage1 = { name: 'test stage1', progress: 0.1, total: 1 };
100
- const stage2 = { name: 'test stage2', progress: 0.5, total: 1 };
101
- controller.pushStage(stage1);
102
- controller.pushStage(stage2);
103
- stage1.progress = 1;
104
- controller.pushStage(stage1);
105
- expect(observer).toHaveBeenLastCalledWith({
106
- busy: true,
107
- overallProgress: 0.75,
108
- stages: expect.anything()
109
- });
110
- });
111
- it('should notify not busy when all stages finished', () => {
112
- const stage1 = { name: 'test stage1', progress: 0.1, total: 1 };
113
- const stage2 = { name: 'test stage2', progress: 0.5, total: 1 };
114
- controller.pushStage(stage1);
115
- controller.pushStage(stage2);
116
- stage1.progress = 1;
117
- controller.pushStage(stage1);
118
- stage2.progress = 1;
119
- controller.pushStage(stage2);
120
- expect(observer).toHaveBeenLastCalledWith({
121
- busy: false,
122
- overallProgress: 1,
123
- stages: expect.anything()
124
- });
125
- });
126
- it('should accept progress with different ratios', () => {
127
- const stage1 = { name: 'test stage1', progress: 0.1, total: 1 };
128
- const stage2 = { name: 'test stage2', progress: 50, total: 100 };
129
- controller.pushStage(stage1);
130
- controller.pushStage(stage2);
131
- expect(observer).toHaveBeenLastCalledWith({
132
- busy: true,
133
- overallProgress: 0.3,
134
- stages: expect.anything()
135
- });
136
- });
137
- });
138
- });
139
- //# sourceMappingURL=progress-controller.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-controller.spec.js","sourceRoot":"","sources":["../src/progress-controller.spec.ts"],"names":[],"mappings":"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"}