Skip to content

Commit

Permalink
Pull in blueprint tests and port them to QUnit
Browse files Browse the repository at this point in the history
  • Loading branch information
mmun committed Dec 24, 2015
1 parent 0fa7f0c commit 3a047f3
Show file tree
Hide file tree
Showing 21 changed files with 887 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default } from '<%= modulePath %>';
48 changes: 48 additions & 0 deletions blueprints/addon-import/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*jshint node:true*/

var stringUtil = require('ember-cli-string-utils');
var path = require('path');
var inflector = require('inflection');

module.exports = {
description: 'Generates an import wrapper.',

fileMapTokens: function() {
return {
__name__: function(options) {
if (options.pod && options.hasPathToken) {
return options.originBlueprintName;
}
return options.dasherizedModuleName;
},
__path__: function(options) {
var blueprintName = options.originBlueprintName;

if (options.pod && options.hasPathToken) {
return path.join(options.podPath, options.dasherizedModuleName);
}
return inflector.pluralize(blueprintName);
},
__root__: function(options) {
if (options.inRepoAddon) {
return path.join('lib', options.inRepoAddon, 'app');
}
return 'app';
}
};
},
locals: function(options) {
var addonRawName = options.inRepoAddon ? options.inRepoAddon : options.project.name();
var addonName = stringUtil.dasherize(addonRawName);
var fileName = stringUtil.dasherize(options.entity.name);
var pathName = [addonName, inflector.pluralize(options.originBlueprintName), fileName].join('/');

if (options.pod) {
pathName = [addonName, fileName, options.originBlueprintName].join('/');
}

return {
modulePath: pathName
};
}
};
14 changes: 14 additions & 0 deletions lib/utilities/get-component-path-option.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
'use strict';

module.exports = function getPathOption(options) {
var outputPath = 'components';

if (options.path) {
outputPath = options.path;
} else {
if (options.path === '') {
outputPath = '';
}
}
return outputPath;
};
11 changes: 11 additions & 0 deletions lib/utilities/get-dependency-depth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
'use strict';

module.exports = function getDependencyDepth(options) {
var name = options.entity.name;
var nameParts = name.split('/');
var depth = '../..';

return nameParts.reduce(function(prev) {
return prev + '/..';
}, depth);
};
15 changes: 15 additions & 0 deletions lib/utilities/valid-component-name.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
'use strict';

var SilentError = require('silent-error');

module.exports = function(entityName) {
if(! /\-/.test(entityName)) {
throw new SilentError(
'You specified "' + entityName + '", but in order to prevent ' +
'clashes with current or future HTML element names, you must include ' +
'a hyphen in the component name.'
);
}

return entityName;
};
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@
"bower": "~1.3.2",
"chalk": "^0.5.1",
"ember-cli": "^1.13.13",
"ember-cli-blueprint-test-helpers": "ember-cli/ember-cli-blueprint-test-helpers#qunit",
"ember-cli-dependency-checker": "^1.0.1",
"ember-cli-sauce": "^1.4.2",
"ember-cli-yuidoc": "0.7.0",
"ember-publisher": "0.0.7",
"emberjs-build": "0.5.3",
"express": "^4.5.0",
"finalhandler": "^0.4.0",
"fs-extra": "^0.26.3",
"github": "^0.2.3",
"glob": "~4.3.2",
"htmlbars": "0.14.11",
Expand All @@ -52,6 +54,7 @@
"broccoli-unwatched-tree": "^0.1.1",
"ember-cli-get-component-path-option": "^1.0.0",
"ember-cli-get-dependency-depth": "^1.0.0",
"ember-cli-is-package-missing": "^1.0.0",
"ember-cli-normalize-entity-name": "^1.0.0",
"ember-cli-path-utils": "^1.0.0",
"ember-cli-string-utils": "^1.0.0",
Expand Down
21 changes: 21 additions & 0 deletions tests/node/blueprints/acceptance-test-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var fs = require('fs');
var QUnit = require('qunitjs');
var moduleForBlueprint = require('ember-cli-blueprint-test-helpers/lib/qunit').moduleForBlueprint;
var BlueprintHelper = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');

moduleForBlueprint(QUnit, 'Acceptance | Blueprints | acceptance-test: generate and destroy', {
afterEach: function(assert) {
assert.ok(true, "Test completed successfully.");
}
});

QUnit.test('acceptance-test foo', function() {
return BlueprintHelper.generateAndDestroy(['acceptance-test', 'foo'], {
files: [
{
file: 'tests/acceptance/foo-test.js',
contains: fs.readFileSync('../../tests/node/blueprints/fixtures/acceptance-test-expected.js', 'utf8')
}
]
});
});
42 changes: 42 additions & 0 deletions tests/node/blueprints/component-test-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
var QUnit = require('qunitjs');
var moduleForBlueprint = require('ember-cli-blueprint-test-helpers/lib/qunit').moduleForBlueprint;
var BlueprintHelper = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');

moduleForBlueprint(QUnit, 'Acceptance | Blueprints | component-test: generate and destroy', {
afterEach: function(assert) {
assert.ok(true, "Test completed successfully.");
}
});

QUnit.test('component-test x-foo', function() {
return BlueprintHelper.generateAndDestroy(['component-test', 'x-foo'], {
files: [
{
file: 'tests/integration/components/x-foo-test.js',
contains: [
"import { moduleForComponent, test } from 'ember-qunit';",
"import hbs from 'htmlbars-inline-precompile';",
"moduleForComponent('x-foo'",
"integration: true",
"{{x-foo}}",
"{{#x-foo}}"
]
}
]
});
});

QUnit.test('component-test x-foo --unit', function() {
return BlueprintHelper.generateAndDestroy(['component-test', 'x-foo', '--unit'], {
files: [
{
file: 'tests/unit/components/x-foo-test.js',
contains: [
"import { moduleForComponent, test } from 'ember-qunit';",
"moduleForComponent('x-foo'",
"unit: true"
]
}
]
});
});
101 changes: 101 additions & 0 deletions tests/node/blueprints/component-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
var QUnit = require('qunitjs');
var moduleForBlueprint = require('ember-cli-blueprint-test-helpers/lib/qunit').moduleForBlueprint;
var BlueprintHelper = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');

moduleForBlueprint(QUnit, 'Acceptance | Blueprints | component: generate and destroy', {
afterEach: function(assert) {
assert.ok(true, "Test completed successfully.");
}
});

QUnit.test('component x-foo', function() {
debugger;

return BlueprintHelper.generateAndDestroy(['component', 'x-foo'], {
files: [
{
file: 'app/components/x-foo.js',
contains: [
"import Ember from 'ember';",
"export default Ember.Component.extend({",
"});"
]
},
{
file: 'app/templates/components/x-foo.hbs',
contains: "{{yield}}"
},
{
file: 'tests/integration/components/x-foo-test.js',
contains: [
"import { moduleForComponent, test } from 'ember-qunit';",
"import hbs from 'htmlbars-inline-precompile';",
"moduleForComponent('x-foo'",
"integration: true",
"{{x-foo}}",
"{{#x-foo}}"
]
}
]
});
});

QUnit.test('component foo/x-foo', function() {
return BlueprintHelper.generateAndDestroy(['component', 'foo/x-foo'], {
files: [
{
file: 'app/components/foo/x-foo.js',
contains: [
"import Ember from 'ember';",
"export default Ember.Component.extend({",
"});"
]
},
{
file: 'app/templates/components/foo/x-foo.hbs',
contains: "{{yield}}"
},
{
file: 'tests/integration/components/foo/x-foo-test.js',
contains: [
"import { moduleForComponent, test } from 'ember-qunit';",
"import hbs from 'htmlbars-inline-precompile';",
"moduleForComponent('foo/x-foo'",
"integration: true",
"{{foo/x-foo}}",
"{{#foo/x-foo}}"
]
}
]
});
});

QUnit.test('component x-foo ignores --path option', function() {
return BlueprintHelper.generateAndDestroy(['component', 'x-foo', '--path', 'foo'], {
files: [
{
file: 'app/components/x-foo.js',
contains: [
"import Ember from 'ember';",
"export default Ember.Component.extend({",
"});"
]
},
{
file: 'app/templates/components/x-foo.hbs',
contains: "{{yield}}"
},
{
file: 'tests/integration/components/x-foo-test.js',
contains: [
"import { moduleForComponent, test } from 'ember-qunit';",
"import hbs from 'htmlbars-inline-precompile';",
"moduleForComponent('x-foo'",
"integration: true",
"{{x-foo}}",
"{{#x-foo}}"
]
}
]
});
});
52 changes: 52 additions & 0 deletions tests/node/blueprints/controller-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
var QUnit = require('qunitjs');
var moduleForBlueprint = require('ember-cli-blueprint-test-helpers/lib/qunit').moduleForBlueprint;
var BlueprintHelper = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');
var EOL = require('os').EOL;

moduleForBlueprint(QUnit, 'Acceptance | Blueprints | controller: generate and destroy', {
afterEach: function(assert) {
assert.ok(true, "Test completed successfully.");
}
});

QUnit.test('controller foo', function() {
return BlueprintHelper.generateAndDestroy(['controller', 'foo'], {
files: [
{
file: 'app/controllers/foo.js',
contains: [
"import Ember from 'ember';",
"export default Ember.Controller.extend({" + EOL + "});"
]
},
{
file: 'tests/unit/controllers/foo-test.js',
contains: [
"import { moduleFor, test } from 'ember-qunit';",
"moduleFor('controller:foo'"
]
}
]
});
});

QUnit.test('controller foo/bar', function() {
return BlueprintHelper.generateAndDestroy(['controller', 'foo/bar'], {
files: [
{
file: 'app/controllers/foo/bar.js',
contains: [
"import Ember from 'ember';",
"export default Ember.Controller.extend({" + EOL + "});"
]
},
{
file: 'tests/unit/controllers/foo/bar-test.js',
contains: [
"import { moduleFor, test } from 'ember-qunit';",
"moduleFor('controller:foo/bar'"
]
}
]
});
});
12 changes: 12 additions & 0 deletions tests/node/blueprints/fixtures/acceptance-test-expected.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { test } from 'qunit';
import moduleForAcceptance from 'my-app/tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance | foo');

test('visiting /foo', function(assert) {
visit('/foo');

andThen(function() {
assert.equal(currentURL(), '/foo');
});
});
48 changes: 48 additions & 0 deletions tests/node/blueprints/helper-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
var QUnit = require('qunitjs');
var moduleForBlueprint = require('ember-cli-blueprint-test-helpers/lib/qunit').moduleForBlueprint;
var BlueprintHelper = require('ember-cli-blueprint-test-helpers/lib/helpers/blueprint-helper');
var EOL = require('os').EOL;

moduleForBlueprint(QUnit, 'Acceptance | Blueprints | helper: generate and destroy', {
afterEach: function(assert) {
assert.ok(true, "Test completed successfully.");
}
});

QUnit.test('helper foo-bar', function() {
return BlueprintHelper.generateAndDestroy(['helper', 'foo-bar'], {
files: [
{
file: 'app/helpers/foo-bar.js',
contains: "import Ember from 'ember';" + EOL + EOL +
"export function fooBar(params/*, hash*/) {" + EOL +
" return params;" + EOL +
"}" + EOL + EOL +
"export default Ember.Helper.helper(fooBar);"
},
{
file: 'tests/unit/helpers/foo-bar-test.js',
contains: "import { fooBar } from '../../../helpers/foo-bar';"
}
]
});
});

QUnit.test('helper foo/bar-baz', function() {
return BlueprintHelper.generateAndDestroy(['helper', 'foo/bar-baz'], {
files: [
{
file: 'app/helpers/foo/bar-baz.js',
contains: "import Ember from 'ember';" + EOL + EOL +
"export function fooBarBaz(params/*, hash*/) {" + EOL +
" return params;" + EOL +
"}" + EOL + EOL +
"export default Ember.Helper.helper(fooBarBaz);"
},
{
file: 'tests/unit/helpers/foo/bar-baz-test.js',
contains: "import { fooBarBaz } from '../../../../helpers/foo/bar-baz';"
}
]
});
});
Loading

0 comments on commit 3a047f3

Please sign in to comment.