-
Notifications
You must be signed in to change notification settings - Fork 6
/
mod.test.ts
88 lines (79 loc) · 2.95 KB
/
mod.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
import { context } from "../../../../../cli/src/plugin/mod.ts";
import { assertEquals, deepMerge, WalkEntry } from "../../../../../cli/deps.ts";
import { introspect } from "./mod.ts";
const fakeContext = (
withIgnore: boolean,
prettierVersion: string,
devDependecies = true,
) => {
return deepMerge(
context,
{
files: {
// deno-lint-ignore require-await
includes: async (glob: string): Promise<boolean> => {
return withIgnore && glob === "**/.prettierignore";
},
each: async function* (glob: string): AsyncIterableIterator<WalkEntry> {
if (glob === "**/package.json") {
yield {
name: "package.json",
path: "fake-path",
isFile: true,
isSymlink: false,
isDirectory: false,
};
}
return;
},
// deno-lint-ignore require-await
readJSON: async (path: string): Promise<Record<string, unknown>> => {
if (path === "fake-path") {
if (devDependecies) {
return {
devDependencies: {
prettier: prettierVersion,
},
};
} else {
return {
dependencies: {
prettier: prettierVersion,
},
};
}
}
return {};
},
},
},
);
};
Deno.test("Plugins > JavaScript > Formatter - project with Prettier 2 and no ignore file", async () => {
const result = await introspect(fakeContext(false, "^2.3.2"));
assertEquals(result, { name: "prettier", hasIgnoreFile: false });
});
Deno.test("Plugins > JavaScript > Formatter - project with Prettier 2 and ignore file", async () => {
const result = await introspect(fakeContext(true, "^2.3.2"));
assertEquals(result, { name: "prettier", hasIgnoreFile: true });
});
Deno.test("Plugins > JavaScript > Formatter - project with Prettier 2 (fixed version)", async () => {
const result = await introspect(fakeContext(true, "2.0.0"));
assertEquals(result, { name: "prettier", hasIgnoreFile: true });
});
Deno.test("Plugins > JavaScript > Formatter - project with Prettier 2 (production dependency)", async () => {
const result = await introspect(fakeContext(true, "2.0.0", false));
assertEquals(result, { name: "prettier", hasIgnoreFile: true });
});
Deno.test("Plugins > JavaScript > Formatter - project with Prettier 1", async () => {
const result = await introspect(fakeContext(false, "^1.16.4"));
assertEquals(result, null);
});
Deno.test("Plugins > JavaScript > Formatter - project with unsupported Prettier", async () => {
const result = await introspect(fakeContext(false, "32.0.0"));
assertEquals(result, null);
});
Deno.test("Plugins > JavaScript > Formatter - project with broken package definition", async () => {
const result = await introspect(fakeContext(false, "NOT A VERSION"));
assertEquals(result, null);
});