Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 3x 3x 3x 68x 68x 68x 68x 68x 1x 67x 67x 365x 365x 365x 365x 364x 294x 67x 544x 522x 480x 480x 480x 438x 3x 3x 3x 67x 67x 3x | import { expect } from "@jest/globals";
import type { MatcherFunction } from "expect";
import { ReceivedRow } from "../row/ReceivedRow";
export const receivedEqual: MatcherFunction<[expected: { [index: string]: string | number | null }]> =
function (actualUnknown: unknown, expected: { [index: string]: string | number | null }) {
const actual = actualUnknown as ReceivedRow;
let passed = true;
const messages: string[] = [];
try {
if (typeof actual !== "object" || actual == null) {
return {
message: () => "Actual is not an object",
pass: false,
};
}
Iif (typeof expected !== "object" || expected == null) {
return {
message: () => "Expected is not an object",
pass: false,
};
}
for (const [field, value] of Object.entries(expected)) {
Iif (field === "date") continue;
Iif (field === "postFix") continue;
Iif (field === "valueInternal") continue;
if (value === null && actual[field]?.toString() === "null") continue;
if (typeof value === "number" && value.toString() === actual[field]?.toString()) continue;
Eif (typeof value === "string" && value === actual[field]?.toString()) continue;
messages.push("actual: " + field + " = " + actual[field]);
messages.push("expected: " + field + " = " + value);
passed = false;
}
for (const field in actual) {
if (field === "date") continue;
if (field === "onGetUrl") continue;
Iif (field === "setField") continue;
Iif (field === "postFix") continue;
if (field === "valueInternal") continue;
// If a field in value is non-null/empty there must also be a field in expected
if (actual[field] && actual[field].toString() && expected[field] === undefined) {
messages.push("actual: " + field + " = " + actual[field]);
messages.push("expected: " + field + " = " + expected[field]);
passed = false;
}
}
}
catch (e: unknown) {
console.log(e);
}
if (messages.length === 0) { messages.push("Received rows are equal"); }
return {
message: () => messages.join("\n"),
pass: passed
};
};
expect.extend({ receivedEqual, });
declare module "expect" {
interface Matchers<R> {
receivedEqual(expected: { [index: string]: string | number | null }): R;
}
} |