1import type { EnvironmentConnectionPhase } from "@t3tools/client-runtime/connection";
2import { EnvironmentId } from "@t3tools/contracts";
3import { describe, expect, it } from "vite-plus/test";
4
5import { resolveAddProjectEnvironment } from "./AddProjectScreen.logic";
6
7const ENVIRONMENT_A = EnvironmentId.make("environment-a");
8const ENVIRONMENT_B = EnvironmentId.make("environment-b");
9
10function environment(environmentId: EnvironmentId, connectionState: EnvironmentConnectionPhase) {
11 return { environmentId, connectionState };
12}
13
14describe("resolveAddProjectEnvironment", () => {
15 it("does not redirect an explicit unavailable environment to another environment", () => {
16 expect(
17 resolveAddProjectEnvironment(
18 [environment(ENVIRONMENT_A, "offline"), environment(ENVIRONMENT_B, "connected")],
19 ENVIRONMENT_A,
20 ),
21 ).toBeNull();
22 });
23
24 it("resolves an explicit connected environment", () => {
25 expect(
26 resolveAddProjectEnvironment(
27 [environment(ENVIRONMENT_A, "connected"), environment(ENVIRONMENT_B, "connected")],
28 ENVIRONMENT_A,
29 )?.environmentId,
30 ).toBe(ENVIRONMENT_A);
31 });
32
33 it("defaults to the first connected environment when no environment is requested", () => {
34 expect(
35 resolveAddProjectEnvironment(
36 [environment(ENVIRONMENT_A, "offline"), environment(ENVIRONMENT_B, "connected")],
37 null,
38 )?.environmentId,
39 ).toBe(ENVIRONMENT_B);
40 });
41});