-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathhelpers.test.ts
89 lines (78 loc) · 2.51 KB
/
helpers.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import { fetchDefinitions } from "./helpers";
import * as getDefinitionsModule from "../getDefinitions";
describe("fetchDefinitions", () => {
const getDefaultConfig = vi.spyOn(getDefinitionsModule, "getDefaultConfig");
const getDefinitions = vi
.spyOn(getDefinitionsModule, "getDefinitions")
.mockImplementation(() =>
Promise.resolve({
version: 1,
features: [],
})
);
const clg = {
log: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
};
beforeEach(() => {
vi.stubGlobal("console", clg);
});
afterEach(() => {
vi.unstubAllEnvs();
});
afterAll(() => {
vi.restoreAllMocks();
});
it("returns a call to getDefinitions with default config", async () => {
const result = await fetchDefinitions();
expect(getDefaultConfig).toHaveBeenCalledWith("cli");
expect(getDefinitions).toHaveBeenCalledOnce();
expect(getDefinitions).toHaveBeenLastCalledWith({
appName: "cli",
token: "default:development.unleash-insecure-api-token",
url: "http://localhost:4242/api/client/features",
});
expect(result).toEqual({
version: 1,
features: [],
});
});
it("is using UNLEASH_SERVER_API_URL", async () => {
vi.stubEnv("UNLEASH_SERVER_API_URL", "http://example.com/api");
await fetchDefinitions();
expect(getDefinitions).toHaveBeenLastCalledWith({
appName: "cli",
token: "default:development.unleash-insecure-api-token",
url: "http://example.com/api/client/features",
});
});
it("is using UNLEASH_SERVER_API_TOKEN", async () => {
vi.stubEnv("UNLEASH_SERVER_API_TOKEN", "project:env-name.token");
await fetchDefinitions();
expect(clg.log).toHaveBeenCalledWith(expect.stringContaining("env-name"));
expect(getDefinitions).toHaveBeenLastCalledWith({
appName: "cli",
token: "project:env-name.token",
url: "http://localhost:4242/api/client/features",
});
});
it("is using UNLEASH_SERVER_INSTANCE_ID", async () => {
vi.stubEnv("UNLEASH_SERVER_INSTANCE_ID", "SomeInstance_ID");
await fetchDefinitions();
expect(getDefinitions).toHaveBeenLastCalledWith({
appName: "cli",
instanceId: "SomeInstance_ID",
url: "http://localhost:4242/api/client/features",
});
});
it("throws an error when the response doesn't have feature toggles", async () => {
getDefinitions.mockImplementation(
() =>
Promise.resolve({
error: "not found",
}) as any
);
expect(fetchDefinitions()).rejects.toThrowError();
});
});