@nestia/e2e 7.0.1 → 7.0.2
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/lib/TestValidator.d.ts +33 -1
- package/lib/TestValidator.js +45 -0
- package/lib/TestValidator.js.map +1 -1
- package/lib/internal/json_equal_to.d.ts +1 -1
- package/lib/internal/json_equal_to.js.map +1 -1
- package/package.json +1 -1
- package/src/TestValidator.ts +47 -1
- package/src/internal/json_equal_to.ts +1 -1
package/lib/TestValidator.d.ts
CHANGED
|
@@ -81,7 +81,39 @@ export declare namespace TestValidator {
|
|
|
81
81
|
* actual value
|
|
82
82
|
* @throws Error with detailed diff information when values are not equal
|
|
83
83
|
*/
|
|
84
|
-
const equals: (title: string, exception?: (key: string) => boolean) => <T>(x: T) => (y: T) => void;
|
|
84
|
+
const equals: (title: string, exception?: (key: string) => boolean) => <T>(x: T) => (y: T | null | undefined) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Validates deep inequality between two values using JSON comparison.
|
|
87
|
+
*
|
|
88
|
+
* Performs recursive comparison of objects and arrays to ensure they are NOT
|
|
89
|
+
* equal. Supports an optional exception filter to ignore specific keys during
|
|
90
|
+
* comparison. Useful for validating that data has changed, objects are
|
|
91
|
+
* different, or mutations have occurred.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* // Basic inequality
|
|
96
|
+
* TestValidator.notEquals("user should be different after update")(originalUser)(updatedUser);
|
|
97
|
+
*
|
|
98
|
+
* // Ignore timestamps in comparison
|
|
99
|
+
* TestValidator.notEquals("user data should differ", (key) => key === "updatedAt")(
|
|
100
|
+
* originalUser
|
|
101
|
+
* )(modifiedUser);
|
|
102
|
+
*
|
|
103
|
+
* // Validate state changes
|
|
104
|
+
* const validateStateChange = TestValidator.notEquals("state should have changed");
|
|
105
|
+
* validateStateChange(initialState)(currentState);
|
|
106
|
+
* ```;
|
|
107
|
+
*
|
|
108
|
+
* @param title - Descriptive title used in error messages when values are
|
|
109
|
+
* equal
|
|
110
|
+
* @param exception - Optional filter function to exclude specific keys from
|
|
111
|
+
* comparison
|
|
112
|
+
* @returns A currying function chain: first accepts expected value, then
|
|
113
|
+
* actual value
|
|
114
|
+
* @throws Error when values are equal (indicating validation failure)
|
|
115
|
+
*/
|
|
116
|
+
const notEquals: (title: string, exception?: (key: string) => boolean) => <T>(x: T) => (y: T | null | undefined) => void;
|
|
85
117
|
/**
|
|
86
118
|
* Validates that a function throws an error or rejects when executed.
|
|
87
119
|
*
|
package/lib/TestValidator.js
CHANGED
|
@@ -204,6 +204,51 @@ var TestValidator;
|
|
|
204
204
|
};
|
|
205
205
|
};
|
|
206
206
|
};
|
|
207
|
+
/**
|
|
208
|
+
* Validates deep inequality between two values using JSON comparison.
|
|
209
|
+
*
|
|
210
|
+
* Performs recursive comparison of objects and arrays to ensure they are NOT
|
|
211
|
+
* equal. Supports an optional exception filter to ignore specific keys during
|
|
212
|
+
* comparison. Useful for validating that data has changed, objects are
|
|
213
|
+
* different, or mutations have occurred.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* // Basic inequality
|
|
218
|
+
* TestValidator.notEquals("user should be different after update")(originalUser)(updatedUser);
|
|
219
|
+
*
|
|
220
|
+
* // Ignore timestamps in comparison
|
|
221
|
+
* TestValidator.notEquals("user data should differ", (key) => key === "updatedAt")(
|
|
222
|
+
* originalUser
|
|
223
|
+
* )(modifiedUser);
|
|
224
|
+
*
|
|
225
|
+
* // Validate state changes
|
|
226
|
+
* const validateStateChange = TestValidator.notEquals("state should have changed");
|
|
227
|
+
* validateStateChange(initialState)(currentState);
|
|
228
|
+
* ```;
|
|
229
|
+
*
|
|
230
|
+
* @param title - Descriptive title used in error messages when values are
|
|
231
|
+
* equal
|
|
232
|
+
* @param exception - Optional filter function to exclude specific keys from
|
|
233
|
+
* comparison
|
|
234
|
+
* @returns A currying function chain: first accepts expected value, then
|
|
235
|
+
* actual value
|
|
236
|
+
* @throws Error when values are equal (indicating validation failure)
|
|
237
|
+
*/
|
|
238
|
+
TestValidator.notEquals = function (title, exception) {
|
|
239
|
+
if (exception === void 0) { exception = function () { return false; }; }
|
|
240
|
+
return function (x) {
|
|
241
|
+
return function (y) {
|
|
242
|
+
var diff = (0, json_equal_to_1.json_equal_to)(exception)(x)(y);
|
|
243
|
+
if (diff.length === 0)
|
|
244
|
+
throw new Error([
|
|
245
|
+
"Bug on ".concat(title, ": values should be different but are equal:"),
|
|
246
|
+
"\n",
|
|
247
|
+
JSON.stringify({ x: x, y: y }, null, 2),
|
|
248
|
+
].join("\n"));
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
};
|
|
207
252
|
/**
|
|
208
253
|
* Validates that a function throws an error or rejects when executed.
|
|
209
254
|
*
|
package/lib/TestValidator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAoD;AACpD,0DAAyD;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,IAAiB,aAAa,
|
|
1
|
+
{"version":3,"file":"TestValidator.js","sourceRoot":"","sources":["../src/TestValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const json_equal_to: (exception: (key: string) => boolean) => <T>(x: T) => (y: T) => string[];
|
|
1
|
+
export declare const json_equal_to: (exception: (key: string) => boolean) => <T>(x: T) => (y: T | null | undefined) => string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json_equal_to.js","sourceRoot":"","sources":["../../src/internal/json_equal_to.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAa,GACxB,UAAC,SAAmC;IACpC,OAAA,UAAI,CAAI;QACR,OAAA,UAAC,
|
|
1
|
+
{"version":3,"file":"json_equal_to.js","sourceRoot":"","sources":["../../src/internal/json_equal_to.ts"],"names":[],"mappings":";;;AAAO,IAAM,aAAa,GACxB,UAAC,SAAmC;IACpC,OAAA,UAAI,CAAI;QACR,OAAA,UAAC,CAAuB;YACtB,IAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAM,OAAO,GACX,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAM;oBACP,OAAA,UAAC,CAAM;wBACL,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,UAAU;4BAAE,OAAO;6BAC1D,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;4BAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACpD,IAAI,CAAC,YAAY,KAAK;4BACzB,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC;gCAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;gCAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BACxB,IAAI,CAAC,YAAY,MAAM;4BAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;6BAChD,IAAI,CAAC,KAAK,CAAC;4BAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,CAAC;gBARD,CAQC;YATD,CASC,CAAC;YACJ,IAAM,KAAK,GACT,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAQ;oBACT,OAAA,UAAC,CAAQ;wBACP,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;4BAAE,SAAS,CAAC,IAAI,CAAC,UAAG,QAAQ,YAAS,CAAC,CAAC;wBAChE,CAAC,CAAC,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,OAAA,OAAO,CAAC,UAAG,QAAQ,cAAI,CAAC,MAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAAC;oBACrE,CAAC;gBAHD,CAGC;YAJD,CAIC,CAAC;YACJ,IAAM,MAAM,GACV,UAAC,QAAgB;gBACjB,OAAA,UAAC,CAAM;oBACP,OAAA,UAAC,CAAM;wBACL,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;6BACX,MAAM,CAAC,UAAC,GAAG,IAAK,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAvC,CAAuC,CAAC;6BACxD,OAAO,CAAC,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,UAAG,QAAQ,cAAI,GAAG,CAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAA7C,CAA6C,CAAC;oBAFlE,CAEkE;gBAHpE,CAGoE;YAJpE,CAIoE,CAAC;YAEvE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;IA/BD,CA+BC;AAhCD,CAgCC,CAAC;AAlCS,QAAA,aAAa,iBAkCtB"}
|
package/package.json
CHANGED
package/src/TestValidator.ts
CHANGED
|
@@ -118,7 +118,7 @@ export namespace TestValidator {
|
|
|
118
118
|
export const equals =
|
|
119
119
|
(title: string, exception: (key: string) => boolean = () => false) =>
|
|
120
120
|
<T>(x: T) =>
|
|
121
|
-
(y: T) => {
|
|
121
|
+
(y: T | null | undefined) => {
|
|
122
122
|
const diff: string[] = json_equal_to(exception)(x)(y);
|
|
123
123
|
if (diff.length)
|
|
124
124
|
throw new Error(
|
|
@@ -130,6 +130,52 @@ export namespace TestValidator {
|
|
|
130
130
|
);
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Validates deep inequality between two values using JSON comparison.
|
|
135
|
+
*
|
|
136
|
+
* Performs recursive comparison of objects and arrays to ensure they are NOT
|
|
137
|
+
* equal. Supports an optional exception filter to ignore specific keys during
|
|
138
|
+
* comparison. Useful for validating that data has changed, objects are
|
|
139
|
+
* different, or mutations have occurred.
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* // Basic inequality
|
|
144
|
+
* TestValidator.notEquals("user should be different after update")(originalUser)(updatedUser);
|
|
145
|
+
*
|
|
146
|
+
* // Ignore timestamps in comparison
|
|
147
|
+
* TestValidator.notEquals("user data should differ", (key) => key === "updatedAt")(
|
|
148
|
+
* originalUser
|
|
149
|
+
* )(modifiedUser);
|
|
150
|
+
*
|
|
151
|
+
* // Validate state changes
|
|
152
|
+
* const validateStateChange = TestValidator.notEquals("state should have changed");
|
|
153
|
+
* validateStateChange(initialState)(currentState);
|
|
154
|
+
* ```;
|
|
155
|
+
*
|
|
156
|
+
* @param title - Descriptive title used in error messages when values are
|
|
157
|
+
* equal
|
|
158
|
+
* @param exception - Optional filter function to exclude specific keys from
|
|
159
|
+
* comparison
|
|
160
|
+
* @returns A currying function chain: first accepts expected value, then
|
|
161
|
+
* actual value
|
|
162
|
+
* @throws Error when values are equal (indicating validation failure)
|
|
163
|
+
*/
|
|
164
|
+
export const notEquals =
|
|
165
|
+
(title: string, exception: (key: string) => boolean = () => false) =>
|
|
166
|
+
<T>(x: T) =>
|
|
167
|
+
(y: T | null | undefined) => {
|
|
168
|
+
const diff: string[] = json_equal_to(exception)(x)(y);
|
|
169
|
+
if (diff.length === 0)
|
|
170
|
+
throw new Error(
|
|
171
|
+
[
|
|
172
|
+
`Bug on ${title}: values should be different but are equal:`,
|
|
173
|
+
"\n",
|
|
174
|
+
JSON.stringify({ x, y }, null, 2),
|
|
175
|
+
].join("\n"),
|
|
176
|
+
);
|
|
177
|
+
};
|
|
178
|
+
|
|
133
179
|
/**
|
|
134
180
|
* Validates that a function throws an error or rejects when executed.
|
|
135
181
|
*
|