-
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathservice.test.ts
106 lines (93 loc) · 3.26 KB
/
service.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import path from "node:path";
import { Project } from "ts-morph";
import { afterAll, beforeAll, describe, expect, test } from "vitest";
import { getMethodsFromService, getServices } from "../src/service.mjs";
import { cleanOutputs, generateTSClients } from "./utils";
const fileName = "service";
describe(fileName, () => {
beforeAll(async () => await generateTSClients(fileName));
afterAll(async () => await cleanOutputs(fileName));
test("getServices", async () => {
const project = new Project({
skipAddingFilesFromTsConfig: true,
});
project.addSourceFilesAtPaths(
path.join("tests", `${fileName}-outputs`, "**", "*"),
);
const service = await getServices(project);
const methodNames = service.methods.map((m) => m.method.getName());
expect(methodNames).toEqual([
"findPets",
"addPet",
"getNotDefined",
"postNotDefined",
"findPetById",
"deletePet",
"findPaginatedPets",
]);
});
test("getServices (No service node found)", async () => {
const project = new Project({
skipAddingFilesFromTsConfig: true,
});
project.addSourceFilesAtPaths("no/services/**/*");
await expect(() => getServices(project)).rejects.toThrowError(
"No service node found",
);
});
test('getMethodsFromService - throw error "Arrow function not found"', async () => {
const source = `
const client = createClient(createConfig())
const foo = "bar"
`;
const project = new Project();
const sourceFile = project.createSourceFile("test.ts", source);
await expect(() => getMethodsFromService(sourceFile)).toThrowError(
"Arrow function not found",
);
});
test('getMethodsFromService - throw error "Initializer not found"', async () => {
const source = `
const client = createClient(createConfig())
const foo
`;
const project = new Project();
const sourceFile = project.createSourceFile("test.ts", source);
await expect(() => getMethodsFromService(sourceFile)).toThrowError(
"Initializer not found",
);
});
test('getMethodsFromService - throw error "Return statement not found"', async () => {
const source = `
const client = createClient(createConfig())
const foo = () => {}
`;
const project = new Project();
const sourceFile = project.createSourceFile("test.ts", source);
await expect(() => getMethodsFromService(sourceFile)).toThrowError(
"Return statement not found",
);
});
test('getMethodsFromService - throw error "Call expression not found"', async () => {
const source = `
const client = createClient(createConfig())
const foo = () => { return }
`;
const project = new Project();
const sourceFile = project.createSourceFile("test.ts", source);
await expect(() => getMethodsFromService(sourceFile)).toThrowError(
"Call expression not found",
);
});
test('getMethodsFromService - throw error "Method block not found"', async () => {
const source = `
const client = createClient(createConfig())
const foo = () =>
`;
const project = new Project();
const sourceFile = project.createSourceFile("test.ts", source);
await expect(() => getMethodsFromService(sourceFile)).toThrowError(
"Method block not found",
);
});
});