Skip to content

Commit

Permalink
fix(vest): prevent changing test status once it was finalized
Browse files Browse the repository at this point in the history
  • Loading branch information
ealush committed Nov 10, 2021
1 parent 8730e25 commit 4d450aa
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
8 changes: 6 additions & 2 deletions packages/vest/src/core/test/VestTest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export default class VestTest {
}

setStatus(status: KStatus): void {
if (this.isCanceled()) {
if (this.isFinalStatus()) {
return;
}

Expand All @@ -66,7 +66,7 @@ export default class VestTest {
}

done(): void {
if (this.isWarning() || this.isCanceled() || this.isFailing()) {
if (this.isFinalStatus()) {
return;
}
this.setStatus(STATUS_PASSING);
Expand All @@ -76,6 +76,10 @@ export default class VestTest {
this.warns = true;
}

isFinalStatus(): boolean {
return this.hasFailures() || this.isCanceled() || this.isPassing();
}

skip(): void {
this.setStatus(STATUS_SKIPPED);
}
Expand Down
35 changes: 35 additions & 0 deletions packages/vest/src/core/test/lib/__tests__/VestTest.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,40 @@ describe('VestTest', () => {
expect(allIncomplete).toEqual(expect.not.arrayContaining([testObject]));
}
});

describe('final statuses', () => {
let testObject, fn;
beforeEach(() => {
fn = jest.fn();
testObject = new VestTest('field', fn);
});
itWithContext('keep status unchanged when `failed`', () => {
testObject.fail();
expect(testObject.isFailing()).toBe(true);
testObject.skip();
expect(testObject.isSkipped()).toBe(false);
expect(testObject.isFailing()).toBe(true);
testObject.cancel();
expect(testObject.isCanceled()).toBe(false);
expect(testObject.isFailing()).toBe(true);
testObject.setPending();
expect(testObject.isPending()).toBe(false);
expect(testObject.isFailing()).toBe(true);
});

itWithContext('keep status unchanged when `canceled`', () => {
testObject.setStatus('CANCELED');
expect(testObject.isCanceled()).toBe(true);
testObject.fail();
expect(testObject.isCanceled()).toBe(true);
expect(testObject.isFailing()).toBe(false);
testObject.skip();
expect(testObject.isSkipped()).toBe(false);
expect(testObject.isCanceled()).toBe(true);
testObject.setPending();
expect(testObject.isPending()).toBe(false);
expect(testObject.isCanceled()).toBe(true);
});
});
});
});

0 comments on commit 4d450aa

Please sign in to comment.