/*
* Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt The complete set of authors may be found
* at http://polymer.github.io/AUTHORS.txt The complete set of contributors may
* be found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by
* Google as part of the polymer project is also subject to an additional IP
* rights grant found at http://polymer.github.io/PATENTS.txt
*/
import {assert} from 'chai';
import * as fs from 'fs-extra';
import * as path from 'path';
import * as yoAssert from 'yeoman-assert';
import * as helpers from 'yeoman-test';
import {createApplicationGenerator} from '../../../init/application/application';
suite('init/application', () => {
test(
'creates expected 1.x files while passed the 1.x template name',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-1.x');
helpers.run(TestGenerator)
.withPrompts({name: 'foobar'})
.on('end', () => {
yoAssert.file(['bower.json']);
yoAssert.fileContent(
'src/foobar-app/foobar-app.html', 'Polymer({');
done();
});
});
test(
'creates expected 2.x files while passed the 2.x template name',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-2.x');
helpers.run(TestGenerator)
.withPrompts({name: 'foobar'})
.on('end', () => {
yoAssert.file(['bower.json']);
yoAssert.fileContent(
'src/foobar-app/foobar-app.html',
'class FoobarApp extends Polymer.Element');
done();
});
});
test(
'index.html description meta tag matches description prompt (1.x)',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-1.x');
const description = 'This is a description entered by the prompt';
helpers.run(TestGenerator)
.withPrompts({name: 'foobar', description: description})
.on('end', () => {
yoAssert.fileContent(
'index.html',
``);
done();
});
});
test(
'index.html description meta tag contains default without prompt (1.x)',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-1.x');
helpers.run(TestGenerator)
.withPrompts({name: 'foobar'})
.on('end', () => {
yoAssert.fileContent(
'index.html',
'');
done();
});
});
test(
'index.html description meta tag matches description prompt (2.x)',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-2.x');
const description = 'This is a description entered by the prompt';
helpers.run(TestGenerator)
.withPrompts({name: 'foobar', description: description})
.on('end', () => {
yoAssert.fileContent(
'index.html',
``);
done();
});
});
test(
'index.html description meta tag contains default without prompt (2.x)',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-2.x');
helpers.run(TestGenerator)
.withPrompts({name: 'foobar'})
.on('end', () => {
yoAssert.fileContent(
'index.html',
'');
done();
});
});
test(
'ignoring filenames with dangling underscores when generating templates',
(done) => {
const TestGenerator = createApplicationGenerator('polymer-1.x');
helpers.run(TestGenerator).on('end', () => {
yoAssert.noFile(['src/_element/_element.html']);
done();
});
});
test('works when package.json with no name is present', (done) => {
const TestGenerator = createApplicationGenerator('polymer-1.x');
helpers.run(TestGenerator)
.inTmpDir((tempDir: string) => {
fs.writeFileSync(path.join(tempDir, 'package.json'), '{}');
})
.on('error',
(_error: {}) => {
assert.fail();
done();
})
.on('end', () => {
done();
});
});
});