1111// ---------------------------------------------------------------------------
1212
1313import { afterAll , describe , expect , it } from "@effect/vitest" ;
14+ import { vi } from "vitest" ;
15+ import { waitUntil } from "cloudflare:workers" ;
1416import { Effect , Layer } from "effect" ;
1517import { HttpRouter , HttpServer } from "effect/unstable/http" ;
1618import { HttpApiBuilder } from "effect/unstable/httpapi" ;
@@ -21,6 +23,7 @@ import { CloudAuthPublicApi } from "./api";
2123import { UserStoreService } from "./context" ;
2224import { WorkOSClient , type WorkOSClientService } from "./workos" ;
2325import { encodeLoginState } from "./login-state" ;
26+ import { AutumnService } from "../extensions/billing/service" ;
2427
2528// The route under test serves under the `/api` prefix in the composed app;
2629// toWebHandler mounts the raw group, so paths here are relative to the group.
@@ -46,6 +49,9 @@ const stubWorkOS = Layer.succeed(
4649 if ( prop === "listUserMemberships" ) {
4750 return ( ) => Effect . succeed ( { data : [ ] } ) ;
4851 }
52+ if ( prop === "listOrgMembers" ) {
53+ return ( ) => Effect . succeed ( { data : [ { status : "active" } ] } ) ;
54+ }
4955 return ( ) => Effect . die ( `unexpected WorkOSClient.${ String ( prop ) } call` ) ;
5056 } ,
5157 } ) ,
@@ -88,11 +94,15 @@ const App = HttpApiBuilder.layer(PublicApi).pipe(
8894 Layer . provide ( CloudAuthPublicHandlers ) ,
8995 Layer . provide ( stubWorkOS ) ,
9096 Layer . provide ( stubUsers ) ,
97+ Layer . provide ( AutumnService . Default ) ,
9198 Layer . provide ( HttpServer . layerServices ) ,
9299) ;
93100
94101const app = HttpRouter . toWebHandler ( App , { disableLogger : true } ) ;
95- afterAll ( ( ) => app . dispose ( ) ) ;
102+ afterAll ( async ( ) => {
103+ await Promise . all ( vi . mocked ( waitUntil ) . mock . calls . map ( ( [ work ] ) => work ) ) ;
104+ await app . dispose ( ) ;
105+ } ) ;
96106
97107const run = ( request : Request ) => {
98108 // beta.59: the handler type expects a context argument; this layer stack
0 commit comments