import { assert, describe, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as Layer from "effect/Layer";import * as Logger from "effect/Logger"; import { openExternal } from "./window.ts";import * as ElectronShell from "../../electron/ElectronShell.ts"; describe("window IPC", () => { it.effect("returns false when Electron rejects an external URL", () => { const url = "https://example.com/path"; const error = new ElectronShell.ElectronShellOpenExternalError({ urlHostname: "example.com", urlLength: url.length, urlProtocol: "https:", cause: new Error("open failed"), }); const layer = Layer.mergeAll( Layer.succeed( ElectronShell.ElectronShell, ElectronShell.ElectronShell.of({ openExternal: () => Effect.fail(error), copyText: () => Effect.void, }), ), Logger.layer([], { mergeWithExisting: false }), ); return Effect.gen(function* () { const opened = yield* openExternal.handler(url); assert.equal(opened, false); }).pipe(Effect.provide(layer)); });});
import { assert, describe, it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as Logger from "effect/Logger";
import { openExternal } from "./window.ts";
import * as ElectronShell from "../../electron/ElectronShell.ts";
describe("window IPC", () => {
it.effect("returns false when Electron rejects an external URL", () => {
const url = "https://example.com/path";
const error = new ElectronShell.ElectronShellOpenExternalError({
urlHostname: "example.com",
urlLength: url.length,
urlProtocol: "https:",
cause: new Error("open failed"),
});
const layer = Layer.mergeAll(
Layer.succeed(
ElectronShell.ElectronShell,
ElectronShell.ElectronShell.of({
openExternal: () => Effect.fail(error),
copyText: () => Effect.void,
}),
),
Logger.layer([], { mergeWithExisting: false }),
);
return Effect.gen(function* () {
const opened = yield* openExternal.handler(url);
assert.equal(opened, false);
}).pipe(Effect.provide(layer));
});
});