forked from stephenh/ts-proto
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils-test.ts
118 lines (105 loc) · 3.54 KB
/
utils-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
107
108
109
110
111
112
113
114
115
116
117
118
import { maybeAddComment, generateIndexFiles } from "../src/utils";
import { defaultOptions } from "../src/options";
import { Code, joinCode } from "ts-poet";
import { FileDescriptorProto } from "ts-proto-descriptors";
describe("utils", () => {
describe("maybeAddComment", () => {
it("handles single-line impl comments", () => {
// Foo
const chunks: Code[] = [];
maybeAddComment({ comments: true }, { leadingComments: " Foo\n" }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`
"/** Foo */
"
`);
});
it("handles single-dot star comments", () => {
// /* Foo */
const chunks: Code[] = [];
maybeAddComment({ comments: true }, { leadingComments: " Foo " }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`
"/** Foo */
"
`);
});
it("handles single-line double-dot star comments", () => {
// /** Foo */
const chunks: Code[] = [];
maybeAddComment({ comments: true }, { leadingComments: " * Foo " }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`
"/** Foo */
"
`);
});
it("handles double-line double-dot star comments", () => {
// /**
// * Foo
// *
// * bar.
// */
const chunks: Code[] = [];
maybeAddComment({ comments: true }, { leadingComments: "*\n Foo\n \n bar.\n" }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`
"/**
* Foo
*
* bar.
*/
"
`);
});
it("handles double-line impl comments", () => {
// // Foo
// // Bar
const chunks: Code[] = [];
maybeAddComment({ comments: true }, { leadingComments: " Foo\n Bar\n" }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`
"/**
* Foo
* Bar
*/
"
`);
});
it("doesn't emit comments when disabled", () => {
const chunks: Code[] = [];
maybeAddComment({ comments: false }, { leadingComments: " Foo\n" }, chunks);
expect(joinCode(chunks).toString()).toMatchInlineSnapshot(`""`);
});
});
describe("generateIndexFiles", () => {
const options = defaultOptions();
const files: FileDescriptorProto[] = [
FileDescriptorProto.fromJSON({ name: "Test.proto" }),
FileDescriptorProto.fromJSON({ name: "package/TestPackage.proto", package: "package" }),
];
it("handles files", () => {
const indexFiles = generateIndexFiles(files, options);
expect(indexFiles[0][0]).toMatch("index.ts");
expect(indexFiles[0][1].toString()).toMatchInlineSnapshot(`
"export * from "./Test";
export * as package from "./index.package";
"
`);
expect(indexFiles[1][0]).toMatch("index.package.ts");
expect(indexFiles[1][1].toString()).toMatchInlineSnapshot(`
"export * from "./package/TestPackage";
"
`);
});
it("handles files with importSuffix=.js", () => {
const indexFiles = generateIndexFiles(files, { ...options, importSuffix: ".js" });
expect(indexFiles[0][0]).toMatch("index.ts");
expect(indexFiles[0][1].toString()).toMatchInlineSnapshot(`
"export * from "./Test.js";
export * as package from "./index.package.js";
"
`);
expect(indexFiles[1][0]).toMatch("index.package.ts");
expect(indexFiles[1][1].toString()).toMatchInlineSnapshot(`
"export * from "./package/TestPackage.js";
"
`);
});
});
});