History

Type the recorder wait timeout as a tagged error

Rhys Sullivan committed 4 months ago

Commit 19e23891 parent 5f8a25d1 file · +8 −3Browse files

Unified · Split

packages/plugins/graphql/src/testing/index.ts+8−3
@@ -55,6 +55,12 @@ export interface GraphqlTestServerShape { · 54 unmodified lines
55 readonly clearRequests: Effect.Effect<void>;55 readonly clearRequests: Effect.Effect<void>;
56}56}
57 57
58export class GraphqlTestRecorderTimeoutError extends Data.TaggedError(
59 "GraphqlTestRecorderTimeoutError",
60)<{
61 readonly message: string;
62}> {}
63
58/** Poll the request recorder until `predicate` matches. Yoga captures requests64/** Poll the request recorder until `predicate` matches. Yoga captures requests
59 * asynchronously (`captureRequest` runs via `Effect.runPromise` in the handler65 * asynchronously (`captureRequest` runs via `Effect.runPromise` in the handler
60 * context), so connect/invoke can resolve before the ref updates under load. */66 * context), so connect/invoke can resolve before the ref updates under load. */
@@ -62,14 +68,13 @@ export const waitForRecordedRequests = ( · 1 unmodified line
62 requests: Effect.Effect<readonly GraphqlTestRequest[]>,68 requests: Effect.Effect<readonly GraphqlTestRequest[]>,
63 predicate: (requests: readonly GraphqlTestRequest[]) => boolean,69 predicate: (requests: readonly GraphqlTestRequest[]) => boolean,
64 message = "timed out waiting for matching recorded GraphQL requests",70 message = "timed out waiting for matching recorded GraphQL requests",
65): Effect.Effect<readonly GraphqlTestRequest[]> =>71): Effect.Effect<readonly GraphqlTestRequest[], GraphqlTestRecorderTimeoutError> =>
66 requests.pipe(72 requests.pipe(
67 Effect.filterOrFail(73 Effect.filterOrFail(
68 (all) => predicate(all),74 (all) => predicate(all),
69 () => message,75 () => new GraphqlTestRecorderTimeoutError({ message }),
70 ),76 ),
71 Effect.retry(Schedule.both(Schedule.spaced("50 millis"), Schedule.recurs(100))),77 Effect.retry(Schedule.both(Schedule.spaced("50 millis"), Schedule.recurs(100))),
72 Effect.orDie,
73 );78 );
74 79
75class GraphqlTestServerAddressError extends Data.TaggedError("GraphqlTestServerAddressError")<{80class GraphqlTestServerAddressError extends Data.TaggedError("GraphqlTestServerAddressError")<{