import PluginVue from '../src/index'
describe('Rollup Plugin Vue', () => {
describe('transform', () => {
let transform: (code: string, fileName: string) => Promise<{ code: string }>
beforeEach(() => {
transform = PluginVue({ customBlocks: ['*'] }).transform as any
})
it('should transform `,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import script from "example.vue?vue&type=script&lang.js"`
)
)
expect(code).toEqual(
expect.stringContaining(
`export * from "example.vue?vue&type=script&lang.js"`
)
)
expect(code).toEqual(expect.stringContaining(`export default script`))
})
it('should transform `,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import script from "example.vue?vue&type=script&lang.ts"`
)
)
expect(code).toEqual(
expect.stringContaining(
`export * from "example.vue?vue&type=script&lang.ts"`
)
)
expect(code).toEqual(expect.stringContaining(`export default script`))
})
it('should transform block', async () => {
const { code } = await transform(
``,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import { render } from "example.vue?vue&type=template&id=063a7d4c&lang.js"`
)
)
expect(code).toEqual(expect.stringContaining(`script.render = render`))
})
it('should transform block', async () => {
const { code } = await transform(
`div`,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import { render } from "example.vue?vue&type=template&id=063a7d4c&lang.js"`
)
)
expect(code).toEqual(expect.stringContaining(`script.render = render`))
})
it('should transform `, `example.vue`)
expect(code).toEqual(
expect.stringContaining(
`import "example.vue?vue&type=style&index=0&id=063a7d4c&lang.css"`
)
)
})
it('should transform `,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import "example.vue?vue&type=style&index=0&id=063a7d4c&scoped=true&lang.css`
)
)
})
it('should transform `,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import "example.vue?vue&type=style&index=0&id=063a7d4c&lang.css`
)
)
expect(code).toEqual(
expect.stringContaining(
`import style0 from "example.vue?vue&type=style&index=0&id=063a7d4c&module=true&lang.css`
)
)
expect(code).toEqual(expect.stringContaining('script.__cssModules = {}'))
expect(code).toEqual(
expect.stringContaining('cssModules["$style"] = style0')
)
})
it('should transform `,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import "example.vue?vue&type=style&index=0&id=063a7d4c&lang.css`
)
)
expect(code).toEqual(
expect.stringContaining(
`import style0 from "example.vue?vue&type=style&index=0&id=063a7d4c&module=custom&lang.css`
)
)
expect(code).toEqual(expect.stringContaining('script.__cssModules = {}'))
expect(code).toEqual(
expect.stringContaining('cssModules["custom"] = style0')
)
})
it.skip('should transform multiple
`,
`example.vue`
)
// TODO: Maybe warn about duplicate css module?
})
it('should transform block', async () => {
const { code } = await transform(`{}`, `example.vue`)
expect(code).toEqual(
expect.stringContaining(
`import block0 from "example.vue?vue&type=i18n&index=0&lang.i18n`
)
)
expect(code).toEqual(expect.stringContaining('block0(script)'))
})
it('should transform block', async () => {
const { code } = await transform(
`{}`,
`example.vue`
)
expect(code).toEqual(
expect.stringContaining(
`import block0 from "example.vue?vue&type=i18n&index=0&lang.json`
)
)
expect(code).toEqual(expect.stringContaining('block0(script)'))
})
})
})