Skip to content

Commit bf48201

Browse files
committed
Add test case that renames destructured property
1 parent d1ef101 commit bf48201

File tree

2 files changed

+68
-51
lines changed

2 files changed

+68
-51
lines changed
Lines changed: 67 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
namespace ts.projectSystem {
22
describe("unittests:: tsserver:: getExportReferences", () => {
3+
const exportVariable = "export const value = 0;";
4+
const exportArrayDestructured = "export const [valueA, valueB] = [0, 1];";
5+
const exportObjectDestructured = "export const { valueC, valueD: renamedD } = { valueC: 0, valueD: 1 };";
6+
37
const mainTs: File = {
48
path: "/main.ts",
5-
content: 'import { value, valueA, valueB, valueC, valueD } from "./mod";',
9+
content: 'import { value, valueA, valueB, valueC, renamedD } from "./mod";',
610
};
711
const modTs: File = {
812
path: "/mod.ts",
9-
content: `export const value = 0;
10-
export const [valueA, valueB] = [0, 1];
11-
export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
13+
content: `${exportVariable}
14+
${exportArrayDestructured}
15+
${exportObjectDestructured}
16+
`,
1217
};
1318
const tsconfig: File = {
1419
path: "/tsconfig.json",
@@ -26,11 +31,22 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
2631
makeReferenceItem({
2732
file: mainTs,
2833
isDefinition: true,
29-
lineText: 'import { value, valueA, valueB, valueC, valueD } from "./mod";',
30-
contextText: 'import { value, valueA, valueB, valueC, valueD } from "./mod";',
34+
lineText: mainTs.content,
35+
contextText: mainTs.content,
3136
text,
3237
});
3338

39+
const referenceModTs = (
40+
texts: { text: string; lineText: string; contextText?: string },
41+
override: Partial<MakeReferenceItem> = {},
42+
): protocol.ReferencesResponseItem =>
43+
makeReferenceItem({
44+
file: modTs,
45+
isDefinition: true,
46+
...texts,
47+
...override,
48+
});
49+
3450
it("should get const variable decralation references", () => {
3551
const session = makeSampleSession();
3652

@@ -40,16 +56,11 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
4056
protocolFileLocationFromSubstring(modTs, "value"),
4157
);
4258

43-
const referenceModTs = (modTs: File): protocol.ReferencesResponseItem =>
44-
makeReferenceItem({
45-
file: modTs,
46-
isDefinition: true,
47-
lineText: "export const value = 0;",
48-
contextText: "export const value = 0;",
49-
text: "value",
50-
});
5159
const expectResponse = {
52-
refs: [referenceModTs(modTs), referenceMainTs(mainTs, "value")],
60+
refs: [
61+
referenceModTs({ text: "value", lineText: exportVariable, contextText: exportVariable }),
62+
referenceMainTs(mainTs, "value"),
63+
],
5364
symbolDisplayString: "const value: 0",
5465
symbolName: "value",
5566
symbolStartOffset: protocolLocationFromSubstring(modTs.content, "value").offset,
@@ -66,17 +77,15 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
6677
protocolFileLocationFromSubstring(modTs, "valueA"),
6778
);
6879

69-
const referenceModTs = (modTs: File): protocol.ReferencesResponseItem =>
70-
makeReferenceItem({
71-
file: modTs,
72-
isDefinition: true,
73-
lineText: "export const [valueA, valueB] = [0, 1];",
74-
contextText: "export const [valueA, valueB] = [0, 1];",
75-
text: "valueA",
76-
});
77-
7880
const expectResponse = {
79-
refs: [referenceModTs(modTs), referenceMainTs(mainTs, "valueA")],
81+
refs: [
82+
referenceModTs({
83+
text: "valueA",
84+
lineText: exportArrayDestructured,
85+
contextText: exportArrayDestructured,
86+
}),
87+
referenceMainTs(mainTs, "valueA"),
88+
],
8089
symbolDisplayString: "const valueA: number",
8190
symbolName: "valueA",
8291
symbolStartOffset: protocolLocationFromSubstring(modTs.content, "valueA").offset,
@@ -92,35 +101,18 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
92101
protocol.CommandTypes.References,
93102
protocolFileLocationFromSubstring(modTs, "valueC"),
94103
);
95-
96-
const referenceModTs = (
97-
modTs: File,
98-
opts: {
99-
contextText: string;
100-
options?: SpanFromSubstringOptions;
101-
contextOptions?: SpanFromSubstringOptions;
102-
},
103-
): protocol.ReferencesResponseItem =>
104-
makeReferenceItem({
105-
file: modTs,
106-
isDefinition: true,
107-
lineText: "export const { valueC, valueD } = { valueC: 0, valueD: 1 };",
108-
contextText: opts.contextText,
109-
text: "valueC",
110-
options: opts.options,
111-
contextOptions: opts.contextOptions,
112-
});
113-
114104
const expectResponse = {
115105
refs: [
116-
referenceModTs(modTs, {
117-
contextText: "export const { valueC, valueD } = { valueC: 0, valueD: 1 };",
106+
referenceModTs({
107+
text: "valueC",
108+
lineText: exportObjectDestructured,
109+
contextText: exportObjectDestructured,
118110
}),
119111
referenceMainTs(mainTs, "valueC"),
120-
referenceModTs(modTs, {
121-
contextText: "valueC: 0",
122-
options: { index: 1 },
123-
}),
112+
referenceModTs(
113+
{ text: "valueC", lineText: exportObjectDestructured, contextText: "valueC: 0" },
114+
{ options: { index: 1 } },
115+
),
124116
],
125117
symbolDisplayString: "const valueC: number",
126118
symbolName: "valueC",
@@ -129,5 +121,30 @@ export const { valueC, valueD } = { valueC: 0, valueD: 1 };`,
129121

130122
assert.deepEqual(response, expectResponse);
131123
});
124+
125+
it("should get object decralation references that renames destructured property", () => {
126+
const session = makeSampleSession();
127+
const response = executeSessionRequest<protocol.ReferencesRequest, protocol.ReferencesResponse>(
128+
session,
129+
protocol.CommandTypes.References,
130+
protocolFileLocationFromSubstring(modTs, "renamedD"),
131+
);
132+
133+
const expectResponse = {
134+
refs: [
135+
referenceModTs({
136+
text: "renamedD",
137+
lineText: exportObjectDestructured,
138+
contextText: exportObjectDestructured,
139+
}),
140+
referenceMainTs(mainTs, "renamedD"),
141+
],
142+
symbolDisplayString: "const renamedD: number",
143+
symbolName: "renamedD",
144+
symbolStartOffset: protocolLocationFromSubstring(modTs.content, "renamedD").offset,
145+
};
146+
147+
assert.deepEqual(response, expectResponse);
148+
});
132149
});
133150
}

src/testRunner/unittests/tsserver/helpers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,7 @@ namespace ts.projectSystem {
727727
}
728728
}
729729

730-
interface MakeReferenceItem extends DocumentSpanFromSubstring {
730+
export interface MakeReferenceItem extends DocumentSpanFromSubstring {
731731
isDefinition: boolean;
732732
lineText: string;
733733
}

0 commit comments

Comments
 (0)