Repository navigation
Expand file tree
/
Copy pathGitWorkflowService.test.ts
More file actions
59 lines (56 loc) · 2.58 KB
/
Copy pathGitWorkflowService.test.ts
File metadata and controls
59 lines (56 loc) · 2.58 KB
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
import { assert, it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as NodeCrypto from "@effect/platform-node/NodeCrypto";
import * as NodeServices from "@effect/platform-node/NodeServices";
import * as FileSystem from "effect/FileSystem";
import * as ServerConfig from "../config.ts";
import * as VcsProcess from "../vcs/VcsProcess.ts";
import * as GitManager from "./GitManager.ts";
import * as GitWorkflowService from "./GitWorkflowService.ts";
import * as GitVcsDriver from "../vcs/GitVcsDriver.ts";
import * as VcsDriverRegistry from "../vcs/VcsDriverRegistry.ts";
it.layer(Layer.mergeAll(NodeServices.layer, NodeCrypto.layer))("GitWorkflowService", (it) => {
it.effect("finds a name among the refs of every namespace", () =>
Effect.gen(function* () {
const fileSystem = yield* FileSystem.FileSystem;
const cwd = yield* fileSystem.makeTempDirectoryScoped({ prefix: "t3-ref-named-" });
const workflow = yield* GitWorkflowService.GitWorkflowService;
const driver = yield* GitVcsDriver.GitVcsDriver;
for (const args of [
["init", "-b", "main"],
["-c", "user.email=t@t", "-c", "user.name=t", "commit", "--allow-empty", "-m", "init"],
["update-ref", "refs/remotes/upstream/feature/topic", "HEAD"],
["symbolic-ref", "refs/remotes/origin/alias", "refs/heads/main"],
["update-ref", "refs/mirror/origin/mirrored", "HEAD"],
]) {
yield* driver.execute({ operation: "test.setupRepo", cwd, args });
}
const found = yield* Effect.forEach(
["main", "feature/topic", "alias", "mirrored", "t3/renamed", "feature/*"],
(refName) => workflow.hasRefNamed({ cwd, refName }),
);
assert.deepEqual(found, [true, true, true, true, false, false]);
}).pipe(
Effect.scoped,
Effect.provide(
GitWorkflowService.layer.pipe(
Layer.provide(
Layer.mock(VcsDriverRegistry.VcsDriverRegistry)({
resolve: () => Effect.succeed({ kind: "git" } as VcsDriverRegistry.VcsDriverHandle),
}),
),
Layer.provide(Layer.mock(GitManager.GitManager)({})),
Layer.provideMerge(GitVcsDriver.layer),
Layer.provideMerge(VcsProcess.layer),
Layer.provideMerge(
ServerConfig.layerTest(process.cwd(), { prefix: "t3-ref-named-" }).pipe(
Layer.provide(Layer.mergeAll(NodeServices.layer, NodeCrypto.layer)),
),
),
Layer.provideMerge(Layer.mergeAll(NodeServices.layer, NodeCrypto.layer)),
),
),
),
);
});