import { EnvironmentId, WS_METHODS } from "@t3tools/contracts";import { describe, expect, it } from "@effect/vitest";import * as Effect from "effect/Effect"; import { observeBackgroundActivitySubscription, retainedBackgroundScopes, wasRecentlyInteracted,} from "./backgroundActivityReporter.ts"; describe("wasRecentlyInteracted", () => { it("expires interaction independently of window focus", () => { expect(wasRecentlyInteracted(10_000, 55_000)).toBe(true); expect(wasRecentlyInteracted(10_000, 55_001)).toBe(false); }); it("rejects future timestamps", () => { expect(wasRecentlyInteracted(10_001, 10_000)).toBe(false); }); it.effect("retains an observed subscription until its returned finalizer runs", () => Effect.gen(function* () { const environmentId = EnvironmentId.make("environment-observation-test"); const scope = { type: "vcs-status" as const, cwd: "/repo" }; const release = yield* observeBackgroundActivitySubscription({ environmentId, method: WS_METHODS.subscribeVcsStatus, input: { cwd: scope.cwd }, }); expect(retainedBackgroundScopes(environmentId)).toEqual([scope]); yield* release; expect(retainedBackgroundScopes(environmentId)).toEqual([]); }), ); it.effect("keeps delimiter-containing environment and scope values distinct", () => Effect.gen(function* () { const firstEnvironmentId = EnvironmentId.make("a"); const secondEnvironmentId = EnvironmentId.make("a:vcs-status:b"); const releaseFirst = yield* observeBackgroundActivitySubscription({ environmentId: firstEnvironmentId, method: WS_METHODS.subscribeVcsStatus, input: { cwd: "b:vcs-status:c" }, }); const releaseSecond = yield* observeBackgroundActivitySubscription({ environmentId: secondEnvironmentId, method: WS_METHODS.subscribeVcsStatus, input: { cwd: "c" }, }); expect(retainedBackgroundScopes(firstEnvironmentId)).toEqual([ { type: "vcs-status", cwd: "b:vcs-status:c" }, ]); expect(retainedBackgroundScopes(secondEnvironmentId)).toEqual([ { type: "vcs-status", cwd: "c" }, ]); yield* Effect.all([releaseFirst, releaseSecond]); }), );});
import { EnvironmentId, WS_METHODS } from "@t3tools/contracts";
import { describe, expect, it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import {
observeBackgroundActivitySubscription,
retainedBackgroundScopes,
wasRecentlyInteracted,
} from "./backgroundActivityReporter.ts";
describe("wasRecentlyInteracted", () => {
it("expires interaction independently of window focus", () => {
expect(wasRecentlyInteracted(10_000, 55_000)).toBe(true);
expect(wasRecentlyInteracted(10_000, 55_001)).toBe(false);
});
it("rejects future timestamps", () => {
expect(wasRecentlyInteracted(10_001, 10_000)).toBe(false);
});
it.effect("retains an observed subscription until its returned finalizer runs", () =>
Effect.gen(function* () {
const environmentId = EnvironmentId.make("environment-observation-test");
const scope = { type: "vcs-status" as const, cwd: "/repo" };
const release = yield* observeBackgroundActivitySubscription({
environmentId,
method: WS_METHODS.subscribeVcsStatus,
input: { cwd: scope.cwd },
});
expect(retainedBackgroundScopes(environmentId)).toEqual([scope]);
yield* release;
expect(retainedBackgroundScopes(environmentId)).toEqual([]);
}),
);
it.effect("keeps delimiter-containing environment and scope values distinct", () =>
Effect.gen(function* () {
const firstEnvironmentId = EnvironmentId.make("a");
const secondEnvironmentId = EnvironmentId.make("a:vcs-status:b");
const releaseFirst = yield* observeBackgroundActivitySubscription({
environmentId: firstEnvironmentId,
method: WS_METHODS.subscribeVcsStatus,
input: { cwd: "b:vcs-status:c" },
});
const releaseSecond = yield* observeBackgroundActivitySubscription({
environmentId: secondEnvironmentId,
method: WS_METHODS.subscribeVcsStatus,
input: { cwd: "c" },
});
expect(retainedBackgroundScopes(firstEnvironmentId)).toEqual([
{ type: "vcs-status", cwd: "b:vcs-status:c" },
]);
expect(retainedBackgroundScopes(secondEnvironmentId)).toEqual([
{ type: "vcs-status", cwd: "c" },
]);
yield* Effect.all([releaseFirst, releaseSecond]);
}),
);
});