import { resolve } from 'path' import { loadFixture, getPort, Nuxt, Builder } from '../utils' describe('nuxt', () => { test('Nuxt Class', () => { expect(typeof Nuxt).toBe('function') }) test('Nuxt Instance', async () => { const config = await loadFixture('empty') const nuxt = new Nuxt(config) await nuxt.ready() expect(typeof nuxt).toBe('object') expect(nuxt.options.dev).toBe(false) expect(typeof nuxt._ready.then).toBe('function') expect(nuxt._initCalled).toBe(true) }) test('Fail to build when no pages/ directory but is in the parent', async () => { const config = await loadFixture('empty') const nuxt = new Nuxt({ ...config, rootDir: resolve(__dirname, '..', 'fixtures', 'empty', 'pages') }) try { await new Builder(nuxt).build() } catch (err) { expect(err.message).toContain('No `pages` directory found') expect(err.message).toContain('Did you mean to run `nuxt` in the parent (`../`) directory?') } expect.hasAssertions() }) test('Build with default page when no pages/ directory', async () => { const config = await loadFixture('missing-pages-dir') const nuxt = new Nuxt(config) await nuxt.ready() const port = await getPort() await nuxt.server.listen(port, '127.0.0.1') const { html } = await nuxt.server.renderRoute('/') expect(html).toContain('

') expect(/Landscape__Page__Explanation/.test(html)).toBe(true) await nuxt.close() }) test('Fail to build when specified plugin isn\'t found', async () => { const config = await loadFixture('missing-plugin') const nuxt = new Nuxt(config) await nuxt.ready() await expect(new Builder(nuxt).build()).rejects.toThrow('Plugin not found') }) test('Warn when styleResource isn\'t found', async () => { const config = await loadFixture('missing-style-resource') const nuxt = new Nuxt(config) await nuxt.ready() await expect(new Builder(nuxt).build()).rejects.toThrow('Style Resource not found') }) })