From 249c5991e05f673c8238d6df5e2f049413473d90 Mon Sep 17 00:00:00 2001 From: Evyatar Date: Tue, 11 Jul 2023 00:18:27 +0300 Subject: [PATCH] patch(vest): use state property in test instead of state machine --- .../core/isolate/IsolateTest/IsolateTest.ts | 4 +-- .../IsolateTest/IsolateTestStateMachine.ts | 6 ++-- .../isolate/IsolateTest/VestTestInspector.ts | 2 +- .../isolate/IsolateTest/VestTestMutator.ts | 32 ++++++++++++++----- .../__snapshots__/IsolateTest.test.ts.snap | 10 ++---- .../__tests__/__snapshots__/test.test.ts.snap | 20 +++--------- 6 files changed, 36 insertions(+), 38 deletions(-) diff --git a/packages/vest/src/core/isolate/IsolateTest/IsolateTest.ts b/packages/vest/src/core/isolate/IsolateTest/IsolateTest.ts index 069a4402f..f4605b1f9 100644 --- a/packages/vest/src/core/isolate/IsolateTest/IsolateTest.ts +++ b/packages/vest/src/core/isolate/IsolateTest/IsolateTest.ts @@ -1,7 +1,7 @@ import { Maybe, seq } from 'vest-utils'; import { Isolate, IsolateKey, IsolateMutator } from 'vestjs-runtime'; -import { createTestStateMachine } from 'IsolateTestStateMachine'; +import { TestStatus } from 'IsolateTestStateMachine'; import { TestSeverity } from 'Severity'; import { TFieldName, TGroupName } from 'SuiteResultTypes'; import { TestFn, AsyncTest } from 'TestTypes'; @@ -29,7 +29,7 @@ export class IsolateTest< id = seq(); severity = TestSeverity.Error; type = VestIsolateType.Test; - stateMachine = createTestStateMachine(); + status: TestStatus = TestStatus.UNTESTED; constructor({ fieldName, diff --git a/packages/vest/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts b/packages/vest/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts index f6db0ebc4..b185270f8 100644 --- a/packages/vest/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts +++ b/packages/vest/src/core/isolate/IsolateTest/IsolateTestStateMachine.ts @@ -15,14 +15,14 @@ export enum TestAction { RESET = 'RESET', } -type TAction = TestAction | TestStatus; +export type TestStateMachineAction = TestAction | TestStatus; export function createTestStateMachine() { - return StateMachine(machine); + return StateMachine(machine); } /* eslint-disable sort-keys */ -const machine: TStateMachine = { +const machine: TStateMachine = { initial: TestStatus.UNTESTED, states: { '*': { diff --git a/packages/vest/src/core/isolate/IsolateTest/VestTestInspector.ts b/packages/vest/src/core/isolate/IsolateTest/VestTestInspector.ts index 034211061..c744da422 100644 --- a/packages/vest/src/core/isolate/IsolateTest/VestTestInspector.ts +++ b/packages/vest/src/core/isolate/IsolateTest/VestTestInspector.ts @@ -76,6 +76,6 @@ export class VestTestInspector { } static statusEquals(test: IsolateTest, status: TestStatus): boolean { - return test.stateMachine.getState() === status; + return test.status === status; } } diff --git a/packages/vest/src/core/isolate/IsolateTest/VestTestMutator.ts b/packages/vest/src/core/isolate/IsolateTest/VestTestMutator.ts index 491634467..9f69673b7 100644 --- a/packages/vest/src/core/isolate/IsolateTest/VestTestMutator.ts +++ b/packages/vest/src/core/isolate/IsolateTest/VestTestMutator.ts @@ -1,21 +1,29 @@ import { IsolateTest } from 'IsolateTest'; -import { TestAction, TestStatus } from 'IsolateTestStateMachine'; +import { + TestAction, + TestStateMachineAction, + TestStatus, + createTestStateMachine, +} from 'IsolateTestStateMachine'; import { TestSeverity } from 'Severity'; import { VestTestInspector } from 'VestTestInspector'; +const TestStateMachine = createTestStateMachine(); + export class VestTestMutator { static setPending(test: IsolateTest) { - test.stateMachine.transition(TestStatus.PENDING); + VestTestMutator.setStatus(test, TestStatus.PENDING); } static fail(test: IsolateTest): void { - test.stateMachine.transition( + VestTestMutator.setStatus( + test, VestTestInspector.warns(test) ? TestStatus.WARNING : TestStatus.FAILED ); } static pass(test: IsolateTest): void { - test.stateMachine.transition(TestStatus.PASSING); + VestTestMutator.setStatus(test, TestStatus.PASSING); } static warn(test: IsolateTest): void { @@ -33,18 +41,26 @@ export class VestTestMutator { // is when we specifically skip a test with `skipWhen`, which is handled by the // "force" boolean flag. // I am not a fan of this flag, but it gets the job done. - test.stateMachine.transition(TestStatus.SKIPPED, force); + VestTestMutator.setStatus(test, TestStatus.SKIPPED, force); } static cancel(test: IsolateTest): void { - test.stateMachine.transition(TestStatus.CANCELED); + VestTestMutator.setStatus(test, TestStatus.CANCELED); } static omit(test: IsolateTest): void { - test.stateMachine.transition(TestStatus.OMITTED); + VestTestMutator.setStatus(test, TestStatus.OMITTED); } static reset(test: IsolateTest): void { - test.stateMachine.transition(TestAction.RESET); + VestTestMutator.setStatus(test, TestAction.RESET); + } + + static setStatus( + test: IsolateTest, + status: TestStateMachineAction, + payload?: any + ): void { + test.status = TestStateMachine.transitionFrom(test.status, status, payload); } } diff --git a/packages/vest/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap b/packages/vest/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap index 801f4f2a5..77f246583 100644 --- a/packages/vest/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap +++ b/packages/vest/src/core/test/__tests__/__snapshots__/IsolateTest.test.ts.snap @@ -10,10 +10,7 @@ IsolateTest { "message": "I am Root.", "parent": null, "severity": "error", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "UNTESTED", "testFn": [MockFunction], "type": "Test", } @@ -29,10 +26,7 @@ IsolateTest { "message": "I am Root.", "parent": null, "severity": "warning", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "UNTESTED", "testFn": [MockFunction], "type": "Test", } diff --git a/packages/vest/src/core/test/__tests__/__snapshots__/test.test.ts.snap b/packages/vest/src/core/test/__tests__/__snapshots__/test.test.ts.snap index 079aa61be..187d83920 100644 --- a/packages/vest/src/core/test/__tests__/__snapshots__/test.test.ts.snap +++ b/packages/vest/src/core/test/__tests__/__snapshots__/test.test.ts.snap @@ -55,10 +55,7 @@ IsolateTest { "type": "Suite", }, "severity": "error", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "PASSING", "testFn": [Function], "type": "Test", } @@ -117,10 +114,7 @@ IsolateTest { "type": "Suite", }, "severity": "error", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "PASSING", "testFn": [Function], "type": "Test", } @@ -180,10 +174,7 @@ IsolateTest { "type": "Suite", }, "severity": "error", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "PASSING", "testFn": [Function], "type": "Test", } @@ -241,10 +232,7 @@ IsolateTest { "type": "Suite", }, "severity": "error", - "stateMachine": { - "getState": [Function], - "transition": [Function], - }, + "status": "PASSING", "testFn": [Function], "type": "Test", }