Skip to content

Commit

Permalink
Add test for colocation with AST plugins.
Browse files Browse the repository at this point in the history
  • Loading branch information
rwjblue committed Sep 30, 2019
1 parent 17247be commit 0baa5ba
Show file tree
Hide file tree
Showing 9 changed files with 93 additions and 2 deletions.
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ module.exports = {
'blueprints/*/index.js',
'config/**/*.js',
'tests/dummy/config/**/*.js',
'tests/dummy/lib/**/*.js',
],
excludedFiles: ['addon/**', 'addon-test-support/**', 'app/**', 'tests/dummy/app/**'],
parserOptions: {
Expand Down
3 changes: 3 additions & 0 deletions ember-cli-build.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
'use strict';

const EmberAddon = require('ember-cli/lib/broccoli/ember-addon');
const { setEdition } = require('@ember/edition-utils');

module.exports = function(defaults) {
setEdition('octane');

let app = new EmberAddon(defaults, {
// Add options here
throwUnlessParallelizable: true,
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-inject-live-reload": "^2.0.1",
"ember-cli-template-lint": "^1.0.0-beta.3",
"ember-cli-version-checker": "^3.1.3",
"ember-export-application-global": "^2.0.0",
"ember-load-initializers": "^2.1.0",
"ember-maybe-import-regenerator": "^0.1.6",
Expand All @@ -75,6 +76,7 @@
"fixturify": "^1.2.0",
"loader.js": "^4.7.0",
"mocha": "^6.2.0",
"module-name-inliner": "link:./tests/dummy/lib/module-name-inliner",
"prettier": "^1.18.2",
"qunit-dom": "^0.9.0",
"release-it": "^12.2.1",
Expand Down
2 changes: 1 addition & 1 deletion tests/dummy/app/components/foo.hbs
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Stuff!!
Module: {{module-name-inliner}}
4 changes: 3 additions & 1 deletion tests/dummy/config/optional-features.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
{
"jquery-integration": false
"application-template-wrapper": false,
"jquery-integration": false,
"template-only-glimmer-components": true
}
49 changes: 49 additions & 0 deletions tests/dummy/lib/module-name-inliner/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict';

let VersionChecker = require('ember-cli-version-checker');

module.exports = {
name: require('./package').name,

isDevelopingAddon() {
return true;
},

setupPreprocessorRegistry(type, registry) {
// can only add the plugin with this style on newer Ember versions
let checker = new VersionChecker(this.project);
if (checker.forEmber().gte('3.1.0')) {
registry.add('htmlbars-ast-plugin', this.buildPlugin());
}
},

buildPlugin() {
// https://astexplorer.net/#/gist/7c8399056873e1ddbd2b1acf0a41592a/e08f2f850de449b77b8ad995085496a1100dfd1f
return {
name: 'module-name-inliner',
baseDir() {
return __dirname;
},
parallelBabel: {
requireFile: __filename,
buildUsing: 'buildPlugin',
params: {},
},
plugin(env) {
let { builders } = env.syntax;

return {
name: 'module-name-inliner',

visitor: {
PathExpression(node) {
if (node.original === 'module-name-inliner') {
return builders.string(env.moduleName);
}
},
},
};
},
};
},
};
10 changes: 10 additions & 0 deletions tests/dummy/lib/module-name-inliner/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"name": "module-name-inliner",
"version": "0.1.0",
"keywords": [
"ember-addon"
],
"dependencies": {
"ember-cli-version-checker": "*"
}
}
20 changes: 20 additions & 0 deletions tests/integration/components/colocation-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render } from '@ember/test-helpers';
import { hbs } from 'ember-cli-htmlbars';
import hasEmberVersion from '@ember/test-helpers/has-ember-version';

module('tests/integration/components/test-inline-precompile', function(hooks) {
if (!hasEmberVersion(3, 13)) {
// can only run against 3.13+ (due to colocation support)
return;
}

setupRenderingTest(hooks);

test('registered ast plugins run against colocated templates (template-only)', async function(assert) {
await render(hbs`<Foo />`);

assert.equal(this.element.textContent.trim(), 'Module: dummy/components/foo.hbs');
});
});
4 changes: 4 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6807,6 +6807,10 @@ mocha@^6.2.0:
yargs-parser "13.0.0"
yargs-unparser "1.5.0"

"module-name-inliner@link:./tests/dummy/lib/module-name-inliner":
version "0.0.0"
uid ""

morgan@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
Expand Down

0 comments on commit 0baa5ba

Please sign in to comment.