11import request from "supertest" ;
22import app , { todos } from "./app" ;
3- import { beforeEach , describe , it , expect , beforeAll } from "vitest" ;
3+ import { afterEach , beforeAll , beforeEach , describe , expect , it } from "vitest" ;
44
55import reflag from "./reflag" ;
66
7+ function flag ( name : string , enabled : boolean ) : void {
8+ let remove : ( ( ) => void ) | undefined ;
9+
10+ beforeEach ( ( ) => {
11+ remove = reflag . pushFlagOverrides ( { [ name ] : enabled } ) ;
12+ } ) ;
13+
14+ afterEach ( ( ) => {
15+ remove ?.( ) ;
16+ remove = undefined ;
17+ } ) ;
18+ }
19+
720beforeAll ( async ( ) => await reflag . initialize ( ) ) ;
21+
822beforeEach ( ( ) => {
9- reflag . featureOverrides = {
23+ reflag . setFlagOverrides ( {
1024 "show-todos" : true ,
11- } ;
25+ } ) ;
26+ } ) ;
27+
28+ afterEach ( ( ) => {
29+ reflag . clearFlagOverrides ( ) ;
1230} ) ;
1331
1432describe ( "API Tests" , ( ) => {
@@ -24,12 +42,13 @@ describe("API Tests", () => {
2442 expect ( response . body ) . toEqual ( { todos } ) ;
2543 } ) ;
2644
27- it ( "should return no todos when list is disabled" , async ( ) => {
28- reflag . featureOverrides = ( ) => ( {
29- "show-todos" : false ,
45+ describe ( "with show-todos temporarily disabled" , ( ) => {
46+ flag ( "show-todos" , false ) ;
47+
48+ it ( "should return no todos" , async ( ) => {
49+ const response = await request ( app ) . get ( "/todos" ) ;
50+ expect ( response . status ) . toBe ( 200 ) ;
51+ expect ( response . body ) . toEqual ( { todos : [ ] } ) ;
3052 } ) ;
31- const response = await request ( app ) . get ( "/todos" ) ;
32- expect ( response . status ) . toBe ( 200 ) ;
33- expect ( response . body ) . toEqual ( { todos : [ ] } ) ;
3453 } ) ;
3554} ) ;
0 commit comments