import { describe, expect, it } from 'vitest' import { parseEmbedCode } from '../src/node/demo/normal.js' describe('parseEmbedCode', () => { it('should parse basic HTML code', () => { const code = '
Hello World
' const result = parseEmbedCode(code) expect(result.html).toBe('
Hello World
') expect(result.script).toBe('') expect(result.css).toBe('') expect(result.jsType).toBe('js') expect(result.cssType).toBe('css') }) it('should parse HTML with script', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.html?.trim()).toBe('
Hello
') expect(result.script?.trim()).toBe('const message = \'Hello World\'') expect(result.jsType).toBe('js') }) it('should parse HTML with TypeScript script', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.jsType).toBe('ts') expect(result.script?.trim()).toBe('const message: string = \'Hello World\'') }) it('should parse HTML with style', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.html?.trim()).toBe('
Hello
') expect(result.css?.trim()).toBe('.container { color: red; }') expect(result.cssType).toBe('css') }) it('should parse HTML with SCSS style', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.cssType).toBe('scss') }) it('should parse HTML with Less style', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.cssType).toBe('less') }) it('should parse HTML with Stylus style', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.cssType).toBe('stylus') }) it('should parse HTML with Stylus style (styl extension)', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.cssType).toBe('stylus') }) it('should parse HTML with config', () => { const code = `
Hello
` const result = parseEmbedCode(code) expect(result.imports?.trim()).toContain('jsLib') expect(result.imports?.trim()).toContain('cssLib') }) it('should parse complete code with all parts', () => { const code = `
{{ message }}
` const result = parseEmbedCode(code) expect(result.html?.trim()).toBe('
{{ message }}
') expect(result.imports).toContain('vue') expect(result.jsType).toBe('ts') expect(result.cssType).toBe('scss') }) it('should handle empty code', () => { const result = parseEmbedCode('') expect(result.html).toBe('') expect(result.script).toBe('') expect(result.css).toBe('') }) it('should handle code with only whitespace', () => { const result = parseEmbedCode(' \n \n ') expect(result.html?.trim()).toBe('') }) it('should handle unknown script lang as js', () => { const code = `` const result = parseEmbedCode(code) expect(result.jsType).toBe('js') }) it('should handle unknown style lang as css', () => { const code = `` const result = parseEmbedCode(code) expect(result.cssType).toBe('css') }) })