Skip to content

Commit

Permalink
Merge pull request #158 from rwjblue/use-partial
Browse files Browse the repository at this point in the history
Refactor `moduleForComponent` rendering to use outlet system.
  • Loading branch information
rwjblue committed Jun 6, 2016
2 parents 9a4725d + 696da08 commit 96f1aba
Show file tree
Hide file tree
Showing 7 changed files with 410 additions and 115 deletions.
126 changes: 106 additions & 20 deletions config/ember-try.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,40 +64,126 @@ module.exports = {
}
},
{
name: 'ember-release',
name: 'ember-2.3',
dependencies: {
"ember": "components/ember#release"
"ember": "~2.3.0"
},
devDependencies: {
"ember-data": "~2.2.0"
"ember-data": "~2.3.0"
}
},
{
name: 'ember-2.4',
bower: {
dependencies: {
"ember": "~2.4.0"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "~2.4.0"
}
},
resolutions: {
"ember": "release"
npm: {
devDependencies: {
"ember-data": "~2.4"
}
}
},
{
name: 'ember-beta',
dependencies: {
"ember": "components/ember#beta"
name: 'ember-2.5',
bower: {
dependencies: {
"ember": "~2.5.0"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "~2.5.0"
}
},
devDependencies: {
"ember-data": "~2.2.0"
npm: {
devDependencies: {
"ember-data": "~2.5"
}
}
},
{
name: 'ember-2.6',
bower: {
dependencies: {
"ember": "~2.6.0-beta.1"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "~2.6.0-beta.1"
}
},
resolutions: {
"ember": "beta"
npm: {
devDependencies: {
"ember-data": "^2.5.0"
}
}
},
{
name: 'ember-canary',
allowedToFail: true,
dependencies: {
"ember": "components/ember#canary"
name: 'ember-release',
bower: {
dependencies: {
"ember": "components/ember#release"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "release"
}
},
devDependencies: {
"ember-data": "~2.2.0"
npm: {
devDependencies: {
"ember-data": "^2.5.0"
}
}
},
{
name: 'ember-beta',
bower: {
dependencies: {
"ember": "components/ember#beta"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "beta"
}
},
resolutions: {
"ember": "canary"
npm: {
devDependencies: {
"ember-data": "^2.5.0"
}
}
},
{
name: 'ember-canary',
bower: {
dependencies: {
"ember": "components/ember#canary"
},
devDependencies: {
"ember-cli-shims": "ember-cli/ember-cli-shims#0.1.0"
},
resolutions: {
"ember": "canary"
}
},
npm: {
devDependencies: {
"ember-data": "^2.5.0"
}
}
},
{
Expand Down
90 changes: 90 additions & 0 deletions lib/ember-test-helpers/-legacy-overrides.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import Ember from 'ember';

import hasEmberVersion from './has-ember-version';

export function preoutletRefactorSetupIntegrationForComponent() {
var module = this;
var context = this.context;

this.actionHooks = {};

context.dispatcher = this.container.lookup('event_dispatcher:main') || Ember.EventDispatcher.create();
context.dispatcher.setup({}, '#ember-testing');
context.actions = module.actionHooks;

(this.registry || this.container).register('component:-test-holder', Ember.Component.extend());

context.render = function(template) {
// in case `this.render` is called twice, make sure to teardown the first invocation
module.teardownComponent();

if (!template) {
throw new Error("in a component integration test you must pass a template to `render()`");
}
if (Ember.isArray(template)) {
template = template.join('');
}
if (typeof template === 'string') {
template = Ember.Handlebars.compile(template);
}
module.component = module.container.lookupFactory('component:-test-holder').create({
layout: template
});

module.component.set('context' ,context);
module.component.set('controller', context);

Ember.run(function() {
module.component.appendTo('#ember-testing');
});
};

context.$ = function() {
return module.component.$.apply(module.component, arguments);
};

context.set = function(key, value) {
var ret = Ember.run(function() {
return Ember.set(context, key, value);
});

if (hasEmberVersion(2,0)) {
return ret;
}
};

context.setProperties = function(hash) {
var ret = Ember.run(function() {
return Ember.setProperties(context, hash);
});

if (hasEmberVersion(2,0)) {
return ret;
}
};

context.get = function(key) {
return Ember.get(context, key);
};

context.getProperties = function() {
var args = Array.prototype.slice.call(arguments);
return Ember.getProperties(context, args);
};

context.on = function(actionName, handler) {
module.actionHooks[actionName] = handler;
};

context.send = function(actionName) {
var hook = module.actionHooks[actionName];
if (!hook) {
throw new Error("integration testing template received unexpected action " + actionName);
}
hook.apply(module, Array.prototype.slice.call(arguments, 1));
};

context.clearRender = function() {
module.teardownComponent();
};
}
Loading

0 comments on commit 96f1aba

Please sign in to comment.