@@ -2,7 +2,7 @@ import { epic, feature, label, story } from "allure-js-commons";
22import { beforeEach , describe , expect , it } from "vitest" ;
33
44import type { TestStatus } from "../../src/model.js" ;
5- import { getWorstStatus , statusToPriority } from "../../src/utils/status.js" ;
5+ import { getWorstStatus , hasRetriesStatusChange , statusToPriority } from "../../src/utils/status.js" ;
66
77beforeEach ( async ( ) => {
88 await epic ( "coverage" ) ;
@@ -46,3 +46,31 @@ describe("getWorstStatus", () => {
4646 expect ( result ) . toBeUndefined ( ) ;
4747 } ) ;
4848} ) ;
49+
50+ describe ( "hasRetriesStatusChange" , ( ) => {
51+ const significantStatuses = [ "passed" , "failed" , "broken" ] as const satisfies readonly TestStatus [ ] ;
52+
53+ it . each ( [
54+ ...significantStatuses . flatMap ( ( currentStatus ) =>
55+ significantStatuses . map (
56+ ( retryStatus ) =>
57+ [ currentStatus , [ retryStatus ] , retryStatus !== currentStatus ] satisfies [ TestStatus , TestStatus [ ] , boolean ] ,
58+ ) ,
59+ ) ,
60+ [ "passed" , [ "unknown" , "skipped" ] , false ] ,
61+ [ "unknown" , [ "passed" , "failed" ] , false ] ,
62+ [ "passed" , [ ] , false ] ,
63+ [ "passed" , [ "unknown" , "failed" , "passed" ] , true ] ,
64+ [ "passed" , [ "failed" , "passed" , "broken" , "failed" ] , true ] ,
65+ ] satisfies [ TestStatus , TestStatus [ ] , boolean ] [ ] ) (
66+ "detects change for current status %s and retry statuses %j: %s" ,
67+ ( currentStatus , retryStatuses , expected ) => {
68+ expect (
69+ hasRetriesStatusChange (
70+ { status : currentStatus } ,
71+ retryStatuses . map ( ( status ) => ( { status } ) ) ,
72+ ) ,
73+ ) . toBe ( expected ) ;
74+ } ,
75+ ) ;
76+ } ) ;
0 commit comments