Skip to content

Commit

Permalink
Merge pull request #327 from ro0gr/property-tests
Browse files Browse the repository at this point in the history
change property unit tests to assert against real DOM
  • Loading branch information
san650 authored Oct 1, 2017
2 parents e79594e + 3ce8d1d commit da76a88
Show file tree
Hide file tree
Showing 8 changed files with 255 additions and 328 deletions.
21 changes: 8 additions & 13 deletions tests/helpers/properties/acceptance-adapter.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import Ember from 'ember';
import startApp from '../start-app';
import { module as qunitModule } from 'qunit';

export { test as testForAcceptance } from 'qunit';

import Ember from 'ember';

let noop = function() {};

export function AcceptanceAdapter(original) {
Expand All @@ -20,16 +21,8 @@ export function AcceptanceAdapter(original) {
AcceptanceAdapter.prototype = {
name: 'acceptance',

click(fn) {
window.click = fn;
},

fillIn(fn) {
this.spy.fillIn = fn;
},

triggerEvent(fn /*selector, container, eventName, eventOptions*/) {
window.triggerEvent = fn;
$(selector, isAlternative) {
return Ember.$(selector, isAlternative ? '#alternate-ember-testing' : '#ember-testing');
},

visit(fn) {
Expand All @@ -38,8 +31,6 @@ AcceptanceAdapter.prototype = {

revert() {
this.original.prototype = Object.create(this.originalPrototype);
window.click = this.originalClick;
window.triggerEvent = this.originalTriggerEvent;
window.visit = this.originalVisit;
},

Expand All @@ -53,6 +44,10 @@ AcceptanceAdapter.prototype = {
fixture(template, options);
},

find() {
return this.original.find(...arguments);
},

throws(assert, block, expected, message) {
let done = assert.async();

Expand Down
19 changes: 8 additions & 11 deletions tests/helpers/properties/integration-adapter.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import Ember from 'ember';
import { fixture } from './acceptance-adapter';
export { moduleForComponent as moduleForIntegration, test as testForIntegration } from 'ember-qunit';
import { expectEmberError } from '../../test-helper';

import Ember from 'ember';

export function IntegrationAdapter(original) {
this.original = original;
this.originalPrototype = original.prototype;
Expand All @@ -14,16 +15,8 @@ export function IntegrationAdapter(original) {
IntegrationAdapter.prototype = {
name: 'integration',

click(fn) {
this.spy.click = fn;
},

fillIn(fn) {
this.spy.fillIn = fn;
},

triggerEvent(fn) {
this.spy.triggerEvent = fn;
$(selector, isAlternative) {
return Ember.$(selector, isAlternative ? '#alternate-ember-testing' : '#ember-testing');
},

revert() {
Expand Down Expand Up @@ -58,6 +51,10 @@ IntegrationAdapter.prototype = {
});
},

find() {
return this.original.find(...arguments);
},

andThen(fn) {
fn();
},
Expand Down
12 changes: 6 additions & 6 deletions tests/unit/-private/properties/alias-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ moduleForProperty('alias', function(test) {

this.adapter.createTemplate(this, page, '<button>Click me</button>');

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
this.adapter.$('button').on('click', function() {
assert.ok(true);
});

page.aliasedClickButton();
Expand Down Expand Up @@ -95,8 +95,8 @@ moduleForProperty('alias', function(test) {

this.adapter.createTemplate(this, page, '<button>Click me</button>');

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
this.adapter.$('button').on('click', function() {
assert.ok(true);
});

page.aliasedClickButton();
Expand Down Expand Up @@ -159,8 +159,8 @@ moduleForProperty('alias', function(test) {

this.adapter.createTemplate(this, page, '<button>Click me</button>');

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
this.adapter.$('button').on('click', function() {
assert.ok(true);
});

page.aliasedClickButton();
Expand Down
106 changes: 40 additions & 66 deletions tests/unit/-private/properties/click-on-text-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,7 @@ moduleForProperty('clickOnText', function(test) {
test('calls click helper', function(assert) {
assert.expect(2);

let expectedSelector;
let page;

page = create({
let page = create({
foo: clickOnText('fieldset'),
bar: clickOnText('button')
});
Expand All @@ -20,28 +17,30 @@ moduleForProperty('clickOnText', function(test) {
</fieldset>
`);

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
});

this.adapter.andThen(() => {
expectedSelector = 'fieldset :contains("Lorem"):last';
this.adapter.$('fieldset :contains("Lorem"):last').one('click', function() {
assert.ok(true);
});

page.foo('Lorem');

return this.adapter.wait();
});

this.adapter.andThen(() => {
expectedSelector = 'button:contains("Lorem")';
this.adapter.$('button:contains("Lorem")').one('click', function() {
assert.ok(true);
});
page.bar('Lorem');

return this.adapter.wait();
});
});

test('looks for elements inside the scope', function(assert) {
assert.expect(2);

let expectedSelector;
let page;

page = create({
let page = create({
foo: clickOnText('fieldset', { scope: '.scope' }),
bar: clickOnText('button', { scope: '.scope' })
});
Expand All @@ -55,18 +54,18 @@ moduleForProperty('clickOnText', function(test) {
</div>
`);

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
});

this.adapter.andThen(() => {
expectedSelector = '.scope fieldset :contains("Lorem"):last';
this.adapter.$('.scope fieldset :contains("Lorem"):last').one('click', () => assert.ok(1));
page.foo('Lorem');

return this.adapter.wait();
});

this.adapter.andThen(() => {
expectedSelector = '.scope button:contains("Lorem")';
this.adapter.$('.scope button:contains("Lorem")').one('click', () => assert.ok(1));
page.bar('Lorem');

return this.adapter.wait();
});

return this.adapter.wait();
Expand All @@ -75,10 +74,7 @@ moduleForProperty('clickOnText', function(test) {
test("looks for elements inside page's scope", function(assert) {
assert.expect(2);

let page;
let expectedSelector;

page = create({
let page = create({
scope: '.scope',
foo: clickOnText('fieldset'),
bar: clickOnText('button')
Expand All @@ -93,28 +89,25 @@ moduleForProperty('clickOnText', function(test) {
</div>
`);

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
});

this.adapter.andThen(() => {
expectedSelector = '.scope fieldset :contains("Lorem"):last';
this.adapter.$('.scope fieldset :contains("Lorem"):last').one('click', () => assert.ok(1));
page.foo('Lorem');

return this.adapter.wait();
});

this.adapter.andThen(() => {
expectedSelector = '.scope button:contains("Lorem")';
this.adapter.$('.scope button:contains("Lorem")').one('click', () => assert.ok(1));
page.bar('Lorem');

return this.adapter.wait();
});
});

test('resets scope', function(assert) {
assert.expect(2);

let page;
let expectedSelector;

page = create({
let page = create({
scope: '.scope',
foo: clickOnText('fieldset', { resetScope: true }),
bar: clickOnText('button', { resetScope: true })
Expand All @@ -127,18 +120,15 @@ moduleForProperty('clickOnText', function(test) {
</fieldset>
`);

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
});

this.adapter.andThen(() => {
expectedSelector = 'fieldset :contains("Lorem"):last';
this.adapter.$('fieldset :contains("Lorem"):last').one('click', () => assert.ok(1));
page.foo('Lorem');
});

this.adapter.andThen(() => {
expectedSelector = 'button:contains("Lorem")';
this.adapter.$('button:contains("Lorem")').one('click', () => assert.ok(1));
page.bar('Lorem');
return this.adapter.wait();
});
});

Expand All @@ -155,18 +145,13 @@ moduleForProperty('clickOnText', function(test) {

this.adapter.createTemplate(this, page, '<button>dummy text</button>');

this.adapter.click(() => {});

assert.equal(page.foo('dummy text'), page);
});

test('finds element by index', function(assert) {
assert.expect(2);

let expectedSelector;
let page;

page = create({
let page = create({
foo: clickOnText('fieldset', { at: 2 }),
bar: clickOnText('button', { at: 2 })
});
Expand All @@ -180,17 +165,13 @@ moduleForProperty('clickOnText', function(test) {
</fieldset>
`);

this.adapter.click((actualSelector) => {
assert.equal(actualSelector, expectedSelector);
});

this.adapter.andThen(() => {
expectedSelector = 'fieldset :contains("Lorem"):eq(2)';
this.adapter.$('fieldset :contains("Lorem"):eq(2)').one('click', () => assert.ok(1));
page.foo('Lorem');
});

this.adapter.andThen(() => {
expectedSelector = 'button:contains("Lorem"):eq(2)';
this.adapter.$('button:contains("Lorem"):eq(2)').one('click', () => assert.ok(1));
page.bar('Lorem');
});
});
Expand All @@ -207,11 +188,8 @@ moduleForProperty('clickOnText', function(test) {

this.adapter.createTemplate(this, page, '<button>Lorem</button>', { useAlternateContainer: true });

this.adapter.click((_, actualContext) => {
assert.equal(actualContext, expectedContext);
});

this.adapter.andThen(() => {
this.adapter.$('button', true).one('click', () => assert.ok(1));
page.foo('Lorem');
});
});
Expand All @@ -220,21 +198,19 @@ moduleForProperty('clickOnText', function(test) {
assert.expect(1);

let expectedContext = '#alternate-ember-testing';
let page;

page = create({
let page = create({
testContainer: expectedContext,
foo: clickOnText('button')
});

this.adapter.createTemplate(this, page, '<button>Lorem</button>', { useAlternateContainer: true });

this.adapter.click((_, actualContext) => {
assert.equal(actualContext, expectedContext);
});
this.adapter.createTemplate(this, page, '<button>Lorem</button>');

this.adapter.andThen(() => {
this.adapter.$('button', true).one('click', () => assert.ok(1));
page.foo('Lorem');

return this.adapter.wait();
});
});

Expand Down Expand Up @@ -267,9 +243,7 @@ moduleForProperty('clickOnText', function(test) {

this.adapter.createTemplate(this, page, '<button style="display:none">Click me</button>');

this.adapter.click(() => {
assert.ok(true, 'Element is clicked');
});
this.adapter.$('button').on('click', () => assert.ok(1));

page.foo('Click me');

Expand Down
Loading

0 comments on commit da76a88

Please sign in to comment.