import { test, expect } from 'vitest' import { withFixture } from '../common' withFixture('basic', (c) => { async function testHover(name, { text, lang, position, expected, expectedRange, settings }) { test.concurrent(name, async () => { let textDocument = await c.openDocument({ text, lang, settings }) let res = await c.sendRequest('textDocument/hover', { textDocument, position, }) expect(res).toEqual( expected ? { contents: { language: 'css', value: expected, }, range: expectedRange, } : expected ) }) } testHover('disabled', { text: '
', settings: { tailwindCSS: { hovers: false }, }, expected: null, }) testHover('hover', { text: '
', position: { line: 0, character: 13 }, expected: '.bg-red-500 {\n' + ' --tw-bg-opacity: 1;\n' + ' background-color: rgb(239 68 68 / var(--tw-bg-opacity));\n' + '}', expectedRange: { start: { line: 0, character: 12 }, end: { line: 0, character: 22 }, }, }) testHover('arbitrary value', { text: '
', position: { line: 0, character: 13 }, expected: '.p-\\[3px\\] {\n' + ' padding: 3px;\n' + '}', expectedRange: { start: { line: 0, character: 12 }, end: { line: 0, character: 19 }, }, }) testHover('arbitrary value with theme function', { text: '
', position: { line: 0, character: 13 }, expected: '.p-\\[theme\\(spacing\\.4\\)\\] {\n' + ' padding: 1rem/* 16px */;\n' + '}', expectedRange: { start: { line: 0, character: 12 }, end: { line: 0, character: 32 }, }, }) testHover('arbitrary property', { text: '
', position: { line: 0, character: 13 }, expected: '.\\[text-wrap\\:balance\\] {\n' + ' text-wrap: balance;\n' + '}', expectedRange: { start: { line: 0, character: 12 }, end: { line: 0, character: 31 }, }, }) })