UNPKG

react-raise

Version:

a react cli starter kit that bootstraps a react application

258 lines (246 loc) 9.44 kB
const mkdirp = require('mkdirp'); const path = require('path'); const fs = require('fs'); const exec = require('child_process').exec; const Generate = require('../../lib/Generate'); const baseDir = require('../../lib/baseDir'); describe('Generate', () => { let generate; beforeEach((done) => { generate = new Generate('test/lib/example'); mkdirp.sync(path.join(__dirname, `example`), (err) => { if (err) { done(err); } }); done(); }); afterEach((done) => { const filepath = path.join(__dirname, 'example'); exec('rm -r ' + filepath, function (err, stdout, stderr) { if (err) { return done(err); } return done(); }); }); it('Should create an instance of Generate class', () => { generate = new Generate(); expect(generate).to.be.instanceOf(Generate); }); describe('Package', () => { it('should create a package.json file with provided setup info', (done) => { generate.package({ express: 'y', author: 'Test', main: 'main.js', description: 'A test app', name: 'test', license: 'ISC' }).then(() => { expect(baseDir.directoryExists(path.join(__dirname, '/example/package.json'))).to.eql(true); fs.readFile( path.join(__dirname, '/example/package.json'), (err, data) => { if (err) { return done(err); } const package = JSON.parse(data.toString()); expect(package.author).to.eql('Test'); expect(package.main).to.eql('main.js'); expect(package.name).to.eql('test'); expect(package.license).to.eql('ISC'); expect(package.dependencies).to.have.property('express'); done(); }); }); }); it('should create a package.json file with provided setup info and default info', (done) => { generate.package({ express: 'n', name: 'test', }).then(() => { expect(baseDir.directoryExists(path.join(__dirname, '/example/package.json'))).to.eql(true); fs.readFile( path.join(__dirname, '/example/package.json'), (err, data) => { if (err) { return done(err); } const package = JSON.parse(data.toString()); expect(package.author).to.eql(''); expect(package.main).to.eql('index.js'); expect(package.name).to.eql('test'); expect(package.license).to.eql('MIT'); expect(package.dependencies).to.not.have.property('express'); done(); }); }).catch((err) => console.log(err)); }); it('should fail to create package.json file if error occurs', (done) => { generate = new Generate('tst/lib'); generate.package({ express: 'n', name: 'test', }).catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); describe('Webpack', () => { it('should create a webpack.config.js file with provided setup info', (done) => { generate.webpack().then((config) => { expect(baseDir.directoryExists(path.join(__dirname, '/example/webpack.config.js'))).to.eql(true); fs.readFile( path.join(__dirname, '../../sample/webpack.config.sample'), (err, data) => { if (err) { return done(err); } const webpack = data.toString(); expect(webpack).to.eql(config); done(); }); }); }); it('should create a webpack.config.js file with express support', (done) => { generate.webpack('y').then((config) => { expect(baseDir.directoryExists(path.join(__dirname, '/example/webpack.config.js'))).to.eql(true); fs.readFile( path.join(__dirname, '../../sample/webpack.config.sample'), (err, data) => { if (err) { return done(err); } let webpack = data.toString(); webpack = webpack.replace( '\'webpack-dev-server/client?/\',', '//\'webpack-dev-server/client?/\''); webpack = webpack.replace( 'webpack/hot/dev-server', 'webpack-hot-middleware/client?reload=true'); // console.log(webpack); expect(webpack).to.eql(config); done(); }); }); }); it('should fail to create a webpack.config.js file if error occurs', (done) => { generate = new Generate('/ts/'); generate.webpack().catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); describe('Babelrc', () => { it('should create a .babelrc file with sample setup info', (done) => { generate.babelrc().then((config) => { expect(baseDir.directoryExists(path.join(__dirname, '/example/.babelrc'))).to.eql(true); fs.readFile( path.join(__dirname, '../../sample/babelrc.sample'), (err, data) => { const babelrc = data.toString(); expect(babelrc).to.eql(config); done(); }); }); }); it('should fail to create a .babelrc file if error occurs', (done) => { generate = new Generate('/ts/'); generate.babelrc().catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); describe('Eslintrc', () => { it('should create a .eslintrc file with sample setup info', (done) => { generate.eslintrc().then((config) => { expect(baseDir.directoryExists(path.join(__dirname, '/example/.eslintrc'))).to.eql(true); fs.readFile( path.join(__dirname, '../../sample/eslintrc.sample'), (err, data) => { const eslintrc = data.toString(); expect(eslintrc).to.eql(config); done(); }); }); }); it('should fail to create a .eslintrc file if error occurs', (done) => { generate = new Generate('/ts/'); generate.eslintrc().catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); describe('Express', () => { it('should create an express server file with sample setup info', (done) => { generate.express('server.js').then((config) => { expect(baseDir.directoryExists(path.join(__dirname, '/example/server.js'))).to.eql(true); fs.readFile( path.join(__dirname, '../../sample/express.sample'), (err, data) => { const express = data.toString(); expect(express).to.eql(config); done(); }); }); }); it('should fail to create an express server file if error occurs', (done) => { generate = new Generate('/ts/'); generate.express('server.js').catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); describe('All', () => { it('should create a .eslintrc, webpack.config.js, .babelrc, package.json express server', (done) => { generate.all({ express: 'y', author: 'Test', main: 'main.js', description: 'A test app', name: 'test', license: 'ISC' }).then(() => { expect(baseDir.directoryExists(path.join(__dirname, '/example/.eslintrc'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/.babelrc'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/webpack.config.js'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/package.json'))).to.eql(true); done(); }); }); it('should create a .eslintrc, webpack.config.js, .babelrc, package.json', (done) => { generate.all({ express: 'n', author: 'Test', main: 'main.js', description: 'A test app', name: 'test', license: 'ISC' }).then(() => { expect(baseDir.directoryExists(path.join(__dirname, '/example/.eslintrc'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/.babelrc'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/webpack.config.js'))).to.eql(true); expect(baseDir.directoryExists(path.join(__dirname, '/example/package.json'))).to.eql(true); done(); }); }); it('should fail to create webpack.config.js file if error occurs', (done) => { generate = new Generate('tst/lib'); generate.all({ express: 'n', name: 'test', }).catch((err) => { expect(err).to.have.property('errno'); done(); }); }); }); });