@wisemen/address 0.2.3 → 0.2.4
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/dist/is-address.validator.d.ts +1 -0
- package/dist/is-address.validator.js +4 -2
- package/dist/is-address.validator.js.map +1 -1
- package/dist/tests/is-address.validator.unit.test.js +42 -0
- package/dist/tests/is-address.validator.unit.test.js.map +1 -1
- package/lib/is-address.validator.ts +5 -1
- package/lib/tests/is-address.validator.unit.test.ts +50 -0
- package/package.json +1 -1
|
@@ -7,5 +7,6 @@ export interface IsAddressValidationOptions extends ValidationOptions {
|
|
|
7
7
|
streetNumberRequired?: boolean;
|
|
8
8
|
unitRequired?: boolean;
|
|
9
9
|
coordinatesRequired?: boolean;
|
|
10
|
+
placeIdRequired?: boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function IsAddress(validationOptions?: IsAddressValidationOptions): PropertyDecorator;
|
|
@@ -16,7 +16,8 @@ export function IsAddress(validationOptions) {
|
|
|
16
16
|
streetNameRequired: validationOptions?.streetNameRequired ?? false,
|
|
17
17
|
streetNumberRequired: validationOptions?.streetNumberRequired ?? false,
|
|
18
18
|
unitRequired: validationOptions?.unitRequired ?? false,
|
|
19
|
-
coordinatesRequired: validationOptions?.coordinatesRequired ?? false
|
|
19
|
+
coordinatesRequired: validationOptions?.coordinatesRequired ?? false,
|
|
20
|
+
placeIdRequired: validationOptions?.placeIdRequired ?? false
|
|
20
21
|
}], validationOptions));
|
|
21
22
|
}
|
|
22
23
|
let IsAddressValidator = class IsAddressValidator {
|
|
@@ -33,7 +34,8 @@ let IsAddressValidator = class IsAddressValidator {
|
|
|
33
34
|
&& (!constraints.postalCodeRequired || address.postalCode != null)
|
|
34
35
|
&& (!constraints.streetNameRequired || address.streetName != null)
|
|
35
36
|
&& (!constraints.streetNumberRequired || address.streetNumber != null)
|
|
36
|
-
&& (!constraints.unitRequired || address.unit != null)
|
|
37
|
+
&& (!constraints.unitRequired || address.unit != null)
|
|
38
|
+
&& (!constraints.placeIdRequired || address.placeId != null);
|
|
37
39
|
}
|
|
38
40
|
defaultMessage(args) {
|
|
39
41
|
const constraints = args.constraints[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-address.validator.js","sourceRoot":"","sources":["../lib/is-address.validator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAwE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/J,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"is-address.validator.js","sourceRoot":"","sources":["../lib/is-address.validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,15 @@ __decorate([
|
|
|
32
32
|
}),
|
|
33
33
|
__metadata("design:type", AddressCommand)
|
|
34
34
|
], TestClassWithRequiredFields.prototype, "address", void 0);
|
|
35
|
+
class TestClassWithPlaceIdRequired {
|
|
36
|
+
address;
|
|
37
|
+
}
|
|
38
|
+
__decorate([
|
|
39
|
+
IsAddress({
|
|
40
|
+
placeIdRequired: true
|
|
41
|
+
}),
|
|
42
|
+
__metadata("design:type", AddressCommand)
|
|
43
|
+
], TestClassWithPlaceIdRequired.prototype, "address", void 0);
|
|
35
44
|
describe('IsAddress decorator test', () => {
|
|
36
45
|
it('should pass validation when the address has all fields', async () => {
|
|
37
46
|
const testInstance = new TestClass();
|
|
@@ -125,5 +134,38 @@ describe('IsAddress decorator test', () => {
|
|
|
125
134
|
const errors = await validate(testInstance);
|
|
126
135
|
expect(errors.length).toBeGreaterThan(0);
|
|
127
136
|
});
|
|
137
|
+
it('should fail validation when placeId is required but missing', async () => {
|
|
138
|
+
const testInstance = new TestClassWithPlaceIdRequired();
|
|
139
|
+
const addressCommand = new AddressCommand();
|
|
140
|
+
addressCommand.country = 'Belgium';
|
|
141
|
+
addressCommand.city = 'Brussels';
|
|
142
|
+
addressCommand.postalCode = '1000';
|
|
143
|
+
addressCommand.streetName = 'Main Street';
|
|
144
|
+
addressCommand.streetNumber = '123';
|
|
145
|
+
addressCommand.unit = null;
|
|
146
|
+
addressCommand.placeName = null;
|
|
147
|
+
addressCommand.placeId = null;
|
|
148
|
+
addressCommand.coordinates = null;
|
|
149
|
+
testInstance.address = addressCommand;
|
|
150
|
+
const errors = await validate(testInstance);
|
|
151
|
+
expect(errors.length).toBe(1);
|
|
152
|
+
expect(errors[0].constraints?.isAddress).toContain('placeIdRequired');
|
|
153
|
+
});
|
|
154
|
+
it('should pass validation when placeId is required and provided', async () => {
|
|
155
|
+
const testInstance = new TestClassWithPlaceIdRequired();
|
|
156
|
+
const addressCommand = new AddressCommand();
|
|
157
|
+
addressCommand.country = 'Belgium';
|
|
158
|
+
addressCommand.city = 'Brussels';
|
|
159
|
+
addressCommand.postalCode = '1000';
|
|
160
|
+
addressCommand.streetName = 'Main Street';
|
|
161
|
+
addressCommand.streetNumber = '123';
|
|
162
|
+
addressCommand.unit = null;
|
|
163
|
+
addressCommand.placeName = null;
|
|
164
|
+
addressCommand.placeId = 'ChIJN1t_tDeuEmsRUsoyG83frY4';
|
|
165
|
+
addressCommand.coordinates = null;
|
|
166
|
+
testInstance.address = addressCommand;
|
|
167
|
+
const errors = await validate(testInstance);
|
|
168
|
+
expect(errors.length).toBe(0);
|
|
169
|
+
});
|
|
128
170
|
});
|
|
129
171
|
//# sourceMappingURL=is-address.validator.unit.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-address.validator.unit.test.js","sourceRoot":"","sources":["../../lib/tests/is-address.validator.unit.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"is-address.validator.unit.test.js","sourceRoot":"","sources":["../../lib/tests/is-address.validator.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,7 @@ export interface IsAddressValidationOptions extends ValidationOptions {
|
|
|
11
11
|
streetNumberRequired?: boolean
|
|
12
12
|
unitRequired?: boolean
|
|
13
13
|
coordinatesRequired?: boolean
|
|
14
|
+
placeIdRequired?: boolean
|
|
14
15
|
}
|
|
15
16
|
|
|
16
17
|
export function IsAddress (
|
|
@@ -29,7 +30,8 @@ export function IsAddress (
|
|
|
29
30
|
streetNameRequired: validationOptions?.streetNameRequired ?? false,
|
|
30
31
|
streetNumberRequired: validationOptions?.streetNumberRequired ?? false,
|
|
31
32
|
unitRequired: validationOptions?.unitRequired ?? false,
|
|
32
|
-
coordinatesRequired: validationOptions?.coordinatesRequired ?? false
|
|
33
|
+
coordinatesRequired: validationOptions?.coordinatesRequired ?? false,
|
|
34
|
+
placeIdRequired: validationOptions?.placeIdRequired ?? false
|
|
33
35
|
}],
|
|
34
36
|
validationOptions
|
|
35
37
|
)
|
|
@@ -44,6 +46,7 @@ interface ValidatorConstraints {
|
|
|
44
46
|
streetNumberRequired: boolean
|
|
45
47
|
unitRequired: boolean
|
|
46
48
|
coordinatesRequired: boolean
|
|
49
|
+
placeIdRequired: boolean
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
@ValidatorConstraint({ name: 'isAddress', async: false })
|
|
@@ -65,6 +68,7 @@ class IsAddressValidator implements ValidatorConstraintInterface {
|
|
|
65
68
|
&& (!constraints.streetNameRequired || address.streetName != null)
|
|
66
69
|
&& (!constraints.streetNumberRequired || address.streetNumber != null)
|
|
67
70
|
&& (!constraints.unitRequired || address.unit != null)
|
|
71
|
+
&& (!constraints.placeIdRequired || address.placeId != null)
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
defaultMessage (args: ValidationArguments): string {
|
|
@@ -20,6 +20,13 @@ class TestClassWithRequiredFields {
|
|
|
20
20
|
address: AddressCommand
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
class TestClassWithPlaceIdRequired {
|
|
24
|
+
@IsAddress({
|
|
25
|
+
placeIdRequired: true
|
|
26
|
+
})
|
|
27
|
+
address: AddressCommand
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
describe('IsAddress decorator test', () => {
|
|
24
31
|
it('should pass validation when the address has all fields', async () => {
|
|
25
32
|
const testInstance = new TestClass()
|
|
@@ -141,4 +148,47 @@ describe('IsAddress decorator test', () => {
|
|
|
141
148
|
|
|
142
149
|
expect(errors.length).toBeGreaterThan(0)
|
|
143
150
|
})
|
|
151
|
+
|
|
152
|
+
it('should fail validation when placeId is required but missing', async () => {
|
|
153
|
+
const testInstance = new TestClassWithPlaceIdRequired()
|
|
154
|
+
const addressCommand = new AddressCommand()
|
|
155
|
+
|
|
156
|
+
addressCommand.country = 'Belgium'
|
|
157
|
+
addressCommand.city = 'Brussels'
|
|
158
|
+
addressCommand.postalCode = '1000'
|
|
159
|
+
addressCommand.streetName = 'Main Street'
|
|
160
|
+
addressCommand.streetNumber = '123'
|
|
161
|
+
addressCommand.unit = null
|
|
162
|
+
addressCommand.placeName = null
|
|
163
|
+
addressCommand.placeId = null
|
|
164
|
+
addressCommand.coordinates = null
|
|
165
|
+
|
|
166
|
+
testInstance.address = addressCommand
|
|
167
|
+
|
|
168
|
+
const errors = await validate(testInstance)
|
|
169
|
+
|
|
170
|
+
expect(errors.length).toBe(1)
|
|
171
|
+
expect(errors[0].constraints?.isAddress).toContain('placeIdRequired')
|
|
172
|
+
})
|
|
173
|
+
|
|
174
|
+
it('should pass validation when placeId is required and provided', async () => {
|
|
175
|
+
const testInstance = new TestClassWithPlaceIdRequired()
|
|
176
|
+
const addressCommand = new AddressCommand()
|
|
177
|
+
|
|
178
|
+
addressCommand.country = 'Belgium'
|
|
179
|
+
addressCommand.city = 'Brussels'
|
|
180
|
+
addressCommand.postalCode = '1000'
|
|
181
|
+
addressCommand.streetName = 'Main Street'
|
|
182
|
+
addressCommand.streetNumber = '123'
|
|
183
|
+
addressCommand.unit = null
|
|
184
|
+
addressCommand.placeName = null
|
|
185
|
+
addressCommand.placeId = 'ChIJN1t_tDeuEmsRUsoyG83frY4'
|
|
186
|
+
addressCommand.coordinates = null
|
|
187
|
+
|
|
188
|
+
testInstance.address = addressCommand
|
|
189
|
+
|
|
190
|
+
const errors = await validate(testInstance)
|
|
191
|
+
|
|
192
|
+
expect(errors.length).toBe(0)
|
|
193
|
+
})
|
|
144
194
|
})
|