Skip to content

Commit f1ea25f

Browse files
committed
test(mosaic): cover the user button with feature tests in place of per-layer tests
1 parent e1b22c9 commit f1ea25f

9 files changed

Lines changed: 634 additions & 2391 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
---
2+
---

‎packages/mosaic/src/__tests__/feature/fake-fapi.ts‎

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,15 @@ import type {
88
import { http, HttpResponse, type JsonBodyType } from 'msw';
99
import { setupWorker } from 'msw/browser';
1010

11-
import { fapiClient, type FapiEnvironment, fapiEnvironment, fapiPage, fapiToken } from './fapi';
11+
import {
12+
fapiClient,
13+
type FapiEnvironment,
14+
fapiEnvironment,
15+
fapiMembership,
16+
fapiOrganization,
17+
fapiPage,
18+
fapiToken,
19+
} from './fapi';
1220

1321
export const PUBLISHABLE_KEY = 'pk_live_Y2xlcmsuYWJjZWYuMTIzNDUucHJvZC5sY2xjbGVyay5jb20k';
1422
const FAPI = 'https://clerk.abcef.12345.prod.lclclerk.com';
@@ -141,6 +149,7 @@ export function serveFapi(seed: FakeFapiSeed = {}): FakeFapiState {
141149
}
142150
const accepted = { ...invitation, status: 'accepted' as const };
143151
state.invitations = state.invitations.map(i => (i.id === accepted.id ? accepted : i));
152+
state.memberships = [...state.memberships, fapiMembership(fapiOrganization(invitation.public_organization_data))];
144153
return envelope(accepted, state.client);
145154
}),
146155
http.post(fapiUrl('/v1/me/organization_suggestions/:id/accept'), ({ params }) => {
@@ -163,12 +172,26 @@ export interface HeldRequests {
163172
fail: (code?: string) => void;
164173
}
165174

175+
const unsettledHolds = new Set<string>();
176+
177+
export function takeUnsettledHolds(): string[] {
178+
const holds = [...unsettledHolds];
179+
unsettledHolds.clear();
180+
return holds;
181+
}
182+
166183
export function holdRequests(method: 'get' | 'post', path: string): HeldRequests {
167184
const requests: Request[] = [];
168-
let settle: (response: Response | undefined) => void = () => {};
185+
const hold = `${method.toUpperCase()} ${path}`;
186+
let resolveGate: (response: Response | undefined) => void = () => {};
169187
const gate = new Promise<Response | undefined>(resolve => {
170-
settle = resolve;
188+
resolveGate = resolve;
171189
});
190+
const settle = (response: Response | undefined) => {
191+
unsettledHolds.delete(hold);
192+
resolveGate(response);
193+
};
194+
unsettledHolds.add(hold);
172195

173196
worker.use(
174197
http[method](fapiUrl(path), ({ request }) => {

‎packages/mosaic/src/features/user-button/__tests__/user-button.controller.test.tsx‎

Lines changed: 0 additions & 285 deletions
This file was deleted.

0 commit comments

Comments
 (0)