Nuxt/test/dev/basic.plugins.test.js

52 lines
1.9 KiB
JavaScript

import { getPort, loadFixture, Nuxt } from '../utils'
let port
const url = route => 'http://127.0.0.1:' + port + route
let nuxt = null
describe('plugins', () => {
beforeAll(async () => {
const config = await loadFixture('basic')
nuxt = new Nuxt(config)
await nuxt.ready()
port = await getPort()
await nuxt.server.listen(port, '127.0.0.1')
})
test('/', async () => {
const window = await nuxt.server.renderAndGetWindow(url('/'))
expect(window.__test_plugin).toBe(true)
})
test('inject fails if value is undefined', async () => {
// inject('injectedProperty', undefined)
await expect(nuxt.renderRoute('/?injectValue=undefined')).rejects.toThrowError('inject(\'injectedProperty\', value) has no value provided')
})
test('inject succeeds if value is defined but evaluates to false', async () => {
// inject('injectedProperty', null)
await expect(nuxt.renderRoute('/?injectValue=null')).resolves.not.toThrowError()
// inject('injectedProperty', false)
await expect(nuxt.renderRoute('/?injectValue=false')).resolves.not.toThrowError()
// inject('injectedProperty', 0)
await expect(nuxt.renderRoute('/?injectValue=0')).resolves.not.toThrowError()
// inject('injectedProperty', '')
await expect(nuxt.renderRoute('/?injectValue=empty')).resolves.not.toThrowError()
})
test('inject should add to context and prototypes', async () => {
const window = await nuxt.server.renderAndGetWindow(url('/?injectValue=foo'))
// inject('injectedProperty', 'bar')
await expect(window.$nuxt.$injectedProperty).toBe('bar')
await expect(window.$nuxt.context.$injectedProperty).toBe('bar')
await expect(window.$nuxt.context.app.$injectedProperty).toBe('bar')
await expect(window.$nuxt.$store.$injectedProperty).toBe('bar')
})
// Close server and ask nuxt to stop listening to file changes
afterAll(async () => {
await nuxt.close()
})
})