import { describe, expect, it } from 'vitest'
import type { Plugin } from 'vite'
import { DevOnlyPlugin } from '../src/core/plugins/dev-only'
import { normalizeLineEndings } from './utils'
const pluginVite = DevOnlyPlugin.raw({}, { framework: 'vite' }) as Plugin
const viteTransform = async (source: string, id: string) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
const result = await (pluginVite.transform! as Function)(source, id)
return typeof result === 'string' ? result : result?.code
}
describe('test devonly transform ', () => {
it('test dev only treeshaking', async () => {
const result = await viteTransform(`
test
test
`, 'some id')
expect(normalizeLineEndings(result)).toMatchInlineSnapshot(`
"
"
`)
expect(result).not.toContain('dev-only')
expect(result).not.toContain('DevOnly')
expect(result).not.toContain('lazy-dev-only')
expect(result).not.toContain('LazyDevOnly')
})
it('should not remove class -> nuxt#24491', async () => {
const source = `
This is red.
This should also be red.
`
const result = await viteTransform(source, 'some id')
expect(result).toMatchInlineSnapshot(`
"
This should also be red.
"
`)
})
})