History

Fix browser atom command mocks

Julius Marminge committed 4 months ago

Commit a2ed9bb1 parent 841bbd91 file · +42 −23Browse files

Unified · Split

apps/web/src/components/settings/SettingsPanels.browser.tsx+42−23
@@ -214,58 +214,77 @@ function resetServerConfigSnapshot(): void { · 213 unmodified lines
214}214}
215 215
216vi.mock("@effect/atom-react", async (importOriginal) => {216vi.mock("@effect/atom-react", async (importOriginal) => {
217 const actual = await importOriginal<typeof import("@effect/atom-react")>();217 const [actual, Exit] = await Promise.all([
218 importOriginal<typeof import("@effect/atom-react")>(),
219 import("effect/Exit"),
220 ]);
221 const withSuccessfulExit =
222 <Args extends Array<unknown>, A>(run: (...args: Args) => A | Promise<A>) =>
223 async (...args: Args) =>
224 Exit.succeed(await run(...args));
225 const refreshProviders = withSuccessfulExit(mockRefreshProviders);
226 const connectPairingEnvironment = withSuccessfulExit(mockConnectPairingEnvironment);
227 const connectDesktopSshEnvironment = withSuccessfulExit(mockConnectDesktopSshEnvironment);
228 const connectRelayEnvironment = withSuccessfulExit(mockConnectRelayEnvironment);
229 const removeEnvironment = withSuccessfulExit(mockRemoveEnvironment);
230 const retryEnvironment = withSuccessfulExit(mockRetryEnvironment);
231 const refreshRelayEnvironments = withSuccessfulExit(mockRefreshRelayEnvironments);
232 const updateProvider = withSuccessfulExit(mockUpdateProvider);
233 const signalProcess = withSuccessfulExit(
234 ({ input }: { readonly input: Parameters<LocalApi["server"]["signalProcess"]>[0] }) =>
235 window.nativeApi?.server.signalProcess(input),
236 );
237 const openInEditor = withSuccessfulExit(
238 ({
239 input,
240 }: {
241 readonly input: {
242 readonly cwd: string;
243 readonly editor: Parameters<LocalApi["shell"]["openInEditor"]>[1];
244 };
245 }) => window.nativeApi?.shell.openInEditor(input.cwd, input.editor),
246 );
247 const succeedWithNoResult = async () => Exit.succeed(undefined);
218 248
219 return {249 return {
220 ...actual,250 ...actual,
221 useAtomSet: (atom: unknown, options: unknown) => {251 useAtomSet: (atom: unknown, options: unknown) => {
222 if (atom === directAtomMocks.refreshProvidersAction) {252 if (atom === directAtomMocks.refreshProvidersAction) {
223 return mockRefreshProviders;253 return refreshProviders;
224 }254 }
225 if (atom === directAtomMocks.connectPairingAction) {255 if (atom === directAtomMocks.connectPairingAction) {
226 return mockConnectPairingEnvironment;256 return connectPairingEnvironment;
227 }257 }
228 if (atom === directAtomMocks.connectSshEnvironmentAction) {258 if (atom === directAtomMocks.connectSshEnvironmentAction) {
229 return mockConnectDesktopSshEnvironment;259 return connectDesktopSshEnvironment;
230 }260 }
231 if (atom === directAtomMocks.environmentRegisterAction) {261 if (atom === directAtomMocks.environmentRegisterAction) {
232 return mockConnectRelayEnvironment;262 return connectRelayEnvironment;
233 }263 }
234 if (atom === directAtomMocks.environmentRemoveAction) {264 if (atom === directAtomMocks.environmentRemoveAction) {
235 return mockRemoveEnvironment;265 return removeEnvironment;
236 }266 }
237 if (atom === directAtomMocks.environmentRetryAction) {267 if (atom === directAtomMocks.environmentRetryAction) {
238 return mockRetryEnvironment;268 return retryEnvironment;
239 }269 }
240 if (atom === directAtomMocks.refreshRelayEnvironmentsAction) {270 if (atom === directAtomMocks.refreshRelayEnvironmentsAction) {
241 return mockRefreshRelayEnvironments;271 return refreshRelayEnvironments;
242 }272 }
243 if (atom === directAtomMocks.updateProviderAction) {273 if (atom === directAtomMocks.updateProviderAction) {
244 return mockUpdateProvider;274 return updateProvider;
245 }275 }
246 if (atom === directAtomMocks.signalProcessAction) {276 if (atom === directAtomMocks.signalProcessAction) {
247 return async ({277 return signalProcess;
248 input,
249 }: {
250 readonly input: Parameters<LocalApi["server"]["signalProcess"]>[0];
251 }) => window.nativeApi?.server.signalProcess(input);
252 }278 }
253 if (atom === directAtomMocks.openInEditorAction) {279 if (atom === directAtomMocks.openInEditorAction) {
254 return async ({280 return openInEditor;
255 input,
256 }: {
257 readonly input: {
258 readonly cwd: string;
259 readonly editor: Parameters<LocalApi["shell"]["openInEditor"]>[1];
260 };
261 }) => window.nativeApi?.shell.openInEditor(input.cwd, input.editor);
262 }281 }
263 if (282 if (
264 atom === directAtomMocks.removeKeybindingAction ||283 atom === directAtomMocks.removeKeybindingAction ||
265 atom === directAtomMocks.updateSettingsAction ||284 atom === directAtomMocks.updateSettingsAction ||
266 atom === directAtomMocks.upsertKeybindingAction285 atom === directAtomMocks.upsertKeybindingAction
267 ) {286 ) {
268 return async () => undefined;287 return succeedWithNoResult;
269 }288 }
270 return actual.useAtomSet(atom as never, options as never);289 return actual.useAtomSet(atom as never, options as never);
271 },290 },