From f8bf58d26cebc007c0cf5d1ecef83fea1eb9e99b Mon Sep 17 00:00:00 2001 From: Greg Swindle Date: Thu, 16 Nov 2017 04:38:19 -0600 Subject: [PATCH] test(license): achieve 100% coverage #10,#14 --- __tests__/license.spec.js | 81 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 __tests__/license.spec.js diff --git a/__tests__/license.spec.js b/__tests__/license.spec.js new file mode 100644 index 0000000..67727fc --- /dev/null +++ b/__tests__/license.spec.js @@ -0,0 +1,81 @@ +'use strict' +const path = require('path') +const assert = require('yeoman-assert') +const helpers = require('yeoman-test') + +describe('license:generators/license', () => { + it('does not create new package.json', () => { + return helpers + .run(require.resolve('../generators/license')) + .withPrompts({ + name: 'Rick', + email: 'foo@example.com', + website: 'http://example.com', + license: 'MIT' + }) + .then(() => { + assert.file('LICENSE') + assert.noFile('package.json') + }) + }) + + it('edit pre-existing package.json', () => { + return helpers + .run(require.resolve('../generators/license')) + .inTmpDir(function (dir) { + const done = this.async() + const fs = require('fs') + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs.writeFile(path.join(dir, 'package.json'), '{}', done) + }) + .withPrompts({ + name: 'Rick', + email: 'foo@example.com', + website: 'http://example.com', + license: 'MIT' + }) + .then(() => { + assert.file('LICENSE') + assert.fileContent('package.json', '"license": "MIT"') + }) + }) + + it('with author options: --name --email --website', () => { + return helpers + .run(require.resolve('../generators/license')) + .withPrompts({ + license: 'ISC' + }) + .withOptions({ + name: 'Rick', + email: 'foo@example.com', + website: 'http://example.com' + }) + .then(() => { + assert.fileContent('LICENSE', 'ISC') + assert.fileContent('LICENSE', 'Rick (http://example.com)') + assert.noFile('package.json') + }) + }) + + it('makes npm module private when license selected is nolicense', () => { + return helpers + .run(require.resolve('../generators/license')) + .inTmpDir(function (dir) { + const fs = require('fs') + // eslint-disable-next-line security/detect-non-literal-fs-filename + fs.writeFileSync(path.join(dir, 'package.json'), '{}') + }) + .withPrompts({ + name: 'Rick', + email: 'foo@example.com', + website: 'http://example.com', + licensePrompt: 'Choose a license', + license: 'nolicense' + }) + .then(() => { + assert.noFileContent('package.json', '"license"') + assert.fileContent('package.json', '"private": true') + }) + }) +})