aboutsummaryrefslogtreecommitdiff
path: root/packages/web-util/src/tests/mock.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/web-util/src/tests/mock.ts')
-rw-r--r--packages/web-util/src/tests/mock.ts46
1 files changed, 38 insertions, 8 deletions
diff --git a/packages/web-util/src/tests/mock.ts b/packages/web-util/src/tests/mock.ts
index 563e437e5..115994cbd 100644
--- a/packages/web-util/src/tests/mock.ts
+++ b/packages/web-util/src/tests/mock.ts
@@ -48,8 +48,10 @@ type ExpectationValues = {
query: Query<any, any>;
auth?: string;
params?: {
+ // eslint-disable-next-line @typescript-eslint/ban-types
request?: object;
qparam?: Record<string, string>;
+ // eslint-disable-next-line @typescript-eslint/ban-types
response?: object;
};
};
@@ -59,7 +61,7 @@ type TestValues = {
lastQuery: ExpectationValues | undefined;
};
-const logger = new Logger("testing/swr.ts");
+const logger = new Logger("testing/mock.ts");
export abstract class MockEnvironment {
expectations: Array<ExpectationValues> = [];
@@ -69,11 +71,13 @@ export abstract class MockEnvironment {
debug: boolean;
constructor(debug: boolean) {
this.debug = debug;
- this.registerRequest.bind(this);
+ this.saveRequestAndGetMockedResponse.bind(this);
}
public addRequestExpectation<
+ // eslint-disable-next-line @typescript-eslint/ban-types
RequestType extends object,
+ // eslint-disable-next-line @typescript-eslint/ban-types
ResponseType extends object,
>(
query: Query<RequestType, ResponseType>,
@@ -89,13 +93,12 @@ export abstract class MockEnvironment {
if (this.debug) {
logger.info("saving query as expected", expected);
}
- this.mockApiIfNeeded();
}
- abstract mockApiIfNeeded(): void;
-
- public registerRequest<
+ public saveRequestAndGetMockedResponse<
+ // eslint-disable-next-line @typescript-eslint/ban-types
RequestType extends object,
+ // eslint-disable-next-line @typescript-eslint/ban-types
ResponseType extends object,
>(
query: Query<RequestType, ResponseType>,
@@ -167,8 +170,8 @@ export abstract class MockEnvironment {
};
}
- private assertNextRequest(idx: number): AssertStatus {
- const { currentExpectedQuery, lastQuery } = this.getLastTestValues(idx);
+ private assertNextRequest(index: number): AssertStatus {
+ const { currentExpectedQuery, lastQuery } = this.getLastTestValues(index);
if (!currentExpectedQuery) {
return {
@@ -194,6 +197,9 @@ export abstract class MockEnvironment {
return {
result: "error-difference",
diff: "url",
+ last: lastQuery.query.url,
+ expected: currentExpectedQuery.query.url,
+ index,
};
}
}
@@ -206,6 +212,9 @@ export abstract class MockEnvironment {
return {
result: "error-difference",
diff: "query-body",
+ expected: currentExpectedQuery.params?.request,
+ last: lastQuery.params?.request,
+ index,
};
}
if (
@@ -214,12 +223,18 @@ export abstract class MockEnvironment {
return {
result: "error-difference",
diff: "query-params",
+ expected: currentExpectedQuery.params?.qparam,
+ last: lastQuery.params?.qparam,
+ index,
};
}
if (!deepEquals(currentExpectedQuery.auth, lastQuery.auth)) {
return {
result: "error-difference",
diff: "query-auth",
+ expected: currentExpectedQuery.auth,
+ last: lastQuery.auth,
+ index,
};
}
@@ -269,18 +284,30 @@ interface AssertExpectedQueryMethodMismatch {
interface AssertExpectedQueryUrlMismatch {
result: "error-difference";
diff: "url";
+ last: string;
+ expected: string;
+ index: number;
}
interface AssertExpectedQueryAuthMismatch {
result: "error-difference";
diff: "query-auth";
+ last: string | undefined;
+ expected: string | undefined;
+ index: number;
}
interface AssertExpectedQueryBodyMismatch {
result: "error-difference";
diff: "query-body";
+ last: any;
+ expected: any;
+ index: number;
}
interface AssertExpectedQueryParamsMismatch {
result: "error-difference";
diff: "query-params";
+ last: any;
+ expected: any;
+ index: number;
}
/**
@@ -383,7 +410,9 @@ function deepEquals(
let keyIterator: string;
while (keySize--) {
+ // eslint-disable-next-line @typescript-eslint/ban-types
const _a = a as Record<string, object>;
+ // eslint-disable-next-line @typescript-eslint/ban-types
const _b = b as Record<string, object>;
keyIterator = aKeys[keySize];
@@ -400,6 +429,7 @@ function deepEquals(
return true;
}
+// eslint-disable-next-line @typescript-eslint/ban-types
function allKeysFromObject(obj: object): Array<string> {
const keys = [];
for (const key in obj) {