Skip to content

Commit

Permalink
types(vest): simplify test overload
Browse files Browse the repository at this point in the history
  • Loading branch information
ealush committed Aug 17, 2022
1 parent bae4411 commit 3ae44e8
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 22 deletions.
1 change: 0 additions & 1 deletion packages/vest/src/core/suite/create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import { initBus, Events } from 'vestBus';
*/
function create<T extends CB>(suiteName: SuiteName, suiteCallback: T): Suite<T>;
function create<T extends CB>(suiteCallback: T): Suite<T>;
// eslint-disable-next-line max-lines-per-function
function create<T extends CB>(
...args: [suiteName: SuiteName, suiteCallback: T] | [suiteCallback: T]
): Suite<T> {
Expand Down
37 changes: 18 additions & 19 deletions packages/vest/src/core/test/test.memo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,15 @@ import registerPrevRunTest from 'registerPrevRunTest';
import { useSuiteId } from 'stateHooks';
import type { TestBase } from 'test';

export default function bindTestMemo(test: TestBase): {
(fieldName: string, test: TestFn, deps: unknown[]): VestTest;
(fieldName: string, message: string, test: TestFn, deps: unknown[]): VestTest;
} {
export default function testMemo(test: TestBase): TestMemo {
const cache = createCache(10); // arbitrary cache size

/**
* Caches a test result based on the test's dependencies.
*/
function memo(
fieldName: string,
...args: [test: TestFn, deps: unknown[]]
): VestTest;
function memo(
fieldName: string,
...args: [message: string, test: TestFn, deps: unknown[]]
): VestTest;
// eslint-disable-next-line max-statements
function memo(
fieldName: string,
...args:
| [message: string, test: TestFn, deps: unknown[]]
| [test: TestFn, deps: unknown[]]
): VestTest {
function memo(fieldName: string, ...args: ParametersWithoutMessage): VestTest;
function memo(fieldName: string, ...args: ParametersWithMessage): VestTest;
function memo(fieldName: string, ...args: ParamsOverload): VestTest {
const cursorAt = useCursor().current();

const [deps, testFn, msg] = args.reverse() as [any[], TestFn, string];
Expand All @@ -56,3 +41,17 @@ export default function bindTestMemo(test: TestBase): {

return memo;
}

type TestMemo = {
(fieldName: string, ...args: ParametersWithoutMessage): VestTest;
(fieldName: string, ...args: ParametersWithMessage): VestTest;
};

type ParametersWithoutMessage = [test: TestFn, dependencies: unknown[]];
type ParametersWithMessage = [
message: string,
test: TestFn,
dependencies: unknown[]
];

type ParamsOverload = ParametersWithoutMessage | ParametersWithMessage;
5 changes: 3 additions & 2 deletions packages/vest/src/core/test/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
import VestTest, { TestFn } from 'VestTest';
import ctx from 'ctx';
import registerPrevRunTest from 'registerPrevRunTest';
import bindTestMemo from 'test.memo';
import testMemo from 'test.memo';

function testBase(fieldName: string, message: string, cb: TestFn): VestTest;
function testBase(fieldName: string, cb: TestFn): VestTest;
Expand Down Expand Up @@ -42,6 +42,7 @@ function testBase(
);

const context = ctx.useX();

const testObject = new VestTest(fieldName, testFn, {
message,
groupName: context.groupName,
Expand All @@ -61,7 +62,7 @@ function testBase(
* });
*/
export const test = assign(testBase, {
memo: bindTestMemo(testBase),
memo: testMemo(testBase),
});

export type TestBase = typeof testBase;
Expand Down

1 comment on commit 3ae44e8

@vercel
Copy link

@vercel vercel bot commented on 3ae44e8 Aug 17, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

vest-next – ./website

vest-website.vercel.app
vest-next.vercel.app
vest-next-git-latest-ealush.vercel.app
vest-next-ealush.vercel.app

Please sign in to comment.