UNPKG

@shopify/theme-language-server-common

Version:

<h1 align="center" style="position: relative;" > <br> <img src="https://github.com/Shopify/theme-check-vscode/blob/main/images/shopify_glyph.png?raw=true" alt="logo" width="141" height="160"> <br> Theme Language Server </h1>

91 lines (85 loc) 2.73 kB
import { describe, beforeEach, it, expect } from 'vitest'; import { CompletionsProvider } from '../CompletionsProvider'; import { DocumentManager } from '../../documents'; import { MetafieldDefinitionMap, DocDefinition } from '@shopify/theme-check-common'; const uri = 'file:///snippets/product-card.liquid'; describe('Module: RenderSnippetParameterCompletionProvider', async () => { let provider: CompletionsProvider; const mockSnippetName = 'product-card'; const mockSnippetDefinition: DocDefinition = { uri, liquidDoc: { parameters: [ { name: 'title', description: 'The title of the product', type: 'string', required: true, nodeType: 'param', }, { name: 'border-radius', description: 'The border radius in px', type: 'number', required: false, nodeType: 'param', }, { name: 'no-type', description: 'This parameter has no type', type: null, required: true, nodeType: 'param', }, { name: 'no-description', description: null, type: 'string', required: true, nodeType: 'param', }, { name: 'no-type-or-description', description: null, type: null, required: true, nodeType: 'param', }, ], }, }; beforeEach(async () => { provider = new CompletionsProvider({ documentManager: new DocumentManager(), themeDocset: { filters: async () => [], objects: async () => [], liquidDrops: async () => [], tags: async () => [], systemTranslations: async () => ({}), }, getMetafieldDefinitions: async (_rootUri: string) => ({} as MetafieldDefinitionMap), getDocDefinitionForURI: async (_uri, _type, snippetName) => { if (mockSnippetName === snippetName) { return mockSnippetDefinition; } }, }); }); it("provide completion options that doesn't already exist in render tag", async () => { await expect(provider).to.complete(`{% render '${mockSnippetName}', █ %}`, [ 'title', 'border-radius', 'no-type', 'no-description', 'no-type-or-description', ]); await expect(provider).to.complete( `{% render '${mockSnippetName}', title: 'foo', border-radius: 5, █ %}`, ['no-type', 'no-description', 'no-type-or-description'], ); }); it('does not provide completion options if the snippet does not exist', async () => { await expect(provider).to.complete(`{% render 'fake-snippet', █ %}`, []); }); });