@hosterai/types 0.0.17 → 0.0.18
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/README.md +12 -9
- package/dist/decorators/at-least-one-non-empty-validator.spec.d.ts +1 -0
- package/dist/decorators/at-least-one-non-empty-validator.spec.js +79 -0
- package/dist/decorators/at-least-one-non-empty.validator.d.ts +2 -0
- package/dist/decorators/at-least-one-non-empty.validator.js +43 -0
- package/dist/decorators/is-of-allowed-types-validator.spec.d.ts +1 -0
- package/dist/decorators/is-of-allowed-types-validator.spec.js +188 -0
- package/dist/decorators/is-of-allowed-types.validator.d.ts +16 -0
- package/dist/decorators/is-of-allowed-types.validator.js +105 -0
- package/dist/decorators/is-one-of-validator.spec.d.ts +1 -0
- package/dist/decorators/is-one-of-validator.spec.js +51 -0
- package/dist/decorators/is-one-of.validator.d.ts +2 -0
- package/dist/decorators/is-one-of.validator.js +19 -0
- package/dist/decorators/is-plain-object-validator.spec.d.ts +1 -0
- package/dist/decorators/is-plain-object-validator.spec.js +46 -0
- package/dist/decorators/is-plain-object.validator.d.ts +2 -0
- package/dist/decorators/is-plain-object.validator.js +30 -0
- package/dist/decorators/is-property-forbidden-validator.spec.d.ts +1 -0
- package/dist/decorators/is-property-forbidden-validator.spec.js +62 -0
- package/dist/decorators/is-property-forbidden.validator.d.ts +2 -0
- package/dist/decorators/is-property-forbidden.validator.js +22 -0
- package/dist/decorators/is-regex-validator.spec.d.ts +1 -0
- package/dist/decorators/is-regex-validator.spec.js +46 -0
- package/dist/decorators/is-regex.validator.d.ts +2 -0
- package/dist/decorators/is-regex.validator.js +32 -0
- package/dist/decorators/unique-field-in-array-validator.spec.d.ts +1 -0
- package/dist/decorators/unique-field-in-array-validator.spec.js +39 -0
- package/dist/decorators/unique-field-in-array.validator.d.ts +6 -0
- package/dist/decorators/unique-field-in-array.validator.js +47 -0
- package/dist/dtos/action.dto.js +4 -1
- package/dist/dtos/admin-panel.dto.d.ts +38 -0
- package/dist/dtos/admin-panel.dto.js +150 -0
- package/dist/dtos/client-panel.dto.d.ts +24 -0
- package/dist/dtos/client-panel.dto.js +75 -0
- package/dist/dtos/company-data.dto.js +1 -1
- package/dist/dtos/field.dto.js +32 -0
- package/dist/dtos/info.dto.d.ts +4 -79
- package/dist/dtos/info.dto.js +79 -0
- package/dist/dtos/menu.dto.d.ts +3 -4
- package/dist/dtos/menu.dto.js +75 -0
- package/dist/dtos/multilang-text.dto.js +1 -1
- package/dist/dtos/notification/notification-info.dto.js +25 -0
- package/dist/dtos/product/product-info.dto.js +46 -0
- package/dist/dtos/settings.dto.d.ts +14 -0
- package/dist/dtos/settings.dto.js +59 -0
- package/dist/dtos/tab.dto.js +20 -0
- package/dist/dtos/unit.dto.js +28 -0
- package/dist/index.d.ts +22 -7
- package/dist/index.js +22 -7
- package/dist/transformers/menu.transformer.d.ts +2 -0
- package/dist/transformers/menu.transformer.js +16 -0
- package/dist/transformers/settings.transformer.d.ts +1 -0
- package/dist/transformers/settings.transformer.js +15 -0
- package/dist/validators/action-validator.spec.d.ts +1 -0
- package/dist/validators/action-validator.spec.js +67 -0
- package/dist/validators/admin-panel-more-actions-validator.spec.d.ts +1 -0
- package/dist/validators/admin-panel-more-actions-validator.spec.js +129 -0
- package/dist/validators/admin-panel-more-actions.validator.d.ts +2 -0
- package/dist/validators/admin-panel-more-actions.validator.js +11 -0
- package/dist/validators/admin-panel-tabs-validator.spec.d.ts +1 -0
- package/dist/validators/admin-panel-tabs-validator.spec.js +39 -0
- package/dist/validators/admin-panel-tabs.validator.d.ts +2 -0
- package/dist/validators/admin-panel-tabs.validator.js +11 -0
- package/dist/validators/admin-panel-validator.spec.d.ts +1 -0
- package/dist/validators/admin-panel-validator.spec.js +112 -0
- package/dist/validators/admin-panel.validator.d.ts +2 -0
- package/dist/validators/admin-panel.validator.js +14 -0
- package/dist/validators/client-data-validator.spec.d.ts +1 -0
- package/dist/validators/client-data-validator.spec.js +35 -0
- package/dist/validators/client-panel-validator.spec.d.ts +1 -0
- package/dist/validators/client-panel-validator.spec.js +51 -0
- package/dist/validators/client-panel.validator.d.ts +2 -0
- package/dist/validators/client-panel.validator.js +14 -0
- package/dist/validators/company-data-validator.spec.d.ts +1 -0
- package/dist/validators/company-data-validator.spec.js +73 -0
- package/dist/validators/field-option-validator.spec.d.ts +1 -0
- package/dist/validators/field-option-validator.spec.js +28 -0
- package/dist/validators/field-option.validator.d.ts +2 -0
- package/dist/validators/field-option.validator.js +11 -0
- package/dist/validators/field-validator.spec.d.ts +1 -0
- package/dist/validators/field-validator.spec.js +76 -0
- package/dist/validators/jwt-validator.spec.d.ts +2 -0
- package/dist/validators/jwt-validator.spec.js +43 -0
- package/dist/validators/menu-with-submenu-validator.spec.d.ts +1 -0
- package/dist/validators/menu-with-submenu-validator.spec.js +52 -0
- package/dist/validators/menu-with-submenu.validator.d.ts +2 -0
- package/dist/validators/menu-with-submenu.validator.js +11 -0
- package/dist/validators/menu-with-url-validator.spec.d.ts +1 -0
- package/dist/validators/menu-with-url-validator.spec.js +70 -0
- package/dist/validators/menu-with-url.validator.d.ts +2 -0
- package/dist/validators/menu-with-url.validator.js +11 -0
- package/dist/validators/multilang-text-validator.spec.d.ts +1 -0
- package/dist/validators/multilang-text-validator.spec.js +33 -0
- package/dist/validators/notification-info-validator.spec.d.ts +1 -0
- package/dist/validators/notification-info-validator.spec.js +82 -0
- package/dist/validators/notification-info.validator.d.ts +7 -0
- package/dist/validators/notification-info.validator.js +16 -0
- package/dist/validators/notification-request-validator.spec.d.ts +1 -0
- package/dist/validators/notification-request-validator.spec.js +115 -0
- package/dist/validators/product-create-request-validator.spec.d.ts +2 -0
- package/dist/validators/product-create-request-validator.spec.js +44 -0
- package/dist/validators/product-delete-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-delete-request-validator.spec.js +40 -0
- package/dist/validators/product-downgradable-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-downgradable-request-validator.spec.js +40 -0
- package/dist/validators/product-downgrade-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-downgrade-request-validator.spec.js +46 -0
- package/dist/validators/product-info-validator.spec.d.ts +1 -0
- package/dist/validators/product-info-validator.spec.js +172 -0
- package/dist/validators/product-info.validator.d.ts +2 -0
- package/dist/validators/product-info.validator.js +11 -0
- package/dist/validators/product-renew-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-renew-request-validator.spec.js +40 -0
- package/dist/validators/product-suspend-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-suspend-request-validator.spec.js +40 -0
- package/dist/validators/product-unsuspend-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-unsuspend-request-validator.spec.js +40 -0
- package/dist/validators/product-upgradable-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-upgradable-request-validator.spec.js +40 -0
- package/dist/validators/product-upgrade-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-upgrade-request-validator.spec.js +46 -0
- package/dist/validators/product-validate-attributes-request-validator.spec.d.ts +1 -0
- package/dist/validators/product-validate-attributes-request-validator.spec.js +27 -0
- package/dist/validators/receiver-email-validator.spec.d.ts +1 -0
- package/dist/validators/receiver-email-validator.spec.js +32 -0
- package/dist/validators/receiver-push-validator.spec.d.ts +1 -0
- package/dist/validators/receiver-push-validator.spec.js +31 -0
- package/dist/validators/receiver-sms-validator.spec.d.ts +1 -0
- package/dist/validators/receiver-sms-validator.spec.js +29 -0
- package/dist/validators/sender-email-validator.spec.d.ts +2 -0
- package/dist/validators/sender-email-validator.spec.js +62 -0
- package/dist/validators/sender-push-validator.spec.d.ts +1 -0
- package/dist/validators/sender-push-validator.spec.js +38 -0
- package/dist/validators/sender-sms-validator.spec.d.ts +1 -0
- package/dist/validators/sender-sms-validator.spec.js +22 -0
- package/dist/validators/settings-with-tabs-validator.spec.d.ts +1 -0
- package/dist/validators/settings-with-tabs-validator.spec.js +29 -0
- package/dist/validators/settings-with-tabs.validator.d.ts +2 -0
- package/dist/validators/settings-with-tabs.validator.js +11 -0
- package/dist/validators/settings-with-url-validator.spec.d.ts +1 -0
- package/dist/validators/settings-with-url-validator.spec.js +29 -0
- package/dist/validators/settings-with-url.validator.d.ts +2 -0
- package/dist/validators/settings-with-url.validator.js +11 -0
- package/dist/validators/unit-validator.spec.d.ts +1 -0
- package/dist/validators/unit-validator.spec.js +27 -0
- package/dist/validators/unit.validator.d.ts +2 -0
- package/dist/validators/unit.validator.js +11 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,9 @@ export * from './dtos/success-response.dto';
|
|
|
18
18
|
export * from './dtos/tab.dto';
|
|
19
19
|
export * from './dtos/task-response.dto';
|
|
20
20
|
export * from './dtos/unit.dto';
|
|
21
|
+
export * from './dtos/admin-panel.dto';
|
|
22
|
+
export * from './dtos/client-panel.dto';
|
|
23
|
+
export * from './dtos/settings.dto';
|
|
21
24
|
export * from './dtos/notification/notification-info.dto';
|
|
22
25
|
export * from './dtos/notification/notification-send-request.dto';
|
|
23
26
|
export * from './dtos/notification/receiver/receiver-email.dto';
|
|
@@ -63,26 +66,38 @@ export * from './enums/response-status.enum';
|
|
|
63
66
|
export * from './enums/roles.enum';
|
|
64
67
|
export * from './enums/setup-status.enum';
|
|
65
68
|
export * from './validators/action-validator';
|
|
69
|
+
export * from './validators/admin-panel-more-actions.validator';
|
|
70
|
+
export * from './validators/admin-panel-tabs.validator';
|
|
71
|
+
export * from './validators/admin-panel.validator';
|
|
72
|
+
export * from './validators/client-data-validator';
|
|
73
|
+
export * from './validators/client-panel.validator';
|
|
66
74
|
export * from './validators/company-data-validator';
|
|
75
|
+
export * from './validators/field-option.validator';
|
|
67
76
|
export * from './validators/field-validator';
|
|
68
77
|
export * from './validators/jwt-validator';
|
|
78
|
+
export * from './validators/menu-with-submenu.validator';
|
|
79
|
+
export * from './validators/menu-with-url.validator';
|
|
69
80
|
export * from './validators/multilang-text-validator';
|
|
81
|
+
export * from './validators/notification-info.validator';
|
|
70
82
|
export * from './validators/notification-request-validator';
|
|
71
|
-
export * from './validators/receiver-email-validator';
|
|
72
|
-
export * from './validators/receiver-push-validator';
|
|
73
|
-
export * from './validators/receiver-sms-validator';
|
|
74
|
-
export * from './validators/sender-email-validator';
|
|
75
|
-
export * from './validators/sender-push-validator';
|
|
76
|
-
export * from './validators/sender-sms-validator';
|
|
77
|
-
export * from './validators/client-data-validator';
|
|
78
83
|
export * from './validators/product-create-request-validator';
|
|
79
84
|
export * from './validators/product-delete-request-validator';
|
|
80
85
|
export * from './validators/product-downgrade-request-validator';
|
|
81
86
|
export * from './validators/product-downgradable-request-validator';
|
|
87
|
+
export * from './validators/product-info.validator';
|
|
82
88
|
export * from './validators/product-renew-request-validator';
|
|
83
89
|
export * from './validators/product-suspend-request-validator';
|
|
84
90
|
export * from './validators/product-unsuspend-request-validator';
|
|
85
91
|
export * from './validators/product-upgrade-request-validator';
|
|
86
92
|
export * from './validators/product-upgradable-request-validator';
|
|
87
93
|
export * from './validators/product-validate-attributes-request-validator';
|
|
94
|
+
export * from './validators/receiver-email-validator';
|
|
95
|
+
export * from './validators/receiver-push-validator';
|
|
96
|
+
export * from './validators/receiver-sms-validator';
|
|
97
|
+
export * from './validators/settings-with-tabs.validator';
|
|
98
|
+
export * from './validators/settings-with-url.validator';
|
|
99
|
+
export * from './validators/sender-email-validator';
|
|
100
|
+
export * from './validators/sender-push-validator';
|
|
101
|
+
export * from './validators/sender-sms-validator';
|
|
102
|
+
export * from './validators/unit.validator';
|
|
88
103
|
export * from './dtos/product/product.interface';
|
package/dist/index.js
CHANGED
|
@@ -35,6 +35,9 @@ __exportStar(require("./dtos/success-response.dto"), exports);
|
|
|
35
35
|
__exportStar(require("./dtos/tab.dto"), exports);
|
|
36
36
|
__exportStar(require("./dtos/task-response.dto"), exports);
|
|
37
37
|
__exportStar(require("./dtos/unit.dto"), exports);
|
|
38
|
+
__exportStar(require("./dtos/admin-panel.dto"), exports);
|
|
39
|
+
__exportStar(require("./dtos/client-panel.dto"), exports);
|
|
40
|
+
__exportStar(require("./dtos/settings.dto"), exports);
|
|
38
41
|
// Notification DTOs
|
|
39
42
|
__exportStar(require("./dtos/notification/notification-info.dto"), exports);
|
|
40
43
|
__exportStar(require("./dtos/notification/notification-send-request.dto"), exports);
|
|
@@ -86,27 +89,39 @@ __exportStar(require("./enums/roles.enum"), exports);
|
|
|
86
89
|
__exportStar(require("./enums/setup-status.enum"), exports);
|
|
87
90
|
// Validators
|
|
88
91
|
__exportStar(require("./validators/action-validator"), exports);
|
|
92
|
+
__exportStar(require("./validators/admin-panel-more-actions.validator"), exports);
|
|
93
|
+
__exportStar(require("./validators/admin-panel-tabs.validator"), exports);
|
|
94
|
+
__exportStar(require("./validators/admin-panel.validator"), exports);
|
|
95
|
+
__exportStar(require("./validators/client-data-validator"), exports);
|
|
96
|
+
__exportStar(require("./validators/client-panel.validator"), exports);
|
|
89
97
|
__exportStar(require("./validators/company-data-validator"), exports);
|
|
98
|
+
__exportStar(require("./validators/field-option.validator"), exports);
|
|
90
99
|
__exportStar(require("./validators/field-validator"), exports);
|
|
91
100
|
__exportStar(require("./validators/jwt-validator"), exports);
|
|
101
|
+
__exportStar(require("./validators/menu-with-submenu.validator"), exports);
|
|
102
|
+
__exportStar(require("./validators/menu-with-url.validator"), exports);
|
|
92
103
|
__exportStar(require("./validators/multilang-text-validator"), exports);
|
|
104
|
+
__exportStar(require("./validators/notification-info.validator"), exports);
|
|
93
105
|
__exportStar(require("./validators/notification-request-validator"), exports);
|
|
94
|
-
__exportStar(require("./validators/receiver-email-validator"), exports);
|
|
95
|
-
__exportStar(require("./validators/receiver-push-validator"), exports);
|
|
96
|
-
__exportStar(require("./validators/receiver-sms-validator"), exports);
|
|
97
|
-
__exportStar(require("./validators/sender-email-validator"), exports);
|
|
98
|
-
__exportStar(require("./validators/sender-push-validator"), exports);
|
|
99
|
-
__exportStar(require("./validators/sender-sms-validator"), exports);
|
|
100
|
-
__exportStar(require("./validators/client-data-validator"), exports);
|
|
101
106
|
__exportStar(require("./validators/product-create-request-validator"), exports);
|
|
102
107
|
__exportStar(require("./validators/product-delete-request-validator"), exports);
|
|
103
108
|
__exportStar(require("./validators/product-downgrade-request-validator"), exports);
|
|
104
109
|
__exportStar(require("./validators/product-downgradable-request-validator"), exports);
|
|
110
|
+
__exportStar(require("./validators/product-info.validator"), exports);
|
|
105
111
|
__exportStar(require("./validators/product-renew-request-validator"), exports);
|
|
106
112
|
__exportStar(require("./validators/product-suspend-request-validator"), exports);
|
|
107
113
|
__exportStar(require("./validators/product-unsuspend-request-validator"), exports);
|
|
108
114
|
__exportStar(require("./validators/product-upgrade-request-validator"), exports);
|
|
109
115
|
__exportStar(require("./validators/product-upgradable-request-validator"), exports);
|
|
110
116
|
__exportStar(require("./validators/product-validate-attributes-request-validator"), exports);
|
|
117
|
+
__exportStar(require("./validators/receiver-email-validator"), exports);
|
|
118
|
+
__exportStar(require("./validators/receiver-push-validator"), exports);
|
|
119
|
+
__exportStar(require("./validators/receiver-sms-validator"), exports);
|
|
120
|
+
__exportStar(require("./validators/settings-with-tabs.validator"), exports);
|
|
121
|
+
__exportStar(require("./validators/settings-with-url.validator"), exports);
|
|
122
|
+
__exportStar(require("./validators/sender-email-validator"), exports);
|
|
123
|
+
__exportStar(require("./validators/sender-push-validator"), exports);
|
|
124
|
+
__exportStar(require("./validators/sender-sms-validator"), exports);
|
|
125
|
+
__exportStar(require("./validators/unit.validator"), exports);
|
|
111
126
|
// Interfaces
|
|
112
127
|
__exportStar(require("./dtos/product/product.interface"), exports);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformMenu = transformMenu;
|
|
4
|
+
const class_transformer_1 = require("class-transformer");
|
|
5
|
+
const menu_dto_1 = require("../dtos/menu.dto");
|
|
6
|
+
function transformMenu(value) {
|
|
7
|
+
if (!value)
|
|
8
|
+
return undefined;
|
|
9
|
+
if (value.type === 'only-url') {
|
|
10
|
+
return (0, class_transformer_1.plainToInstance)(menu_dto_1.MenuDtoWithUrl, value);
|
|
11
|
+
}
|
|
12
|
+
else if (value.type === 'with-submenu') {
|
|
13
|
+
return (0, class_transformer_1.plainToInstance)(menu_dto_1.MenuDtoWithSubmenu, value);
|
|
14
|
+
}
|
|
15
|
+
return (0, class_transformer_1.plainToInstance)(menu_dto_1.BaseMenuDto, value);
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function transformSettings(value: any): any;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformSettings = transformSettings;
|
|
4
|
+
const class_transformer_1 = require("class-transformer");
|
|
5
|
+
const settings_dto_1 = require("../dtos/settings.dto");
|
|
6
|
+
const settings_dto_2 = require("../dtos/settings.dto");
|
|
7
|
+
function transformSettings(value) {
|
|
8
|
+
if (value === null || value === void 0 ? void 0 : value.tabs) {
|
|
9
|
+
return (0, class_transformer_1.plainToInstance)(settings_dto_2.SettingsWithTabsDto, value);
|
|
10
|
+
}
|
|
11
|
+
else if (value === null || value === void 0 ? void 0 : value.url) {
|
|
12
|
+
return (0, class_transformer_1.plainToInstance)(settings_dto_1.SettingsWithUrlDto, value);
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const action_validator_1 = require("./action-validator");
|
|
5
|
+
const open_method_enum_1 = require("../enums/open-method.enum");
|
|
6
|
+
describe('ActionDto Validator', () => {
|
|
7
|
+
it('should return no errors for valid DTO', () => {
|
|
8
|
+
const validDto = {
|
|
9
|
+
icon: 'test-icon',
|
|
10
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
11
|
+
url: 'https://example.com',
|
|
12
|
+
};
|
|
13
|
+
const errors = (0, action_validator_1.validateActionDto)(validDto);
|
|
14
|
+
expect(errors).toHaveLength(0);
|
|
15
|
+
});
|
|
16
|
+
it('should return error for invalid URL', () => {
|
|
17
|
+
const invalidDto = {
|
|
18
|
+
icon: 'test-icon',
|
|
19
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
20
|
+
url: 'not-a-url',
|
|
21
|
+
};
|
|
22
|
+
const errors = (0, action_validator_1.validateActionDto)(invalidDto);
|
|
23
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
24
|
+
expect(errors.some((e) => e.property === 'url')).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
it('should return error for invalid openMethod', () => {
|
|
27
|
+
const invalidDto = {
|
|
28
|
+
icon: 'test-icon',
|
|
29
|
+
openMethod: 'not-an-enum',
|
|
30
|
+
url: 'http://example.com',
|
|
31
|
+
};
|
|
32
|
+
const errors = (0, action_validator_1.validateActionDto)(invalidDto);
|
|
33
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
34
|
+
expect(errors.some((e) => e.property === 'openMethod')).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
it('should return error for missing required fields', () => {
|
|
37
|
+
const invalidDto = {
|
|
38
|
+
// missing 'icon' and 'url'
|
|
39
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL
|
|
40
|
+
};
|
|
41
|
+
const errors = (0, action_validator_1.validateActionDto)(invalidDto);
|
|
42
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
43
|
+
expect(errors.some((e) => e.property === 'icon')).toBe(true);
|
|
44
|
+
expect(errors.some((e) => e.property === 'url')).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it('should return error for invalid data types', () => {
|
|
47
|
+
const invalidDto = {
|
|
48
|
+
icon: 123, // should be a string
|
|
49
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
50
|
+
url: 456 // should be a string
|
|
51
|
+
};
|
|
52
|
+
const errors = (0, action_validator_1.validateActionDto)(invalidDto);
|
|
53
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
54
|
+
expect(errors.some((e) => e.property === 'icon')).toBe(true);
|
|
55
|
+
expect(errors.some((e) => e.property === 'url')).toBe(true);
|
|
56
|
+
});
|
|
57
|
+
it('should handle unexpected fields gracefully', () => {
|
|
58
|
+
const validDto = {
|
|
59
|
+
icon: 'test-icon',
|
|
60
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
61
|
+
url: 'https://example.com',
|
|
62
|
+
unexpectedField: 'unexpected' // additional field
|
|
63
|
+
};
|
|
64
|
+
const errors = (0, action_validator_1.validateActionDto)(validDto);
|
|
65
|
+
expect(errors).toHaveLength(0);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const class_validator_1 = require("class-validator");
|
|
5
|
+
const action_dto_1 = require("../dtos/action.dto");
|
|
6
|
+
const open_method_enum_1 = require("../enums/open-method.enum");
|
|
7
|
+
const admin_panel_dto_1 = require("../dtos/admin-panel.dto");
|
|
8
|
+
const admin_panel_more_actions_validator_1 = require("./admin-panel-more-actions.validator");
|
|
9
|
+
const minimalValidActionDto = () => {
|
|
10
|
+
const action = new action_dto_1.ActionDto();
|
|
11
|
+
action.icon = 'add';
|
|
12
|
+
action.openMethod = open_method_enum_1.OpenMethodEnum.AJAX_CALL;
|
|
13
|
+
action.url = 'https://example.com/api';
|
|
14
|
+
return action;
|
|
15
|
+
};
|
|
16
|
+
describe('AdminPanelMoreActionsDto', () => {
|
|
17
|
+
it('fails when all keys are undefined', async () => {
|
|
18
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
19
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
20
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
21
|
+
});
|
|
22
|
+
it('fails when all keys are empty arrays', async () => {
|
|
23
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
24
|
+
dto.client = [];
|
|
25
|
+
dto.item = [];
|
|
26
|
+
dto.invoice = [];
|
|
27
|
+
dto.user = [];
|
|
28
|
+
dto.order = [];
|
|
29
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
30
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
31
|
+
});
|
|
32
|
+
it('passes when one key has a non-empty array', async () => {
|
|
33
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
34
|
+
dto.client = [minimalValidActionDto()];
|
|
35
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
36
|
+
expect(errors.length).toBe(0);
|
|
37
|
+
});
|
|
38
|
+
it('passes when multiple keys have non-empty arrays', async () => {
|
|
39
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
40
|
+
dto.client = [minimalValidActionDto()];
|
|
41
|
+
dto.order = [minimalValidActionDto()];
|
|
42
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
43
|
+
expect(errors.length).toBe(0);
|
|
44
|
+
});
|
|
45
|
+
it('fails when a key has a non-array non-object value', async () => {
|
|
46
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
47
|
+
// @ts-expect-error testing invalid value
|
|
48
|
+
dto.client = 'invalid';
|
|
49
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
50
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
51
|
+
});
|
|
52
|
+
it('passes when nested ActionDto is valid', async () => {
|
|
53
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
54
|
+
dto.client = [minimalValidActionDto()];
|
|
55
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
56
|
+
expect(errors.length).toBe(0);
|
|
57
|
+
});
|
|
58
|
+
it('fails when nested ActionDto is invalid', async () => {
|
|
59
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
60
|
+
const invalidAction = minimalValidActionDto();
|
|
61
|
+
// @ts-expect-error testing invalid value
|
|
62
|
+
invalidAction.url = 123; // should be a string
|
|
63
|
+
dto.client = [invalidAction];
|
|
64
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
65
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
66
|
+
});
|
|
67
|
+
it('handles unexpected keys gracefully', async () => {
|
|
68
|
+
const dto = new admin_panel_dto_1.AdminPanelMoreActionsDto();
|
|
69
|
+
dto.client = [minimalValidActionDto()];
|
|
70
|
+
// @ts-expect-error testing unexpected key
|
|
71
|
+
dto.unexpectedKey = 'unexpected';
|
|
72
|
+
const errors = await (0, class_validator_1.validate)(dto);
|
|
73
|
+
expect(errors.length).toBe(0);
|
|
74
|
+
});
|
|
75
|
+
it('fails when input object cannot be converted', async () => {
|
|
76
|
+
const invalidData = {
|
|
77
|
+
client: 'not-an-object',
|
|
78
|
+
};
|
|
79
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(invalidData);
|
|
80
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
81
|
+
});
|
|
82
|
+
it('validates complex nested structures', async () => {
|
|
83
|
+
const complexData = {
|
|
84
|
+
client: [{
|
|
85
|
+
icon: 'add',
|
|
86
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
87
|
+
url: 'https://example.com/api',
|
|
88
|
+
nested: [{
|
|
89
|
+
icon: 'nested-icon',
|
|
90
|
+
openMethod: open_method_enum_1.OpenMethodEnum.AJAX_CALL,
|
|
91
|
+
url: 'https://example.com/nested'
|
|
92
|
+
}]
|
|
93
|
+
}]
|
|
94
|
+
};
|
|
95
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(complexData);
|
|
96
|
+
expect(errors.length).toBe(0);
|
|
97
|
+
});
|
|
98
|
+
it('handles edge cases with empty objects', async () => {
|
|
99
|
+
const emptyData = {};
|
|
100
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(emptyData);
|
|
101
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
102
|
+
});
|
|
103
|
+
it('fails when all properties are empty arrays', async () => {
|
|
104
|
+
const data = {
|
|
105
|
+
client: [],
|
|
106
|
+
item: [],
|
|
107
|
+
invoice: [],
|
|
108
|
+
user: [],
|
|
109
|
+
order: []
|
|
110
|
+
};
|
|
111
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(data);
|
|
112
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
113
|
+
});
|
|
114
|
+
it('passes with one non-empty property', async () => {
|
|
115
|
+
const data = {
|
|
116
|
+
client: [minimalValidActionDto()]
|
|
117
|
+
};
|
|
118
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(data);
|
|
119
|
+
expect(errors.length).toBe(0);
|
|
120
|
+
});
|
|
121
|
+
it('passes with multiple non-empty properties', async () => {
|
|
122
|
+
const data = {
|
|
123
|
+
client: [minimalValidActionDto()],
|
|
124
|
+
item: [minimalValidActionDto()]
|
|
125
|
+
};
|
|
126
|
+
const errors = (0, admin_panel_more_actions_validator_1.validateAdminPanelMoreActionsDto)(data);
|
|
127
|
+
expect(errors.length).toBe(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAdminPanelMoreActionsDto = validateAdminPanelMoreActionsDto;
|
|
4
|
+
const class_transformer_1 = require("class-transformer");
|
|
5
|
+
const class_validator_1 = require("class-validator");
|
|
6
|
+
const admin_panel_dto_1 = require("../dtos/admin-panel.dto");
|
|
7
|
+
function validateAdminPanelMoreActionsDto(data) {
|
|
8
|
+
const dto = (0, class_transformer_1.plainToInstance)(admin_panel_dto_1.AdminPanelMoreActionsDto, data);
|
|
9
|
+
const errors = (0, class_validator_1.validateSync)(dto);
|
|
10
|
+
return errors;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const class_validator_1 = require("class-validator");
|
|
5
|
+
const class_transformer_1 = require("class-transformer");
|
|
6
|
+
const admin_panel_dto_1 = require("../dtos/admin-panel.dto");
|
|
7
|
+
describe('validateAdminPanelTabsDto', () => {
|
|
8
|
+
const validTab = { label: 'Tab', url: 'https://example.com' };
|
|
9
|
+
const boundaryTab = { label: 'T', url: 'https://e.com' }; // Shortest valid values
|
|
10
|
+
const longTab = { label: 'L'.repeat(256), url: 'https://example.com/long-url' }; // Longest valid values
|
|
11
|
+
const cases = [
|
|
12
|
+
[{ product: [], item: [], client: [], user: [], order: [] }, false], // all empty => invalid
|
|
13
|
+
[{ product: [validTab], item: [validTab], client: [validTab], user: [validTab], order: [validTab] }, true],
|
|
14
|
+
[{ product: [], item: [], client: [], user: [] }, false], // missing order
|
|
15
|
+
[{ product: [], item: 'not-an-array', client: [], user: [], order: [] }, false],
|
|
16
|
+
[{ product: [{ label: 123, url: 'invalid-url' }], item: [], client: [], user: [], order: [] }, false],
|
|
17
|
+
[{ product: [{ label: 123, url: 'invalid-url' }], item: [], client: [], user: [], order: [] }, false],
|
|
18
|
+
];
|
|
19
|
+
const additionalCases = [
|
|
20
|
+
[{ product: [boundaryTab], item: [boundaryTab], client: [boundaryTab], user: [boundaryTab], order: [boundaryTab] }, true], // boundary values
|
|
21
|
+
[{ product: [longTab], item: [longTab], client: [longTab], user: [longTab], order: [longTab] }, true], // long values
|
|
22
|
+
[{ product: [validTab], item: [validTab], client: [validTab], user: [validTab], order: [validTab], unexpected: 'extra' }, false], // unexpected property
|
|
23
|
+
];
|
|
24
|
+
test.each([...cases, ...additionalCases])('validates %# as %s', (input, valid) => {
|
|
25
|
+
const dto = (0, class_transformer_1.plainToInstance)(admin_panel_dto_1.AdminPanelTabsDto, input);
|
|
26
|
+
const errors = (0, class_validator_1.validateSync)(dto, { whitelist: true, forbidNonWhitelisted: true });
|
|
27
|
+
const classLevelError = errors.find(e => e.property === '');
|
|
28
|
+
const hasClassLevelError = classLevelError !== undefined;
|
|
29
|
+
if (valid) {
|
|
30
|
+
expect(errors.length).toBe(0);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
34
|
+
if (hasClassLevelError) {
|
|
35
|
+
expect(classLevelError.constraints).toHaveProperty('AtLeastOneNonEmpty');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAdminPanelTabsDto = validateAdminPanelTabsDto;
|
|
4
|
+
const class_transformer_1 = require("class-transformer");
|
|
5
|
+
const admin_panel_dto_1 = require("../dtos/admin-panel.dto");
|
|
6
|
+
const class_validator_1 = require("class-validator");
|
|
7
|
+
function validateAdminPanelTabsDto(data) {
|
|
8
|
+
const dto = (0, class_transformer_1.plainToInstance)(admin_panel_dto_1.AdminPanelTabsDto, data);
|
|
9
|
+
const errors = (0, class_validator_1.validateSync)(dto);
|
|
10
|
+
return errors;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const admin_panel_validator_1 = require("./admin-panel.validator");
|
|
5
|
+
const validAction = { icon: 'add', openMethod: 'ajax_call', url: 'https://example.com/action' };
|
|
6
|
+
const minimalValidMenuDtoWithUrl = {
|
|
7
|
+
type: 'only-url',
|
|
8
|
+
icon: 'https://example.com/icon.png',
|
|
9
|
+
label: 'Main Menu',
|
|
10
|
+
url: 'https://example.com/menu',
|
|
11
|
+
};
|
|
12
|
+
const minimalValidMenuDtoWithSubmenu = {
|
|
13
|
+
type: 'with-submenu',
|
|
14
|
+
icon: 'https://example.com/icon.png',
|
|
15
|
+
label: 'Main Menu',
|
|
16
|
+
submenu: [
|
|
17
|
+
{ url: 'https://example.com/sub1', label: 'Submenu 1' },
|
|
18
|
+
{ url: 'https://example.com/sub2', label: 'Submenu 2' },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
const minimalValidSettingsWithUrlDto = {
|
|
22
|
+
url: 'https://settings.com',
|
|
23
|
+
label: 'Settings',
|
|
24
|
+
icon: 'https://example.com/icon.png',
|
|
25
|
+
description: 'Settings description',
|
|
26
|
+
};
|
|
27
|
+
const minimalValidSettingsWithTabsDto = {
|
|
28
|
+
tabs: [
|
|
29
|
+
{
|
|
30
|
+
label: 'Tab 1',
|
|
31
|
+
url: 'https://example.com/tab1',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
label: 'Settings',
|
|
35
|
+
icon: 'https://example.com/icon.png',
|
|
36
|
+
description: 'Settings description',
|
|
37
|
+
};
|
|
38
|
+
describe('AdminPanelDto full validation', () => {
|
|
39
|
+
test.each([
|
|
40
|
+
// Empty object is invalid
|
|
41
|
+
['valid minimal empty object', {}, false],
|
|
42
|
+
// Tabs tests
|
|
43
|
+
['invalid all empty tabs and empty moreActions', {
|
|
44
|
+
tabs: { product: [], item: [], client: [], user: [], order: [] },
|
|
45
|
+
moreActions: {},
|
|
46
|
+
}, false],
|
|
47
|
+
['valid with one non-empty tab', {
|
|
48
|
+
tabs: { product: [{ label: 'Product', url: 'https://example.com/product' }] },
|
|
49
|
+
}, true],
|
|
50
|
+
['invalid with one non-empty tab', {
|
|
51
|
+
tabs: { product: [{ label: 'Product', url: 'https://example.com/product' }], item: [], client: [], user: [], order: [] },
|
|
52
|
+
}, false],
|
|
53
|
+
['invalid with multiple non-empty tabs', {
|
|
54
|
+
tabs: {
|
|
55
|
+
product: [{ label: 'Product', url: 'https://example.com/product' }],
|
|
56
|
+
item: [{ label: 'Item', url: 'https://example.com/item' }],
|
|
57
|
+
client: [],
|
|
58
|
+
user: [],
|
|
59
|
+
order: [],
|
|
60
|
+
},
|
|
61
|
+
}, false],
|
|
62
|
+
['valid with multiple non-empty tabs', {
|
|
63
|
+
tabs: {
|
|
64
|
+
product: [{ label: 'Product', url: 'https://example.com/product' }],
|
|
65
|
+
item: [{ label: 'Item', url: 'https://example.com/item' }],
|
|
66
|
+
},
|
|
67
|
+
}, true],
|
|
68
|
+
// MoreActions tests
|
|
69
|
+
['valid with moreActions.client', { moreActions: { client: [validAction] } }, true],
|
|
70
|
+
['valid with moreActions.item', { moreActions: { item: [validAction] } }, true],
|
|
71
|
+
['valid with moreActions.invoice', { moreActions: { invoice: [validAction] } }, true],
|
|
72
|
+
['valid with moreActions.order', { moreActions: { order: [validAction] } }, true],
|
|
73
|
+
['valid with moreActions.user', { moreActions: { user: [validAction] } }, true],
|
|
74
|
+
['invalid moreActions.client with bad openMethod', { moreActions: { client: [{ icon: 'add', openMethod: 'bad_method', url: 'https://example.com/action' }] } }, false],
|
|
75
|
+
// Menu and Settings valid combos
|
|
76
|
+
['valid menu with URL type', { menu: minimalValidMenuDtoWithUrl }, true],
|
|
77
|
+
['valid menu with submenu type', { menu: minimalValidMenuDtoWithSubmenu }, true],
|
|
78
|
+
['valid menu and settings URL', { menu: minimalValidMenuDtoWithUrl, settings: minimalValidSettingsWithUrlDto }, true],
|
|
79
|
+
['valid menu and settings tabs', { menu: minimalValidMenuDtoWithSubmenu, settings: minimalValidSettingsWithTabsDto }, true],
|
|
80
|
+
// Invalid menu cases
|
|
81
|
+
['invalid menu missing required fields', { menu: { type: 'only-url' } }, false],
|
|
82
|
+
['invalid menu unknown type', { menu: { type: 'unknown', icon: 'https://icon.png', label: 'Label', url: 'https://example.com' } }, false],
|
|
83
|
+
['invalid menu with extra property', { menu: { ...minimalValidMenuDtoWithUrl, extra: 'not allowed' } }, false],
|
|
84
|
+
['invalid menu with submenu on URL menu', { menu: { ...minimalValidMenuDtoWithUrl, submenu: [{ url: 'https://example.com', label: 'Sub' }] } }, false],
|
|
85
|
+
// Invalid tabs type
|
|
86
|
+
['invalid tabs not an object', { tabs: 'not-an-object' }, false],
|
|
87
|
+
// Invalid extra property on root DTO
|
|
88
|
+
['invalid extra property on root', { extra: 'not allowed' }, false],
|
|
89
|
+
// Settings validation edge cases
|
|
90
|
+
['valid settings with SettingsWithUrlDto', { settings: minimalValidSettingsWithUrlDto }, true],
|
|
91
|
+
['valid settings with SettingsWithTabsDto', { settings: minimalValidSettingsWithTabsDto }, true],
|
|
92
|
+
['invalid settings missing required fields', { settings: { label: 'Missing url and tabs' } }, false],
|
|
93
|
+
['invalid settings with extra property', { settings: { ...minimalValidSettingsWithUrlDto, extra: 'not allowed' } }, false],
|
|
94
|
+
['invalid settings with both url and tabs', {
|
|
95
|
+
settings: {
|
|
96
|
+
url: 'https://example.com',
|
|
97
|
+
tabs: [{ label: 'Tab 1', url: 'https://example.com/tab1' }],
|
|
98
|
+
label: 'Invalid Union',
|
|
99
|
+
icon: 'https://example.com/icon.png',
|
|
100
|
+
description: 'Should fail because both url and tabs are present',
|
|
101
|
+
},
|
|
102
|
+
}, false],
|
|
103
|
+
])('%s', async (_desc, input, expectedValid) => {
|
|
104
|
+
const errors = await (0, admin_panel_validator_1.validateAdminPanelDto)(input);
|
|
105
|
+
if (expectedValid) {
|
|
106
|
+
expect(errors.length).toBe(0);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateAdminPanelDto = validateAdminPanelDto;
|
|
4
|
+
const class_validator_1 = require("class-validator");
|
|
5
|
+
const class_transformer_1 = require("class-transformer");
|
|
6
|
+
const admin_panel_dto_1 = require("../dtos/admin-panel.dto");
|
|
7
|
+
async function validateAdminPanelDto(data) {
|
|
8
|
+
const dto = (0, class_transformer_1.plainToInstance)(admin_panel_dto_1.AdminPanelDto, data);
|
|
9
|
+
const errors = await (0, class_validator_1.validate)(dto, {
|
|
10
|
+
whitelist: true, // strips unknown props
|
|
11
|
+
forbidNonWhitelisted: true, // throws error if unknown props present
|
|
12
|
+
});
|
|
13
|
+
return errors;
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
require("reflect-metadata");
|
|
4
|
+
const client_data_validator_1 = require("./client-data-validator");
|
|
5
|
+
const country_enum_1 = require("../enums/country.enum");
|
|
6
|
+
describe('validateClientDataDto', () => {
|
|
7
|
+
it('should return no errors for a valid client data object', async () => {
|
|
8
|
+
const validClientData = {
|
|
9
|
+
email: 'test@example.com',
|
|
10
|
+
firstName: 'John',
|
|
11
|
+
lastName: 'Doe',
|
|
12
|
+
telephone: '+14155552671',
|
|
13
|
+
address1: '123 Main St',
|
|
14
|
+
postcode: '12345',
|
|
15
|
+
city: 'Anytown',
|
|
16
|
+
country: country_enum_1.CountryEnum.UNITED_STATES,
|
|
17
|
+
};
|
|
18
|
+
const errors = await (0, client_data_validator_1.validateClientDataDto)(validClientData);
|
|
19
|
+
expect(errors.length).toBe(0);
|
|
20
|
+
});
|
|
21
|
+
it('should return errors for an invalid client data object', async () => {
|
|
22
|
+
const invalidClientData = {
|
|
23
|
+
email: 'not-an-email',
|
|
24
|
+
firstName: '', // empty
|
|
25
|
+
lastName: 'Doe',
|
|
26
|
+
telephone: '123', // invalid
|
|
27
|
+
address1: '123 Main St',
|
|
28
|
+
postcode: '12345',
|
|
29
|
+
city: 'Anytown',
|
|
30
|
+
country: 'invalid-country',
|
|
31
|
+
};
|
|
32
|
+
const errors = await (0, client_data_validator_1.validateClientDataDto)(invalidClientData);
|
|
33
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import 'reflect-metadata';
|