Skip to content

Commit

Permalink
Use Application.create().buildInstance() when possible.
Browse files Browse the repository at this point in the history
  • Loading branch information
rwjblue committed Nov 6, 2017
1 parent 2ca09b6 commit 23b62cb
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 17 deletions.
9 changes: 9 additions & 0 deletions addon-test-support/application.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
var __application__;

export function setApplication(Application) {
__application__ = Application.create({ autoboot: false });
}

export function getApplication() {
return __application__;
}
24 changes: 13 additions & 11 deletions addon-test-support/build-owner.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,14 @@ import global from './global';
import ApplicationInstance from '@ember/application/instance';
import Application from '@ember/application';
import EmberObject from '@ember/object';
import { Promise } from 'rsvp';

import require from 'require';
import Ember from 'ember';
import { getResolver } from './resolver';
import { getApplication } from './application';

const Owner = (function() {
// this module only supports Ember 2.4+ but is evaluated
// on older Ember versions (which we support via the legacy-0-6 API)
// and calling `.extend` with undefined is an issue
if (Ember._RegistryProxyMixin && Ember._ContainerProxyMixin) {
return EmberObject.extend(Ember._RegistryProxyMixin, Ember._ContainerProxyMixin);
}

return EmberObject.extend();
})();
let Owner;

// different than the legacy-0-6-x version (build-registry.js)
// in the following ways:
Expand All @@ -27,6 +20,15 @@ const Owner = (function() {
// * returns "owner" (instead of a POJO with registry/container)
// * directly calls getResolver if one was not provided
export default function(resolver = getResolver()) {
let application = getApplication();
if (application) {
return application.boot().then(app => app.buildInstance().boot());
}

if (Owner === undefined) {
Owner = EmberObject.extend(Ember._RegistryProxyMixin, Ember._ContainerProxyMixin);
}

let fallbackRegistry, registry, container;
let namespace = EmberObject.create({
Resolver: {
Expand Down Expand Up @@ -104,5 +106,5 @@ export default function(resolver = getResolver()) {
}
}

return owner;
return Promise.resolve().then(() => owner);
}
1 change: 1 addition & 0 deletions addon-test-support/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ export { default as TestModuleForComponent } from './legacy-0-6-x/test-module-fo
export { default as TestModuleForModel } from './legacy-0-6-x/test-module-for-model';

export { setResolver } from './resolver';
export { setApplication } from './application';
export {
default as setupContext,
getContext,
Expand Down
12 changes: 7 additions & 5 deletions addon-test-support/setup-context.js
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,13 @@ export default function(context, options = {}) {

return new Promise(resolve => {
// ensure "real" async and not "fake" RSVP based async
next(() => {
next(resolve);
})
.then(() => {
let resolver = options.resolver;
let owner = buildOwner(resolver);

return buildOwner(resolver);
})
.then(owner => {
context.owner = owner;

context.set = function(key, value) {
Expand Down Expand Up @@ -110,7 +113,6 @@ export default function(context, options = {}) {
_setupAJAXHooks();
_setupPromiseListeners();

resolve(context);
return context;
});
});
}
4 changes: 3 additions & 1 deletion tests/helpers/resolver.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ import { run } from '@ember/runloop';
import { dasherize } from '@ember/string';
import AppResolver from '../../resolver';
import config from '../../config/environment';
import { setResolver } from 'ember-test-helpers';
import { setResolver, setApplication } from 'ember-test-helpers';
import require from 'require';
import App from '../../app';

const Resolver = AppResolver.extend({
registry: {},
Expand All @@ -22,6 +23,7 @@ resolver.namespace = {
};

setResolver(resolver);
setApplication(App);

export function setResolverRegistry(registry) {
run(resolver, 'set', 'registry', registry);
Expand Down

0 comments on commit 23b62cb

Please sign in to comment.