UNPKG

3.67 kBJavaScriptView Raw
1import { exec } from 'child-process-promise'
2import renderer from 'react-test-renderer'
3import React from 'react'
4import { copy, readFile } from 'fs-extra'
5import puppeteer from 'puppeteer'
6import getPort from 'get-port'
7import Server from 'static-server'
8import { join } from 'path'
9import { version } from '../package.json'
10
11jest.setTimeout(60 * 1000)
12
13describe(`CLI help`, () => {
14 it(`Should return something`, async () => {
15 let res = await exec(`babel-node dist version`)
16 expect(res.stdout).toEqual(`${version}\n`)
17 expect(res.stderr).toEqual(``)
18 })
19})
20describe(`Build`, () => {
21 beforeAll(async () => {
22 let res = await exec(`babel-node dist build --src src-test --dist dist-test`)
23 expect(res.stderr).toEqual(``)
24 })
25 it(`Should build a valid React component`, async () => {
26 let TestComponent = await import('../dist-test/component')
27 TestComponent = TestComponent.default
28 let component = renderer.create(
29 <TestComponent />
30 )
31 let tree = component.toJSON()
32 expect(tree).toMatchSnapshot()
33 })
34 it(`Should build a valid JavaScript module`, async () => {
35 let TestModule = await import('../dist-test/module')
36 TestModule = TestModule.default
37 expect(TestModule()).toEqual(19)
38 })
39 it(`Should exit on error`, async () => {
40 let res = await exec(`babel-node dist build --src asdf --dist dist-asdf`)
41 expect(res.stderr).toBeTruthy()
42 })
43 afterAll(async () => {
44 await exec(`rm -rf dist-test`)
45 })
46})
47describe(`Bundle`, () => {
48 let server
49 let browser
50 beforeAll(async () => {
51 server = new Server({
52 rootPath: `dist-bundle-test`,
53 port: await getPort(),
54 })
55 server.start()
56 browser = await puppeteer.launch({ args: ['--no-sandbox'] })
57 let res = await exec(`babel-node dist bundle --src src-test/index.html --dist dist-bundle-test`)
58 expect(res.stderr).toEqual(``)
59 })
60 it(`Should build a valid React component`, async () => {
61 let page = await browser.newPage()
62 await page.goto(`http://localhost:${server.port}`)
63 await page.waitForSelector(`.test`)
64 const content = await page.$eval(`.test`, e => e.textContent)
65 expect(content).toEqual(`Testing.`)
66
67 })
68 it(`Should exit on error`, async () => {
69 let res = await exec(`babel-node dist bundle --src src-asdf/index.html --dist dist-asdf`)
70 expect(res.stderr).toBeTruthy()
71 })
72 afterAll(async () => {
73 server.stop()
74 await Promise.all([
75 browser.close(),
76 exec(`rm -rf dist-bundle-test`),
77 exec(`rm -rf dist-asdf`),
78 ])
79 })
80})
81describe(`Rename`, () => {
82 beforeAll(async () => {
83 await Promise.all([
84 copy(`./package.json`, `./dist-test/package.json`),
85 copy(`./src-test/serverless.yml`, `./dist-test/serverless.yml`),
86 ])
87 let res = await exec(`cd dist-test && babel-node ../dist rename`)
88 expect(res.stderr).toEqual(``)
89 })
90 it(`Should rename a package.json file`, async () => {
91 let pkg = await import(`../dist-test/package.json`)
92 expect(pkg.name).toEqual(`dist-test`)
93 })
94 it(`Should rename a serverless.yml file`, async () => {
95 let config = await readFile(`./dist-test/serverless.yml`)
96 config = config.toString()
97 config = config.split(`\n`)
98 expect(config[0]).toEqual(`service: dist-test`)
99 })
100 afterAll(async () => {
101 await exec(`rm -rf dist-test`)
102 })
103})
104describe(`Run`, () => {
105 it(`Should run a file with ES6`, async () => {
106 let res = await exec(`babel-node dist run --file src-test/run.js`)
107 expect(res.stderr).toEqual(``)
108 res = res.stdout.trim()
109 res = res.split(`\n`)
110 res = res.pop()
111 expect(res).toEqual(`19`)
112 })
113 it(`Should exit on error`, async () => {
114 let res = await exec(`babel-node dist run --file src-asdf/run.js`)
115 expect(res.stderr).toBeTruthy()
116 })
117 afterAll(async () => {
118 await exec(`rm -rf dist-test`)
119 })
120})