Skip to content

Commit 2e41599

Browse files
authored
Merge pull request #283 from siberiacancode/#237b
#237 into main 🐘 fix fn comparator type, allow string for regExp comparator, better argument names for fn, haveEntries, inRange, regExp
2 parents d1cbcb1 + 0ed4b2f commit 2e41599

6 files changed

Lines changed: 32 additions & 29 deletions

File tree

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { Comparator } from '@/utils/types';
1+
import type { FnComparator } from '@/utils/helpers';
22

33
import { createComparator } from '@/utils/helpers';
44

5-
export const fn = (expected: Comparator) =>
6-
createComparator((actual, { fn }) => fn(actual, expected));
5+
export const fn = (comparator: FnComparator) =>
6+
createComparator((actual, { fn }) => fn(actual, createComparator(comparator)));

packages/server/src/core/entities/handlers/haveEntries.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@ import type { PlainObject } from '@/utils/types';
22

33
import { createComparator } from '@/utils/helpers';
44

5-
export const haveEntries = (expected: any[] | PlainObject) =>
6-
createComparator((actual, { haveEntries }) => haveEntries(actual, expected));
5+
export const haveEntries = (entry: any[] | PlainObject) =>
6+
createComparator((actual, { haveEntries }) => haveEntries(actual, entry));
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { HaveTypeTypes } from '@/utils/helpers';
1+
import type { HaveTypeType } from '@/utils/helpers';
22

33
import { createComparator } from '@/utils/helpers';
44

5-
export const haveType = (expected: HaveTypeTypes) =>
6-
createComparator((actual, { haveType }) => haveType(actual, expected));
5+
export const haveType = (type: HaveTypeType) =>
6+
createComparator((actual, { haveType }) => haveType(actual, type));
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { createComparator } from '@/utils/helpers';
22

3-
export const inRange = (expected: [number, number]) =>
4-
createComparator((actual, { inRange }) => inRange(actual, expected));
3+
export const inRange = (range: [number, number]) =>
4+
createComparator((actual, { inRange }) => inRange(actual, range));
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { createComparator } from '@/utils/helpers';
22

3-
export const regExp = (expected: RegExp) =>
4-
createComparator((actual, { regExp }) => regExp(actual, expected));
3+
export const regExp = (regExpLike: string | RegExp) =>
4+
createComparator((actual, { regExp }) => regExp(actual, regExpLike));

packages/server/src/utils/helpers/entities/resolveEntityValues/resolveEntityValues.ts

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ const compareComplex = (
5252
);
5353
};
5454

55-
export type HaveTypeTypes =
55+
export type FnComparator = <Actual = unknown>(actual: Actual, comparators: Comparators) => boolean;
56+
57+
export type HaveTypeType =
5658
| 'array'
5759
| 'bigint'
5860
| 'boolean'
@@ -65,7 +67,7 @@ export type HaveTypeTypes =
6567
| 'undefined';
6668

6769
const comparators = {
68-
fn: (actual: unknown, expected: Comparator) => expected(actual, comparators),
70+
fn: (actual: unknown, comparator: Comparator) => comparator(actual, comparators),
6971

7072
exists: (actual: unknown) => actual !== undefined,
7173

@@ -100,7 +102,8 @@ const comparators = {
100102
return false;
101103
},
102104

103-
regExp: (actual: unknown, expected: RegExp) => new RegExp(expected).test(String(actual)),
105+
regExp: (actual: unknown, regExpLike: string | RegExp) =>
106+
new RegExp(regExpLike).test(String(actual)),
104107

105108
greater: (actual: unknown, expected: number) => Number(actual) > expected,
106109

@@ -125,31 +128,31 @@ const comparators = {
125128
return actualLength <= expected;
126129
},
127130

128-
inRange: (actual: unknown, expected: [number, number]) => {
129-
const [min, max] = expected;
131+
inRange: (actual: unknown, range: [number, number]) => {
132+
const [min, max] = range;
130133
return Number(actual) >= min && Number(actual) <= max;
131134
},
132135

133-
haveType: (actual: unknown, expected: HaveTypeTypes) => {
134-
if (expected === 'array') return Array.isArray(actual);
135-
if (expected === 'null') return actual === null;
136+
haveType: (actual: unknown, type: HaveTypeType) => {
137+
if (type === 'array') return Array.isArray(actual);
138+
if (type === 'null') return actual === null;
136139
// eslint-disable-next-line valid-typeof
137-
return typeof actual === expected;
140+
return typeof actual === type;
138141
},
139142

140-
haveEntries: (actual: unknown, expected: any[] | PlainObject) => {
141-
if (!isObjectLike(actual) || !isObjectLike(expected)) {
143+
haveEntries: (actual: unknown, entry: any[] | PlainObject) => {
144+
if (!isObjectLike(actual) || !isObjectLike(entry)) {
142145
return false;
143146
}
144147

145-
const actualFlatten = normalize(actual);
146-
const expectedFlatten = normalize(expected);
148+
const flattenActual = normalize(actual);
149+
const flattenEntry = normalize(entry);
147150

148-
return Object.entries(expectedFlatten).every(([expectedFlattenKey, expectedValue]) => {
149-
if (isComparator(expectedValue)) {
150-
return comparators.fn(actualFlatten[expectedFlattenKey], expectedValue);
151+
return Object.entries(flattenEntry).every(([flattenEntryKey, flattenEntryValue]) => {
152+
if (isComparator(flattenEntryValue)) {
153+
return comparators.fn(flattenActual[flattenEntryKey], flattenEntryValue);
151154
}
152-
return comparators.equals(actualFlatten[expectedFlattenKey], expectedValue);
155+
return comparators.equals(flattenActual[flattenEntryKey], flattenEntryValue);
153156
});
154157
}
155158
};

0 commit comments

Comments
 (0)