ember-introjs
Version:
An Ember Component for intro.js
132 lines (116 loc) • 4.12 kB
JavaScript
import RequireJSRegistry from 'ember-resolver/module-registries/requirejs';
import { module, test} from 'qunit';
export let config = {
app: {
name: 'example-app',
rootName: 'example-app'
},
types: {
component: { definitiveCollection: 'components' },
partial: { definiteCollection: 'partials' },
service: { definitiveCollection: 'services' },
route: { definitiveCollection: 'routes' },
router: { definitiveCollection: 'main' },
template: { definitiveCollection: 'components' }
},
collections: {
'main': {
types: ['router']
},
components: {
group: 'ui',
types: ['component', 'helper', 'template']
},
partials: {
group: 'ui',
types: [ 'template' ]
},
routes: {
defaultType: 'route',
group: 'ui',
privateCollections: ['components'],
types: ['route', 'controller', 'template']
},
services: {
defaultType: 'service',
types: ['service']
}
}
};
function buildMockRequire() {
let mockRequire = modulePath => mockRequire.entries[modulePath];
mockRequire.entries = {};
return mockRequire;
}
module('RequireJS Registry', {
beforeEach() {
this.mockRequire = buildMockRequire();
this.mockRequire.entries = {};
this.config = config;
this.registry = new RequireJSRegistry(this.config, 'src', this.mockRequire);
},
addModule(name, module) {
this.mockRequire.entries[name] = module;
}
});
test('basic get', function(assert) {
assert.expect(8);
[
/*
* Over time lets move these general cases into specific tests that
* describe their aim.
*/
[ 'router:/my-app/main/main', 'my-app/src/router' ],
[ 'route:/my-app/routes/application', 'my-app/src/ui/routes/application/route' ],
[ 'template:/my-app/routes/application', 'my-app/src/ui/routes/application/template' ],
[ 'component:/my-app/components/my-input', 'my-app/src/ui/components/my-input/component' ],
[ 'template:/my-app/routes/components/my-input', 'my-app/src/ui/components/my-input/template' ],
[ 'template:/my-app/components/my-input', 'my-app/src/ui/components/my-input/template' ],
[ 'component:/my-app/components/my-input/my-button', 'my-app/src/ui/components/my-input/my-button/component' ],
[ 'template:/my-app/components/my-input/my-button', 'my-app/src/ui/components/my-input/my-button/template' ]
]
.forEach(([ lookupString, expected ]) => {
let expectedModule = {};
this.mockRequire.entries = {
[expected]: {default: expectedModule}
};
let actualModule = this.registry.get(lookupString);
assert.equal(actualModule, expectedModule, `get ${lookupString} -> ${expected}`);
});
});
test('typed module name with default export', function(assert) {
let expectedModule = {};
this.addModule(`my-app/src/ui/routes/index/route`, {default: expectedModule});
let actualModule = this.registry.get(`route:/my-app/routes/index`);
assert.equal(
actualModule, expectedModule,
`resolved the module`
);
});
test('un-typed module name with default export when resolved type is the defaultType', function(assert) {
let expectedModule = {};
this.addModule(`my-app/src/ui/routes/index`, {default: expectedModule});
let actualModule = this.registry.get(`route:/my-app/routes/index`);
assert.equal(
actualModule, expectedModule,
`resolved the module`
);
});
test('un-typed module name with default export when resolved type is not the defaultType', function(assert) {
let expectedModule = {};
this.addModule(`my-app/src/ui/routes/index`, {default: expectedModule});
let actualModule = this.registry.get(`template:/my-app/routes/index`);
assert.notOk(
actualModule,
`did not resolve the module`
);
});
test('un-typed module name with named export of resolved type', function(assert) {
let expectedModule = {};
this.addModule(`my-app/src/ui/routes/index`, {template: expectedModule});
let actualModule = this.registry.get(`template:/my-app/routes/index`);
assert.equal(
actualModule, expectedModule,
`did not resolve the module`
);
});