Skip to content

Commit 499a973

Browse files
committed
add completion test
1 parent 9c456dc commit 499a973

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

packages/ts-plugin/e2e/named-exports.test.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import dedent from 'dedent';
33
import { describe, expect, test } from 'vitest';
44
import { createIFF } from './test/fixture.js';
55
import {
6+
compareCompletionEntries,
67
formatPath,
78
launchTsserver,
89
mergeSpanGroups,
10+
simplifyCompletionEntry,
911
simplifyRefItems,
1012
simplifySpanGroups,
1113
sortRefItems,
@@ -35,6 +37,10 @@ describe('supports navigation features', async () => {
3537
@value c_1: red;
3638
@value c_2: red;
3739
`,
40+
'completion.ts': dedent`
41+
styles;
42+
a_1;
43+
`,
3844
'tsconfig.json': dedent`
3945
{
4046
"cmkOptions": {
@@ -46,6 +52,15 @@ describe('supports navigation features', async () => {
4652
await tsserver.sendUpdateOpen({
4753
openFiles: [{ file: iff.paths['tsconfig.json'] }],
4854
});
55+
await tsserver.sendConfigure({
56+
preferences: {
57+
includeCompletionsForModuleExports: true,
58+
includeCompletionsWithSnippetText: true,
59+
includeCompletionsWithInsertText: true,
60+
jsxAttributeCompletionStyle: 'auto',
61+
quotePreference: 'single',
62+
},
63+
});
4964
const a_1_in_index_ts = {
5065
file: formatPath(iff.paths['index.ts']),
5166
start: { line: 2, offset: 8 },
@@ -190,4 +205,37 @@ describe('supports navigation features', async () => {
190205
});
191206
expect(sortRefItems(simplifyRefItems(res.body?.refs ?? []))).toStrictEqual(sortRefItems(expected));
192207
});
208+
test.each([
209+
{
210+
name: 'styles',
211+
entryName: 'styles',
212+
file: iff.paths['completion.ts'],
213+
line: 1,
214+
offset: 7,
215+
expected: [
216+
{ name: 'styles', sortText: '0', source: formatPath(iff.paths['a.module.css']) },
217+
{ name: 'styles', sortText: '16', source: formatPath(iff.paths['b.module.css']) },
218+
{ name: 'styles', sortText: '16', source: formatPath(iff.paths['c.module.css']) },
219+
],
220+
},
221+
{
222+
name: 'a_1',
223+
entryName: 'a_1',
224+
file: iff.paths['completion.ts'],
225+
line: 2,
226+
offset: 4,
227+
expected: [],
228+
},
229+
])('Completions for $name', async ({ entryName, file, line, offset, expected }) => {
230+
const res = await tsserver.sendCompletionInfo({
231+
file,
232+
line,
233+
offset,
234+
});
235+
expect(
236+
simplifyCompletionEntry(res.body?.entries.filter((entry) => entry.name === entryName) ?? []).sort(
237+
compareCompletionEntries,
238+
),
239+
).toStrictEqual(expected.sort(compareCompletionEntries));
240+
});
193241
});

0 commit comments

Comments
 (0)