@fiado/type-kit 3.182.0 → 3.184.0
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/_test_/unit/benefitCenter/benefitFlowString.test.ts +22 -0
- package/_test_/unit/benefitCenter/flowDtos.test.ts +27 -0
- package/_test_/unit/retailOrg/dtos/RetailUser.test.ts +30 -0
- package/_test_/unit/retailOrg/dtos/Retailer.test.ts +1 -1
- package/_test_/unit/retailOrg/dtos/Store.test.ts +2 -2
- package/_test_/unit/retailOrg/dtos/requests/retailUserRequests.test.ts +34 -0
- package/_test_/unit/retailOrg/dtos/requests/retailerRequests.test.ts +9 -9
- package/_test_/unit/retailOrg/dtos/requests/storeRequests.test.ts +2 -2
- package/_test_/unit/retailOrg/dtos/responses/RetailerHierarchyResponse.test.ts +1 -1
- package/_test_/unit/retailOrg/dtos/validation/validationDtos.test.ts +2 -2
- package/_test_/unit/retailOrg/enums/CollectorSeniorityEnum.test.ts +12 -0
- package/_test_/unit/retailOrg/enums/RetailerTypeEnum.test.ts +5 -5
- package/bin/benefitCenter/dtos/BenefitCreateRequest.d.ts +1 -2
- package/bin/benefitCenter/dtos/BenefitCreateRequest.js +2 -2
- package/bin/benefitCenter/dtos/BenefitItem.d.ts +1 -2
- package/bin/benefitCenter/dtos/BenefitSummary.d.ts +1 -2
- package/bin/benefitCenter/dtos/BenefitUpdateRequest.d.ts +1 -2
- package/bin/benefitCenter/dtos/BenefitUpdateRequest.js +2 -2
- package/bin/benefitCenter/dtos/FavoriteItem.d.ts +1 -2
- package/bin/benefitCenter/dtos/FlowDtos.d.ts +36 -0
- package/bin/benefitCenter/dtos/FlowDtos.js +109 -0
- package/bin/benefitCenter/enums/FlowStatusEnum.d.ts +4 -0
- package/bin/benefitCenter/enums/FlowStatusEnum.js +8 -0
- package/bin/benefitCenter/enums/FlowTypeEnum.d.ts +6 -0
- package/bin/benefitCenter/enums/FlowTypeEnum.js +10 -0
- package/bin/benefitCenter/index.d.ts +3 -1
- package/bin/benefitCenter/index.js +4 -1
- package/bin/retailOrg/dtos/RetailUser.d.ts +7 -0
- package/bin/retailOrg/dtos/RetailUser.js +20 -0
- package/bin/retailOrg/dtos/Store.d.ts +6 -2
- package/bin/retailOrg/dtos/Store.js +1 -1
- package/bin/retailOrg/dtos/requests/CreateRetailUserRequest.d.ts +7 -0
- package/bin/retailOrg/dtos/requests/CreateRetailUserRequest.js +20 -0
- package/bin/retailOrg/dtos/requests/CreateStoreRequest.d.ts +6 -2
- package/bin/retailOrg/dtos/requests/CreateStoreRequest.js +1 -1
- package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.d.ts +3 -3
- package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.js +3 -3
- package/bin/retailOrg/dtos/requests/UpdateRetailUserRequest.d.ts +7 -0
- package/bin/retailOrg/dtos/requests/UpdateRetailUserRequest.js +20 -0
- package/bin/retailOrg/dtos/requests/UpdateStoreRequest.d.ts +2 -1
- package/bin/retailOrg/dtos/requests/UpdateStoreRequest.js +1 -1
- package/bin/retailOrg/enums/CollectorSeniorityEnum.d.ts +12 -0
- package/bin/retailOrg/enums/CollectorSeniorityEnum.js +16 -0
- package/bin/retailOrg/enums/RetailerTypeEnum.d.ts +6 -6
- package/bin/retailOrg/enums/RetailerTypeEnum.js +6 -6
- package/bin/retailOrg/index.d.ts +1 -0
- package/bin/retailOrg/index.js +1 -0
- package/package.json +1 -1
- package/src/benefitCenter/dtos/BenefitCreateRequest.ts +3 -3
- package/src/benefitCenter/dtos/BenefitItem.ts +1 -3
- package/src/benefitCenter/dtos/BenefitSummary.ts +1 -3
- package/src/benefitCenter/dtos/BenefitUpdateRequest.ts +2 -2
- package/src/benefitCenter/dtos/FavoriteItem.ts +1 -2
- package/src/benefitCenter/dtos/FlowDtos.ts +73 -0
- package/src/benefitCenter/enums/FlowStatusEnum.ts +4 -0
- package/src/benefitCenter/enums/FlowTypeEnum.ts +6 -0
- package/src/benefitCenter/index.ts +4 -1
- package/src/retailOrg/dtos/RetailUser.ts +21 -1
- package/src/retailOrg/dtos/Store.ts +6 -2
- package/src/retailOrg/dtos/requests/CreateRetailUserRequest.ts +21 -1
- package/src/retailOrg/dtos/requests/CreateStoreRequest.ts +6 -2
- package/src/retailOrg/dtos/requests/CreateSubdistributorRequest.ts +4 -4
- package/src/retailOrg/dtos/requests/UpdateRetailUserRequest.ts +21 -1
- package/src/retailOrg/dtos/requests/UpdateStoreRequest.ts +2 -1
- package/src/retailOrg/enums/CollectorSeniorityEnum.ts +12 -0
- package/src/retailOrg/enums/RetailerTypeEnum.ts +6 -6
- package/src/retailOrg/index.ts +1 -0
- package/src/benefitCenter/enums/BenefitFlowEnum.ts +0 -11
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { plainToInstance } from "class-transformer";
|
|
3
|
+
import { validateSync } from "class-validator";
|
|
4
|
+
import { BenefitCreateRequest } from "../../../src/benefitCenter/dtos/BenefitCreateRequest";
|
|
5
|
+
|
|
6
|
+
describe("BenefitCreateRequest.flow como referencia string", () => {
|
|
7
|
+
it("acepta cualquier reference string no vacía (incluso fuera del enum legacy)", () => {
|
|
8
|
+
const dto = plainToInstance(BenefitCreateRequest, {
|
|
9
|
+
name: "X", status: "ACTIVE", sortOrder: 1, flow: "CUSTOM_FLOW_XYZ",
|
|
10
|
+
});
|
|
11
|
+
const errors = validateSync(dto).filter(e => e.property === "flow");
|
|
12
|
+
expect(errors).toHaveLength(0);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("rechaza flow vacío", () => {
|
|
16
|
+
const dto = plainToInstance(BenefitCreateRequest, {
|
|
17
|
+
name: "X", status: "ACTIVE", sortOrder: 1, flow: "",
|
|
18
|
+
});
|
|
19
|
+
const errors = validateSync(dto).filter(e => e.property === "flow");
|
|
20
|
+
expect(errors.length).toBeGreaterThan(0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
import { plainToInstance } from "class-transformer";
|
|
3
|
+
import { validateSync } from "class-validator";
|
|
4
|
+
import { FlowCreateRequest } from "../../../src/benefitCenter/dtos/FlowDtos";
|
|
5
|
+
import { FlowTypeEnum } from "../../../src/benefitCenter/enums/FlowTypeEnum";
|
|
6
|
+
import { FlowStatusEnum } from "../../../src/benefitCenter/enums/FlowStatusEnum";
|
|
7
|
+
|
|
8
|
+
describe("FlowCreateRequest", () => {
|
|
9
|
+
it("acepta un payload válido", () => {
|
|
10
|
+
const dto = plainToInstance(FlowCreateRequest, {
|
|
11
|
+
name: "Recargas",
|
|
12
|
+
reference: "TOPUPS",
|
|
13
|
+
type: FlowTypeEnum.INTERNAL,
|
|
14
|
+
status: FlowStatusEnum.ACTIVE,
|
|
15
|
+
sortOrder: 1,
|
|
16
|
+
supportedProps: [{ name: "leafId", required: false }],
|
|
17
|
+
});
|
|
18
|
+
expect(validateSync(dto)).toHaveLength(0);
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("rechaza reference vacía y type inválido", () => {
|
|
22
|
+
const dto = plainToInstance(FlowCreateRequest, {
|
|
23
|
+
name: "X", reference: "", type: "NOPE", status: FlowStatusEnum.ACTIVE, sortOrder: 0,
|
|
24
|
+
});
|
|
25
|
+
expect(validateSync(dto).length).toBeGreaterThan(0);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -4,6 +4,7 @@ import { validate } from 'class-validator';
|
|
|
4
4
|
import { RetailUser } from '../../../../src/retailOrg/dtos/RetailUser';
|
|
5
5
|
import { EmploymentTypeEnum } from '../../../../src/retailOrg/enums/EmploymentTypeEnum';
|
|
6
6
|
import { RetailUserStatusEnum } from '../../../../src/retailOrg/enums/RetailUserStatusEnum';
|
|
7
|
+
import { CollectorSeniorityEnum } from '../../../../src/retailOrg/enums/CollectorSeniorityEnum';
|
|
7
8
|
|
|
8
9
|
const valid = {
|
|
9
10
|
retailUserId: 'ru_001',
|
|
@@ -33,6 +34,35 @@ describe('RetailUser', () => {
|
|
|
33
34
|
expect(errors).toEqual([]);
|
|
34
35
|
});
|
|
35
36
|
|
|
37
|
+
it('valida sin los campos de cobrador (phone/collectorSeniority/coverageStoreIds ausentes)', async () => {
|
|
38
|
+
const dto = plainToInstance(RetailUser, valid);
|
|
39
|
+
const errors = await validate(dto);
|
|
40
|
+
expect(errors).toEqual([]);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('valida con los campos de cobrador presentes', async () => {
|
|
44
|
+
const dto = plainToInstance(RetailUser, {
|
|
45
|
+
...valid,
|
|
46
|
+
phone: '+528112345678',
|
|
47
|
+
collectorSeniority: CollectorSeniorityEnum.SENIOR,
|
|
48
|
+
coverageStoreIds: ['store_001', 'store_002'],
|
|
49
|
+
});
|
|
50
|
+
const errors = await validate(dto);
|
|
51
|
+
expect(errors).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('falla si collectorSeniority está fuera del enum', async () => {
|
|
55
|
+
const dto = plainToInstance(RetailUser, { ...valid, collectorSeniority: 'MASTER' });
|
|
56
|
+
const errors = await validate(dto);
|
|
57
|
+
expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('falla si coverageStoreIds no es un array de strings', async () => {
|
|
61
|
+
const dto = plainToInstance(RetailUser, { ...valid, coverageStoreIds: [1, 2] });
|
|
62
|
+
const errors = await validate(dto);
|
|
63
|
+
expect(errors.some(e => e.property === 'coverageStoreIds')).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
|
|
36
66
|
it('falla si employmentType está fuera del enum', async () => {
|
|
37
67
|
const dto = plainToInstance(RetailUser, { ...valid, employmentType: 'INTERN' });
|
|
38
68
|
const errors = await validate(dto);
|
|
@@ -8,7 +8,7 @@ import { RetailerStatusEnum } from '../../../../src/retailOrg/enums/RetailerStat
|
|
|
8
8
|
const valid = {
|
|
9
9
|
retailerId: 'ret_001',
|
|
10
10
|
parentId: 'ROOT',
|
|
11
|
-
type: RetailerTypeEnum.
|
|
11
|
+
type: RetailerTypeEnum.CHAIN,
|
|
12
12
|
name: 'Tiendas del Centro',
|
|
13
13
|
legalName: 'Tiendas del Centro SA de CV',
|
|
14
14
|
rfc: 'VEN123456ABC',
|
|
@@ -15,7 +15,7 @@ const valid = {
|
|
|
15
15
|
phone: '+528112345678',
|
|
16
16
|
managerRetailUserId: 'ru_010',
|
|
17
17
|
schedule: 'L-V 9:00-18:00',
|
|
18
|
-
|
|
18
|
+
dailyAvgCollectionsCount: 12,
|
|
19
19
|
status: StoreStatusEnum.ACTIVE,
|
|
20
20
|
createdAt: '2026-07-14T10:00:00.000Z',
|
|
21
21
|
updatedAt: '2026-07-14T10:00:00.000Z',
|
|
@@ -36,7 +36,7 @@ describe('Store', () => {
|
|
|
36
36
|
zoneId: null,
|
|
37
37
|
managerRetailUserId: null,
|
|
38
38
|
schedule: null,
|
|
39
|
-
|
|
39
|
+
dailyAvgCollectionsCount: null,
|
|
40
40
|
});
|
|
41
41
|
const errors = await validate(dto);
|
|
42
42
|
expect(errors).toEqual([]);
|
|
@@ -7,6 +7,7 @@ import { ChangeRetailUserStatusRequest } from '../../../../../src/retailOrg/dtos
|
|
|
7
7
|
import { TransferRetailUserRequest } from '../../../../../src/retailOrg/dtos/requests/TransferRetailUserRequest';
|
|
8
8
|
import { EmploymentTypeEnum } from '../../../../../src/retailOrg/enums/EmploymentTypeEnum';
|
|
9
9
|
import { RetailUserStatusEnum } from '../../../../../src/retailOrg/enums/RetailUserStatusEnum';
|
|
10
|
+
import { CollectorSeniorityEnum } from '../../../../../src/retailOrg/enums/CollectorSeniorityEnum';
|
|
10
11
|
|
|
11
12
|
const validCreate = {
|
|
12
13
|
cognitoSub: '5f7c8a90-1234-4abc-9def-0123456789ab',
|
|
@@ -29,6 +30,23 @@ describe('CreateRetailUserRequest', () => {
|
|
|
29
30
|
expect(errors).toEqual([]);
|
|
30
31
|
});
|
|
31
32
|
|
|
33
|
+
it('valida con los campos de cobrador presentes', async () => {
|
|
34
|
+
const dto = plainToInstance(CreateRetailUserRequest, {
|
|
35
|
+
...validCreate,
|
|
36
|
+
phone: '+528112345678',
|
|
37
|
+
collectorSeniority: CollectorSeniorityEnum.JUNIOR,
|
|
38
|
+
coverageStoreIds: ['store_001', 'store_002'],
|
|
39
|
+
});
|
|
40
|
+
const errors = await validate(dto);
|
|
41
|
+
expect(errors).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('falla si collectorSeniority está fuera del enum', async () => {
|
|
45
|
+
const dto = plainToInstance(CreateRetailUserRequest, { ...validCreate, collectorSeniority: 'MASTER' });
|
|
46
|
+
const errors = await validate(dto);
|
|
47
|
+
expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
|
|
48
|
+
});
|
|
49
|
+
|
|
32
50
|
it('falla si employmentType está fuera del enum', async () => {
|
|
33
51
|
const dto = plainToInstance(CreateRetailUserRequest, { ...validCreate, employmentType: 'INTERN' });
|
|
34
52
|
const errors = await validate(dto);
|
|
@@ -55,6 +73,22 @@ describe('UpdateRetailUserRequest', () => {
|
|
|
55
73
|
const errors = await validate(dto);
|
|
56
74
|
expect(errors.some(e => e.property === 'employmentType')).toBe(true);
|
|
57
75
|
});
|
|
76
|
+
|
|
77
|
+
it('valida con los campos de cobrador presentes', async () => {
|
|
78
|
+
const dto = plainToInstance(UpdateRetailUserRequest, {
|
|
79
|
+
phone: '+528112345678',
|
|
80
|
+
collectorSeniority: CollectorSeniorityEnum.SENIOR,
|
|
81
|
+
coverageStoreIds: ['store_003'],
|
|
82
|
+
});
|
|
83
|
+
const errors = await validate(dto);
|
|
84
|
+
expect(errors).toEqual([]);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('falla si collectorSeniority enviado está fuera del enum', async () => {
|
|
88
|
+
const dto = plainToInstance(UpdateRetailUserRequest, { collectorSeniority: 'MASTER' });
|
|
89
|
+
const errors = await validate(dto);
|
|
90
|
+
expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
|
|
91
|
+
});
|
|
58
92
|
});
|
|
59
93
|
|
|
60
94
|
describe('ChangeRetailUserStatusRequest', () => {
|
|
@@ -18,7 +18,7 @@ const address = {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
const validCreate = {
|
|
21
|
-
type: RetailerTypeEnum.
|
|
21
|
+
type: RetailerTypeEnum.CHAIN,
|
|
22
22
|
name: 'Tiendas del Centro',
|
|
23
23
|
legalName: 'Tiendas del Centro SA de CV',
|
|
24
24
|
rfc: 'VEN123456ABC',
|
|
@@ -91,7 +91,7 @@ describe('UpdateRetailerRequest', () => {
|
|
|
91
91
|
it('NO permite editar rfc/type/status (no están en el shape)', () => {
|
|
92
92
|
const dto = plainToInstance(
|
|
93
93
|
UpdateRetailerRequest,
|
|
94
|
-
{ rfc: 'X', type: '
|
|
94
|
+
{ rfc: 'X', type: 'CHAIN', status: 'ACTIVE' } as object,
|
|
95
95
|
{ excludeExtraneousValues: true },
|
|
96
96
|
);
|
|
97
97
|
expect((dto as unknown as Record<string, unknown>).rfc).toBeUndefined();
|
|
@@ -115,28 +115,28 @@ describe('ChangeRetailerStatusRequest', () => {
|
|
|
115
115
|
});
|
|
116
116
|
|
|
117
117
|
describe('CreateSubdistributorRequest', () => {
|
|
118
|
-
it('valida
|
|
118
|
+
it('valida SUBDISTRIBUTOR', async () => {
|
|
119
119
|
const dto = plainToInstance(CreateSubdistributorRequest, {
|
|
120
120
|
...validCreate,
|
|
121
|
-
type: RetailerTypeEnum.
|
|
121
|
+
type: RetailerTypeEnum.SUBDISTRIBUTOR,
|
|
122
122
|
});
|
|
123
123
|
const errors = await validate(dto);
|
|
124
124
|
expect(errors).toEqual([]);
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
it('valida
|
|
127
|
+
it('valida FRANCHISE', async () => {
|
|
128
128
|
const dto = plainToInstance(CreateSubdistributorRequest, {
|
|
129
129
|
...validCreate,
|
|
130
|
-
type: RetailerTypeEnum.
|
|
130
|
+
type: RetailerTypeEnum.FRANCHISE,
|
|
131
131
|
});
|
|
132
132
|
const errors = await validate(dto);
|
|
133
133
|
expect(errors).toEqual([]);
|
|
134
134
|
});
|
|
135
135
|
|
|
136
|
-
it('falla si type es
|
|
136
|
+
it('falla si type es CHAIN (un subdistribuidor no puede ser cadena raíz)', async () => {
|
|
137
137
|
const dto = plainToInstance(CreateSubdistributorRequest, {
|
|
138
138
|
...validCreate,
|
|
139
|
-
type: RetailerTypeEnum.
|
|
139
|
+
type: RetailerTypeEnum.CHAIN,
|
|
140
140
|
});
|
|
141
141
|
const errors = await validate(dto);
|
|
142
142
|
expect(errors.some(e => e.property === 'type')).toBe(true);
|
|
@@ -145,7 +145,7 @@ describe('CreateSubdistributorRequest', () => {
|
|
|
145
145
|
it('NO expone parentId (viene del path param)', () => {
|
|
146
146
|
const dto = plainToInstance(
|
|
147
147
|
CreateSubdistributorRequest,
|
|
148
|
-
{ ...validCreate, type: RetailerTypeEnum.
|
|
148
|
+
{ ...validCreate, type: RetailerTypeEnum.SUBDISTRIBUTOR, parentId: 'ret_root' } as object,
|
|
149
149
|
{ excludeExtraneousValues: true },
|
|
150
150
|
);
|
|
151
151
|
expect((dto as unknown as Record<string, unknown>).parentId).toBeUndefined();
|
|
@@ -24,7 +24,7 @@ const validCreate = {
|
|
|
24
24
|
phone: '+528112345678',
|
|
25
25
|
managerRetailUserId: 'ru_010',
|
|
26
26
|
schedule: 'L-V 9:00-18:00',
|
|
27
|
-
|
|
27
|
+
dailyAvgCollectionsCount: 12,
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
describe('CreateStoreRequest', () => {
|
|
@@ -40,7 +40,7 @@ describe('CreateStoreRequest', () => {
|
|
|
40
40
|
zoneId: null,
|
|
41
41
|
managerRetailUserId: null,
|
|
42
42
|
schedule: null,
|
|
43
|
-
|
|
43
|
+
dailyAvgCollectionsCount: null,
|
|
44
44
|
});
|
|
45
45
|
const errors = await validate(dto);
|
|
46
46
|
expect(errors).toEqual([]);
|
|
@@ -12,12 +12,12 @@ describe('ValidationDtos (shapes mínimos de endpoints privados)', () => {
|
|
|
12
12
|
const dto: RetailerValidationDto = {
|
|
13
13
|
retailerId: 'ret_001',
|
|
14
14
|
name: 'Tiendas del Centro',
|
|
15
|
-
type: RetailerTypeEnum.
|
|
15
|
+
type: RetailerTypeEnum.CHAIN,
|
|
16
16
|
status: RetailerStatusEnum.ACTIVE,
|
|
17
17
|
parentId: 'ROOT',
|
|
18
18
|
};
|
|
19
19
|
expect(dto.retailerId).toBe('ret_001');
|
|
20
|
-
expect(dto.type).toBe(RetailerTypeEnum.
|
|
20
|
+
expect(dto.type).toBe(RetailerTypeEnum.CHAIN);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
it('StoreValidationDto acepta el shape mínimo (zoneId nullable)', () => {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CollectorSeniorityEnum } from '../../../../src/retailOrg/enums/CollectorSeniorityEnum';
|
|
2
|
+
|
|
3
|
+
describe('CollectorSeniorityEnum', () => {
|
|
4
|
+
it('contiene exactamente los niveles del contrato con value === key', () => {
|
|
5
|
+
expect(CollectorSeniorityEnum.JUNIOR).toBe('JUNIOR');
|
|
6
|
+
expect(CollectorSeniorityEnum.SENIOR).toBe('SENIOR');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
it('no tiene valores de más', () => {
|
|
10
|
+
expect(Object.values(CollectorSeniorityEnum).sort()).toEqual(['JUNIOR', 'SENIOR']);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { RetailerTypeEnum } from '../../../../src/retailOrg/enums/RetailerTypeEnum';
|
|
2
2
|
|
|
3
3
|
describe('RetailerTypeEnum', () => {
|
|
4
|
-
it('contiene exactamente los tipos del contrato con value === key', () => {
|
|
5
|
-
expect(RetailerTypeEnum.
|
|
6
|
-
expect(RetailerTypeEnum.
|
|
7
|
-
expect(RetailerTypeEnum.
|
|
4
|
+
it('contiene exactamente los tipos del contrato con value === key (en inglés)', () => {
|
|
5
|
+
expect(RetailerTypeEnum.CHAIN).toBe('CHAIN');
|
|
6
|
+
expect(RetailerTypeEnum.SUBDISTRIBUTOR).toBe('SUBDISTRIBUTOR');
|
|
7
|
+
expect(RetailerTypeEnum.FRANCHISE).toBe('FRANCHISE');
|
|
8
8
|
});
|
|
9
9
|
|
|
10
10
|
it('no tiene valores de más', () => {
|
|
11
11
|
expect(Object.values(RetailerTypeEnum).sort()).toEqual(
|
|
12
|
-
['
|
|
12
|
+
['CHAIN', 'FRANCHISE', 'SUBDISTRIBUTOR'],
|
|
13
13
|
);
|
|
14
14
|
});
|
|
15
15
|
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BenefitFlowEnum } from "../enums/BenefitFlowEnum";
|
|
2
1
|
import { BenefitModuleConfigRequest } from "./BenefitModuleConfigRequest";
|
|
3
2
|
/** Mirror enum-like de BenefitCatalogStatus en el type-kit (para validación). */
|
|
4
3
|
export declare enum BenefitCatalogStatusEnum {
|
|
@@ -13,7 +12,7 @@ export declare class BenefitCreateRequest {
|
|
|
13
12
|
status: BenefitCatalogStatusEnum;
|
|
14
13
|
sortOrder: number;
|
|
15
14
|
icon?: string;
|
|
16
|
-
flow:
|
|
15
|
+
flow: string;
|
|
17
16
|
translationKey?: string;
|
|
18
17
|
moduleConfig: BenefitModuleConfigRequest;
|
|
19
18
|
/**
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.BenefitCreateRequest = exports.BenefitCatalogStatusEnum = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
|
-
const BenefitFlowEnum_1 = require("../enums/BenefitFlowEnum");
|
|
16
15
|
const BenefitModuleConfigRequest_1 = require("./BenefitModuleConfigRequest");
|
|
17
16
|
/** Mirror enum-like de BenefitCatalogStatus en el type-kit (para validación). */
|
|
18
17
|
var BenefitCatalogStatusEnum;
|
|
@@ -54,7 +53,8 @@ __decorate([
|
|
|
54
53
|
__metadata("design:type", String)
|
|
55
54
|
], BenefitCreateRequest.prototype, "icon", void 0);
|
|
56
55
|
__decorate([
|
|
57
|
-
(0, class_validator_1.
|
|
56
|
+
(0, class_validator_1.IsString)(),
|
|
57
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
58
58
|
__metadata("design:type", String)
|
|
59
59
|
], BenefitCreateRequest.prototype, "flow", void 0);
|
|
60
60
|
__decorate([
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { BenefitFlowEnum } from "../enums/BenefitFlowEnum";
|
|
2
1
|
import { BenefitCatalogStatusEnum } from "./BenefitCreateRequest";
|
|
3
2
|
import { BenefitModuleConfigRequest } from "./BenefitModuleConfigRequest";
|
|
4
3
|
export declare class BenefitUpdateRequest {
|
|
@@ -7,7 +6,7 @@ export declare class BenefitUpdateRequest {
|
|
|
7
6
|
status?: BenefitCatalogStatusEnum;
|
|
8
7
|
sortOrder?: number;
|
|
9
8
|
icon?: string;
|
|
10
|
-
flow?:
|
|
9
|
+
flow?: string;
|
|
11
10
|
translationKey?: string;
|
|
12
11
|
moduleConfig?: BenefitModuleConfigRequest;
|
|
13
12
|
/**
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.BenefitUpdateRequest = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
|
-
const BenefitFlowEnum_1 = require("../enums/BenefitFlowEnum");
|
|
16
15
|
const BenefitCreateRequest_1 = require("./BenefitCreateRequest");
|
|
17
16
|
const BenefitModuleConfigRequest_1 = require("./BenefitModuleConfigRequest");
|
|
18
17
|
class BenefitUpdateRequest {
|
|
@@ -46,7 +45,8 @@ __decorate([
|
|
|
46
45
|
], BenefitUpdateRequest.prototype, "icon", void 0);
|
|
47
46
|
__decorate([
|
|
48
47
|
(0, class_validator_1.IsOptional)(),
|
|
49
|
-
(0, class_validator_1.
|
|
48
|
+
(0, class_validator_1.IsString)(),
|
|
49
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
50
50
|
__metadata("design:type", String)
|
|
51
51
|
], BenefitUpdateRequest.prototype, "flow", void 0);
|
|
52
52
|
__decorate([
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FavoriteDisabledReasonEnum } from "../enums/FavoriteDisabledReasonEnum";
|
|
2
|
-
import { BenefitFlowEnum } from "../enums/BenefitFlowEnum";
|
|
3
2
|
/**
|
|
4
3
|
* Ítem que viaja en `GET /favorites`. Representa un favorito ACTIVO
|
|
5
4
|
* (la lista filtra `disabled=true` por default).
|
|
@@ -19,7 +18,7 @@ export declare class FavoriteItem {
|
|
|
19
18
|
lastAmount: number | null;
|
|
20
19
|
usageCount: number;
|
|
21
20
|
lastUsedAt: number;
|
|
22
|
-
flow?:
|
|
21
|
+
flow?: string;
|
|
23
22
|
destinationCountryISO?: string;
|
|
24
23
|
beneficiaryFirstName?: string;
|
|
25
24
|
beneficiaryLastName?: string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FlowTypeEnum } from "../enums/FlowTypeEnum";
|
|
2
|
+
import { FlowStatusEnum } from "../enums/FlowStatusEnum";
|
|
3
|
+
export declare class FlowSupportedProp {
|
|
4
|
+
name: string;
|
|
5
|
+
required: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface FlowResponse {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
reference: string;
|
|
11
|
+
type: FlowTypeEnum;
|
|
12
|
+
description?: string;
|
|
13
|
+
supportedProps: FlowSupportedProp[];
|
|
14
|
+
status: FlowStatusEnum;
|
|
15
|
+
sortOrder: number;
|
|
16
|
+
createdAt?: number;
|
|
17
|
+
updatedAt?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class FlowCreateRequest {
|
|
20
|
+
name: string;
|
|
21
|
+
reference: string;
|
|
22
|
+
type: FlowTypeEnum;
|
|
23
|
+
description?: string;
|
|
24
|
+
supportedProps?: FlowSupportedProp[];
|
|
25
|
+
status: FlowStatusEnum;
|
|
26
|
+
sortOrder: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class FlowUpdateRequest {
|
|
29
|
+
name?: string;
|
|
30
|
+
reference?: string;
|
|
31
|
+
type?: FlowTypeEnum;
|
|
32
|
+
description?: string;
|
|
33
|
+
supportedProps?: FlowSupportedProp[];
|
|
34
|
+
status?: FlowStatusEnum;
|
|
35
|
+
sortOrder?: number;
|
|
36
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FlowUpdateRequest = exports.FlowCreateRequest = exports.FlowSupportedProp = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
|
+
const FlowTypeEnum_1 = require("../enums/FlowTypeEnum");
|
|
16
|
+
const FlowStatusEnum_1 = require("../enums/FlowStatusEnum");
|
|
17
|
+
class FlowSupportedProp {
|
|
18
|
+
}
|
|
19
|
+
exports.FlowSupportedProp = FlowSupportedProp;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], FlowSupportedProp.prototype, "name", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsBoolean)(),
|
|
27
|
+
__metadata("design:type", Boolean)
|
|
28
|
+
], FlowSupportedProp.prototype, "required", void 0);
|
|
29
|
+
class FlowCreateRequest {
|
|
30
|
+
}
|
|
31
|
+
exports.FlowCreateRequest = FlowCreateRequest;
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsString)(),
|
|
34
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], FlowCreateRequest.prototype, "name", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsString)(),
|
|
39
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], FlowCreateRequest.prototype, "reference", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
(0, class_validator_1.IsEnum)(FlowTypeEnum_1.FlowTypeEnum),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], FlowCreateRequest.prototype, "type", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, class_validator_1.IsOptional)(),
|
|
48
|
+
(0, class_validator_1.IsString)(),
|
|
49
|
+
__metadata("design:type", String)
|
|
50
|
+
], FlowCreateRequest.prototype, "description", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, class_validator_1.IsOptional)(),
|
|
53
|
+
(0, class_validator_1.IsArray)(),
|
|
54
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
55
|
+
(0, class_transformer_1.Type)(() => FlowSupportedProp),
|
|
56
|
+
__metadata("design:type", Array)
|
|
57
|
+
], FlowCreateRequest.prototype, "supportedProps", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, class_validator_1.IsEnum)(FlowStatusEnum_1.FlowStatusEnum),
|
|
60
|
+
__metadata("design:type", String)
|
|
61
|
+
], FlowCreateRequest.prototype, "status", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
(0, class_validator_1.IsInt)(),
|
|
64
|
+
(0, class_validator_1.Min)(0),
|
|
65
|
+
__metadata("design:type", Number)
|
|
66
|
+
], FlowCreateRequest.prototype, "sortOrder", void 0);
|
|
67
|
+
class FlowUpdateRequest {
|
|
68
|
+
}
|
|
69
|
+
exports.FlowUpdateRequest = FlowUpdateRequest;
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, class_validator_1.IsOptional)(),
|
|
72
|
+
(0, class_validator_1.IsString)(),
|
|
73
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
74
|
+
__metadata("design:type", String)
|
|
75
|
+
], FlowUpdateRequest.prototype, "name", void 0);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, class_validator_1.IsOptional)(),
|
|
78
|
+
(0, class_validator_1.IsString)(),
|
|
79
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
80
|
+
__metadata("design:type", String)
|
|
81
|
+
], FlowUpdateRequest.prototype, "reference", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
(0, class_validator_1.IsOptional)(),
|
|
84
|
+
(0, class_validator_1.IsEnum)(FlowTypeEnum_1.FlowTypeEnum),
|
|
85
|
+
__metadata("design:type", String)
|
|
86
|
+
], FlowUpdateRequest.prototype, "type", void 0);
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, class_validator_1.IsOptional)(),
|
|
89
|
+
(0, class_validator_1.IsString)(),
|
|
90
|
+
__metadata("design:type", String)
|
|
91
|
+
], FlowUpdateRequest.prototype, "description", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, class_validator_1.IsOptional)(),
|
|
94
|
+
(0, class_validator_1.IsArray)(),
|
|
95
|
+
(0, class_validator_1.ValidateNested)({ each: true }),
|
|
96
|
+
(0, class_transformer_1.Type)(() => FlowSupportedProp),
|
|
97
|
+
__metadata("design:type", Array)
|
|
98
|
+
], FlowUpdateRequest.prototype, "supportedProps", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, class_validator_1.IsOptional)(),
|
|
101
|
+
(0, class_validator_1.IsEnum)(FlowStatusEnum_1.FlowStatusEnum),
|
|
102
|
+
__metadata("design:type", String)
|
|
103
|
+
], FlowUpdateRequest.prototype, "status", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, class_validator_1.IsOptional)(),
|
|
106
|
+
(0, class_validator_1.IsInt)(),
|
|
107
|
+
(0, class_validator_1.Min)(0),
|
|
108
|
+
__metadata("design:type", Number)
|
|
109
|
+
], FlowUpdateRequest.prototype, "sortOrder", void 0);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FlowStatusEnum = void 0;
|
|
4
|
+
var FlowStatusEnum;
|
|
5
|
+
(function (FlowStatusEnum) {
|
|
6
|
+
FlowStatusEnum["ACTIVE"] = "ACTIVE";
|
|
7
|
+
FlowStatusEnum["INACTIVE"] = "INACTIVE";
|
|
8
|
+
})(FlowStatusEnum || (exports.FlowStatusEnum = FlowStatusEnum = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FlowTypeEnum = void 0;
|
|
4
|
+
var FlowTypeEnum;
|
|
5
|
+
(function (FlowTypeEnum) {
|
|
6
|
+
/** Flujo del centro de beneficios — referenciable desde Beneficio y Banner. */
|
|
7
|
+
FlowTypeEnum["INTERNAL"] = "INTERNAL";
|
|
8
|
+
/** Flujo de otra funcionalidad de la app — solo referenciable desde Banner. */
|
|
9
|
+
FlowTypeEnum["EXTERNAL"] = "EXTERNAL";
|
|
10
|
+
})(FlowTypeEnum || (exports.FlowTypeEnum = FlowTypeEnum = {}));
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export * from "./enums/BenefitFlowEnum";
|
|
2
1
|
export * from "./enums/CatalogNodeTypeEnum";
|
|
3
2
|
export * from "./enums/InputFieldTypeEnum";
|
|
4
3
|
export * from "./enums/BannerContentTypeEnum";
|
|
@@ -12,6 +11,9 @@ export * from "./enums/BenefitPaymentStatusEnum";
|
|
|
12
11
|
export * from "./enums/BenefitPaymentErrorCodeEnum";
|
|
13
12
|
export * from "./enums/BannerAssetKindEnum";
|
|
14
13
|
export * from "./enums/LeafAssetKindEnum";
|
|
14
|
+
export * from "./enums/FlowTypeEnum";
|
|
15
|
+
export * from "./enums/FlowStatusEnum";
|
|
16
|
+
export * from "./dtos/FlowDtos";
|
|
15
17
|
export * from "./dtos/BenefitItem";
|
|
16
18
|
export * from "./dtos/BenefitListResponse";
|
|
17
19
|
export * from "./dtos/BenefitSummary";
|
|
@@ -15,7 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
//Enums
|
|
18
|
-
__exportStar(require("./enums/BenefitFlowEnum"), exports);
|
|
19
18
|
__exportStar(require("./enums/CatalogNodeTypeEnum"), exports);
|
|
20
19
|
__exportStar(require("./enums/InputFieldTypeEnum"), exports);
|
|
21
20
|
__exportStar(require("./enums/BannerContentTypeEnum"), exports);
|
|
@@ -29,6 +28,10 @@ __exportStar(require("./enums/BenefitPaymentStatusEnum"), exports);
|
|
|
29
28
|
__exportStar(require("./enums/BenefitPaymentErrorCodeEnum"), exports);
|
|
30
29
|
__exportStar(require("./enums/BannerAssetKindEnum"), exports);
|
|
31
30
|
__exportStar(require("./enums/LeafAssetKindEnum"), exports);
|
|
31
|
+
// Flows dinámicos
|
|
32
|
+
__exportStar(require("./enums/FlowTypeEnum"), exports);
|
|
33
|
+
__exportStar(require("./enums/FlowStatusEnum"), exports);
|
|
34
|
+
__exportStar(require("./dtos/FlowDtos"), exports);
|
|
32
35
|
//DTOs
|
|
33
36
|
__exportStar(require("./dtos/BenefitItem"), exports);
|
|
34
37
|
__exportStar(require("./dtos/BenefitListResponse"), exports);
|