import { describe, expect, it } from 'vitest' import { createGlobalDataScript, createGlobalDataScriptWithInit, injectGlobalDataIntoHTML, } from './inject-global-data.js' describe('createGlobalDataScript', () => { it('creates a script tag with JSON data', () => { const result = createGlobalDataScript('__TEST__', { foo: 'bar', num: 42 }) expect(result).toBe('') }) it('handles nested data structures', () => { const data = { user: { id: 1, name: 'John' }, settings: { theme: 'dark', notifications: true }, } const result = createGlobalDataScript('__APP__', data) expect(result).toContain('globalThis.__APP__ =') expect(result).toContain(JSON.stringify(data)) }) it('escapes special characters in data', () => { const data = { html: '' } const result = createGlobalDataScript('__SAFE__', data) // JSON.stringify escapes the forward slashes expect(result).not.toContain('') }) }) describe('injectGlobalDataIntoHTML', () => { const sampleHTML = ` Test
` it('injects script into head', () => { const result = injectGlobalDataIntoHTML(sampleHTML, '__APP__', { version: '1.0' }) expect(result).toContain('\n') }) it('injects script with init code', () => { const result = injectGlobalDataIntoHTML( sampleHTML, '__CONFIG__', { apiUrl: '/api' }, 'console.log("Config loaded:", globalThis.__CONFIG__);', ) expect(result).toContain('globalThis.__CONFIG__ = {"apiUrl":"/api"};') expect(result).toContain('console.log("Config loaded:", globalThis.__CONFIG__);') }) })