Skip to content

Commit

Permalink
Change expectComponent, expectView, lookup* to take container
Browse files Browse the repository at this point in the history
  • Loading branch information
bantic committed Aug 11, 2015
1 parent eec7c5b commit 2cfc1b8
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 21 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"ember-cli-test-loader": "ember-cli-test-loader#0.1.3",
"ember-data": "1.13.2",
"ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4",
"ember-qunit": "0.3.3",
"ember-qunit": "0.4.9",
"ember-qunit-notifications": "0.0.7",
"ember-resolver": "~0.1.15",
"jquery": "^1.11.1",
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"ember-cli-content-security-policy": "0.4.0",
"ember-cli-dependency-checker": "^1.0.0",
"ember-cli-htmlbars": "0.7.6",
"ember-cli-htmlbars-inline-precompile": "^0.2.0",
"ember-cli-ic-ajax": "0.1.1",
"ember-cli-inject-live-reload": "^1.3.0",
"ember-cli-qunit": "0.3.13",
Expand Down
5 changes: 3 additions & 2 deletions test-support/helpers/201-created/async.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ import {lookupComponent} from './utils/lookup';
import findComponentElements from './utils/find-component-elements';

export function clickComponent(app, expectation, selector){
var Component = lookupComponent(app, expectation);
var container = app.container;
var Component = lookupComponent(container, expectation);

if (!Component) {
ok(false, 'No Component called ' + expectation + ' exists.');
return;
}

var elements = findComponentElements(app, Component);
var elements = findComponentElements(container, Component);
var context = app.$(elements);

return app.testHelpers.click(selector, context);
Expand Down
14 changes: 10 additions & 4 deletions test-support/helpers/201-created/raw/expect-component.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,15 @@ import eachView from '../utils/each-view';

var K = function(){};

export default function(app, expectation, count, options, customMessage){
var Component = lookupComponent(app, expectation);
var $ = app.$;
export default function(appOrContainer, expectation, count, options, customMessage){
var container;
if (appOrContainer.__container__) {
container = appOrContainer.__container__;
} else {
container = appOrContainer;
}
var Component = lookupComponent(container, expectation);
var $ = Ember.$;

if (!Component) {
return {
Expand All @@ -22,7 +28,7 @@ export default function(app, expectation, count, options, customMessage){

var elements = [];

eachView(app, function(view){
eachView(container, function(view){
if (Component.detectInstance(view)) {
found++;
callbackFn(view, found);
Expand Down
10 changes: 4 additions & 6 deletions test-support/helpers/201-created/utils/each-view.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import {lookupRouter} from './lookup';

function iterateViews(callback, callbackHistory){
return function(view) {
if (!view.get) {
Expand All @@ -25,13 +23,13 @@ function iterateViews(callback, callbackHistory){
};
}

export default function(app, callback){
var allViews = app.__container__.lookup('-view-registry:main');
export default function(container, callback){
var allViews = container.lookup('-view-registry:main');

if ( ! allViews ) { // Ember 1.11.0 compatibility
allViews = Ember.View.views;
}
}

var views = Object.keys(allViews).map(function(viewName) {
return allViews[viewName];
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import eachView from './each-view';

export default function findComponentElements(app, componentKlass) {
export default function findComponentElements(container, componentKlass) {
var elements = [];
eachView(app, function(view){
eachView(container, function(view){
if (componentKlass.detectInstance(view)) {
elements.push(view.element);
}
Expand Down
12 changes: 6 additions & 6 deletions test-support/helpers/201-created/utils/lookup.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
export function lookupRouter(app){
return app.__container__.lookup('router:main');
export function lookupRouter(container){
return container.lookup('router:main');
}

export function lookupComponent(app, componentName){
return app.__container__.lookupFactory('component:' + componentName);
export function lookupComponent(container, componentName){
return container.lookupFactory('component:' + componentName);
}

export function lookupView(app, viewName){
return app.__container__.lookupFactory('view:' + viewName);
export function lookupView(container, viewName){
return container.lookupFactory('view:' + viewName);
}
27 changes: 27 additions & 0 deletions tests/integration/expect-component-hbs-integration-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import Ember from 'ember';
import expectComponent from '../helpers/201-created/raw/expect-component';
import { moduleForComponent, test } from 'ember-qunit';
import hbs from 'htmlbars-inline-precompile';

moduleForComponent('simple-component', {
integration: true
});

test('finds root component in hbs integration test', function(assert) {
this.render(hbs`{{simple-component}}`);
var result = expectComponent(this.container, 'simple-component', 1);
assert.ok(result.ok, "expected success");
});

test('does not find component when not present in hbs integration test', function(assert) {
this.render(hbs`{{another-component}}`);
var result = expectComponent(this.container, 'simple-component', 1);
assert.ok(!result.ok, "expected a failure");
});

test('finds inner component in hbs integration test', function(assert) {
this.render(hbs`{{compound-component}}`);
var result = expectComponent(this.container, 'simple-component', 1);
assert.ok(result.ok, "expected success");
});

0 comments on commit 2cfc1b8

Please sign in to comment.