diff --git a/tests/helpers/properties/acceptance-adapter.js b/tests/helpers/properties/acceptance-adapter.js index 1db6f0c6..d2ac43cd 100644 --- a/tests/helpers/properties/acceptance-adapter.js +++ b/tests/helpers/properties/acceptance-adapter.js @@ -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) { @@ -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) { @@ -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; }, @@ -53,6 +44,10 @@ AcceptanceAdapter.prototype = { fixture(template, options); }, + find() { + return this.original.find(...arguments); + }, + throws(assert, block, expected, message) { let done = assert.async(); diff --git a/tests/helpers/properties/integration-adapter.js b/tests/helpers/properties/integration-adapter.js index f8cf514d..18c4ab1b 100644 --- a/tests/helpers/properties/integration-adapter.js +++ b/tests/helpers/properties/integration-adapter.js @@ -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; @@ -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() { @@ -58,6 +51,10 @@ IntegrationAdapter.prototype = { }); }, + find() { + return this.original.find(...arguments); + }, + andThen(fn) { fn(); }, diff --git a/tests/unit/-private/properties/alias-test.js b/tests/unit/-private/properties/alias-test.js index 53f4c92b..5a030291 100644 --- a/tests/unit/-private/properties/alias-test.js +++ b/tests/unit/-private/properties/alias-test.js @@ -36,8 +36,8 @@ moduleForProperty('alias', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); + this.adapter.$('button').on('click', function() { + assert.ok(true); }); page.aliasedClickButton(); @@ -95,8 +95,8 @@ moduleForProperty('alias', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); + this.adapter.$('button').on('click', function() { + assert.ok(true); }); page.aliasedClickButton(); @@ -159,8 +159,8 @@ moduleForProperty('alias', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); + this.adapter.$('button').on('click', function() { + assert.ok(true); }); page.aliasedClickButton(); diff --git a/tests/unit/-private/properties/click-on-text-test.js b/tests/unit/-private/properties/click-on-text-test.js index 6a1b4814..56bb7bba 100644 --- a/tests/unit/-private/properties/click-on-text-test.js +++ b/tests/unit/-private/properties/click-on-text-test.js @@ -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') }); @@ -20,28 +17,30 @@ moduleForProperty('clickOnText', function(test) { `); - 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' }) }); @@ -55,18 +54,18 @@ moduleForProperty('clickOnText', function(test) { `); - 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(); @@ -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') @@ -93,28 +89,25 @@ moduleForProperty('clickOnText', function(test) { `); - 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 }) @@ -127,18 +120,15 @@ moduleForProperty('clickOnText', function(test) { `); - 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(); }); }); @@ -155,18 +145,13 @@ moduleForProperty('clickOnText', function(test) { this.adapter.createTemplate(this, page, ''); - 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 }) }); @@ -180,17 +165,13 @@ moduleForProperty('clickOnText', function(test) { `); - 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'); }); }); @@ -207,11 +188,8 @@ moduleForProperty('clickOnText', function(test) { this.adapter.createTemplate(this, page, '', { 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'); }); }); @@ -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, '', { useAlternateContainer: true }); - - this.adapter.click((_, actualContext) => { - assert.equal(actualContext, expectedContext); - }); + this.adapter.createTemplate(this, page, ''); this.adapter.andThen(() => { + this.adapter.$('button', true).one('click', () => assert.ok(1)); page.foo('Lorem'); + + return this.adapter.wait(); }); }); @@ -267,9 +243,7 @@ moduleForProperty('clickOnText', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click(() => { - assert.ok(true, 'Element is clicked'); - }); + this.adapter.$('button').on('click', () => assert.ok(1)); page.foo('Click me'); diff --git a/tests/unit/-private/properties/clickable-test.js b/tests/unit/-private/properties/clickable-test.js index 7dd08de9..b86afdf4 100644 --- a/tests/unit/-private/properties/clickable-test.js +++ b/tests/unit/-private/properties/clickable-test.js @@ -6,21 +6,18 @@ moduleForProperty('clickable', function(test) { assert.expect(1); let expectedSelector = 'button'; - let page; - - page = create({ + let page = create({ foo: clickable(expectedSelector) }); this.adapter.createTemplate(this, page, ''); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - - page.foo(); + this.adapter.andThen(() => { + this.adapter.$(expectedSelector).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('looks for elements inside the scope', function(assert) { @@ -35,13 +32,12 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, '
Click me
'); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - - page.foo(); + this.adapter.andThen(() => { + this.adapter.$(expectedSelector).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test("looks for elements inside page's scope", function(assert) { @@ -58,13 +54,12 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, '
Click me
'); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$(expectedSelector).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('resets scope', function(assert) { @@ -80,28 +75,23 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, 'Click me'); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$(expectedSelector).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('returns target object', function(assert) { assert.expect(1); - let page; - - page = create({ + let page = create({ foo: clickable('span') }); this.adapter.createTemplate(this, page, 'Click me'); - this.adapter.click(function() {}); - assert.equal(page.foo(), page); }); @@ -109,21 +99,18 @@ moduleForProperty('clickable', function(test) { assert.expect(1); let expectedSelector = 'span:eq(3)'; - let page; - - page = create({ + let page = create({ foo: clickable('span', { at: 3 }) }); - this.adapter.click((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - this.adapter.createTemplate(this, page, 'Click me'); - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$(expectedSelector).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('looks for elements outside the testing container', function(assert) { @@ -138,13 +125,12 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, 'Click me', { useAlternateContainer: true }); - this.adapter.click((_, actualContext) => { - assert.equal(actualContext, expectedContext); - }); - - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$('span', expectedContext).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('looks for elements within test container specified at node level', function(assert) { @@ -160,13 +146,12 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, 'Click me', { useAlternateContainer: true }); - this.adapter.click((_, actualContext) => { - assert.equal(actualContext, expectedContext); - }); - - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$('span', expectedContext).one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test("raises an error when the element doesn't exist", function(assert) { @@ -200,13 +185,12 @@ moduleForProperty('clickable', function(test) { this.adapter.createTemplate(this, page, 'Click me'); - this.adapter.click(() => { - assert.ok(true, 'Element is clicked'); - }); - - page.foo(); + return this.adapter.andThen(() => { + this.adapter.$('span').one('click', () => assert.ok(1)); + page.foo(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('raises an error when the element is not visible and `visible` is true', function(assert) { diff --git a/tests/unit/-private/properties/dsl-test.js b/tests/unit/-private/properties/dsl-test.js index b00885d3..8d5b85f3 100644 --- a/tests/unit/-private/properties/dsl-test.js +++ b/tests/unit/-private/properties/dsl-test.js @@ -63,13 +63,15 @@ moduleForProperty('dsl', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click(() => { - assert.ok(true, 'click called'); - }); + return this.adapter.andThen(() => { + // text nodes don't support click events + // instead we check that click on text content propagates to the parent button + this.adapter.$('button').one('click', () => assert.ok(1)); - page.foo.clickOn('dummy text'); + page.foo.clickOn('dummy text'); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('generates .click', function(assert) { @@ -83,13 +85,13 @@ moduleForProperty('dsl', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.click(() => { - assert.ok(true, 'click called'); - }); + return this.adapter.andThen(() => { + this.adapter.$('button').one('click', () => assert.ok(1)); - page.foo.click(); + page.foo.click(); - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test('generates .contains', function(assert) { @@ -132,13 +134,11 @@ moduleForProperty('dsl', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.fillIn((selector, context, options, content) => { - assert.equal(content, 'lorem ipsum'); - }); - page.foo.fillIn('lorem ipsum'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$('input').val(), 'lorem ipsum'); + }); }); test('generates .select', function(assert) { @@ -152,13 +152,11 @@ moduleForProperty('dsl', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.fillIn((selector, context, options, content) => { - assert.equal(content, 'lorem ipsum'); - }); - page.foo.select('lorem ipsum'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$('input').val(), 'lorem ipsum'); + }); }); test('generates .value', function(assert) { diff --git a/tests/unit/-private/properties/fillable-test.js b/tests/unit/-private/properties/fillable-test.js index 9e58b6c3..ab9599ee 100644 --- a/tests/unit/-private/properties/fillable-test.js +++ b/tests/unit/-private/properties/fillable-test.js @@ -3,7 +3,7 @@ import { create, fillable, selectable } from 'ember-cli-page-object'; moduleForProperty('fillable', function(test) { test("calls fillIn method belonging to execution context", function(assert) { - assert.expect(2); + assert.expect(1); let expectedSelector = 'input'; let expectedText = 'dummy text'; @@ -13,62 +13,77 @@ moduleForProperty('fillable', function(test) { foo: fillable(expectedSelector) }); - this.adapter.fillIn((actualSelector, actualContext, options, actualContent) => { - assert.equal(actualSelector, expectedSelector); - assert.equal(actualContent, expectedText); - }); - this.adapter.createTemplate(this, page, ''); page.foo(expectedText); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(expectedSelector).val(), expectedText); + }); }); - test('looks for inputs or contenteditables with data-test="clue" attributes', function(assert) { - let expectedText = 'dummy text'; - let clue = 'clue'; - let page; - - page = create({ - scope: '.scope', - - foo: fillable() + const targetAttributes = ['data-test', 'aria-label', 'placeholder', 'name', 'id']; + + const formControlTemplates = [ + '', + '', + '', + '', + '', + + '', + '', + '', + '', + '', + + '', + '', + '', + '', + '', + ]; + + formControlTemplates.forEach(template => { + let gtPos = template.indexOf('='); + let name = template.substr(1, gtPos - 1); + const [tagName, attrName] = name.split(' '); + + test(`looks for ${tagName} with ${attrName}`, function(assert) { + let expectedText = 'dummy text'; + let clue = 'clue'; + let page = create({ + scope: '.scope', + foo: fillable() + }); + + this.adapter.createTemplate(this, page, `
${template}
`); + + page.foo(clue, expectedText); + + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(`${tagName}[${attrName}="${clue}"]`).val(), expectedText); + }); }); + }); - this.adapter.createTemplate(this, page, '
'); - - this.adapter.fillIn((actualSelector, actualContext, options, actualContent) => { - assert.ok(/\.scope input\[data-test="clue"\]/.test(actualSelector)); - assert.ok(/\.scope input\[aria-label="clue"\]/.test(actualSelector)); - assert.ok(/\.scope input\[placeholder="clue"\]/.test(actualSelector)); - assert.ok(/\.scope input\[name="clue"\]/.test(actualSelector)); - assert.ok(/\.scope input#clue/.test(actualSelector)); - - assert.ok(/\.scope textarea\[data-test="clue"\]/.test(actualSelector)); - assert.ok(/\.scope textarea\[aria-label="clue"\]/.test(actualSelector)); - assert.ok(/\.scope textarea\[placeholder="clue"\]/.test(actualSelector)); - assert.ok(/\.scope textarea\[name="clue"\]/.test(actualSelector)); - assert.ok(/\.scope textarea#clue/.test(actualSelector)); - - assert.ok(/\.scope select\[data-test="clue"\]/.test(actualSelector)); - assert.ok(/\.scope select\[aria-label="clue"\]/.test(actualSelector)); - assert.ok(/\.scope select\[placeholder="clue"\]/.test(actualSelector)); - assert.ok(/\.scope select\[name="clue"\]/.test(actualSelector)); - assert.ok(/\.scope select#clue/.test(actualSelector)); - - assert.ok(/\.scope \[contenteditable\]\[data-test="clue"\]/.test(actualSelector)); - assert.ok(/\.scope \[contenteditable\]\[aria-label="clue"\]/.test(actualSelector)); - assert.ok(/\.scope \[contenteditable\]\[placeholder="clue"\]/.test(actualSelector)); - assert.ok(/\.scope \[contenteditable\]\[name="clue"\]/.test(actualSelector)); - assert.ok(/\.scope \[contenteditable\]#clue/.test(actualSelector)); - - assert.equal(actualContent, expectedText); - }); + targetAttributes.forEach(attrName => { + test(`looks for [contenteditable] with ${attrName}`, function(assert) { + let expectedText = 'dummy text'; + let clue = 'clue'; + let page = create({ + scope: '.scope', + foo: fillable() + }); + + this.adapter.createTemplate(this, page, `
`); - page.foo(clue, expectedText); + page.foo(clue, expectedText); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(`div[${attrName}="${clue}"]`).html(), expectedText); + }); + }); }); test('looks for elements inside the scope', function(assert) { @@ -80,13 +95,11 @@ moduleForProperty('fillable', function(test) { this.adapter.createTemplate(this, page, '
'); - this.adapter.fillIn((actualSelector) => { - assert.equal(actualSelector, '.scope input'); - }); - page.foo('dummy text'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$('.scope input').val(), 'dummy text'); + }); }); test("looks for elements inside page's scope", function(assert) { @@ -98,15 +111,13 @@ moduleForProperty('fillable', function(test) { foo: fillable('input') }); - this.adapter.fillIn((actualSelector) => { - assert.equal(actualSelector, '.scope input'); - }); - this.adapter.createTemplate(this, page, '
'); page.foo('dummy text'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$('.scope input').val(), 'dummy text'); + }); }); test('resets scope', function(assert) { @@ -117,15 +128,13 @@ moduleForProperty('fillable', function(test) { foo: fillable('input', { resetScope: true }) }); - this.adapter.fillIn((actualSelector) => { - assert.equal(actualSelector, 'input'); - }); - this.adapter.createTemplate(this, page, ''); page.foo('dummy text'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$('input').val(), 'dummy text'); + }); }); test('returns target object', function(assert) { @@ -135,8 +144,6 @@ moduleForProperty('fillable', function(test) { foo: fillable('input') }); - this.adapter.fillIn(() => {}); - this.adapter.createTemplate(this, page, ''); assert.equal(page.foo(), page); @@ -150,19 +157,17 @@ moduleForProperty('fillable', function(test) { foo: fillable('input', { at: 3 }) }); - this.adapter.fillIn((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); - this.adapter.createTemplate(this, page, ''); - page.foo(); + page.foo('dummy text'); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(expectedSelector).val(), 'dummy text'); + }); }); test('is aliased to selectable', function(assert) { - assert.expect(2); + assert.expect(1); let expectedSelector = 'input'; let expectedText = 'dummy text'; @@ -172,18 +177,15 @@ moduleForProperty('fillable', function(test) { this.adapter.createTemplate(this, page, ''); - this.adapter.fillIn((actualSelector, actualContext, options, actualContent) => { - assert.equal(actualSelector, expectedSelector); - assert.equal(actualContent, expectedText); - }); - page.foo(expectedText); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(expectedSelector).val(), expectedText); + }); }); test('looks for elements outside the testing container', function(assert) { - assert.expect(3); + assert.expect(1); let expectedContext = '#alternate-ember-testing'; let expectedSelector = 'input'; @@ -194,19 +196,15 @@ moduleForProperty('fillable', function(test) { this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); - this.adapter.fillIn((actualSelector, actualContext, options, actualContent) => { - assert.equal(actualSelector, expectedSelector); - assert.equal(actualContext, expectedContext); - assert.equal(actualContent, expectedText); - }); - page.foo(expectedText); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(expectedSelector, expectedContext).val(), expectedText); + }); }); test('looks for elements within test container specified at node level', function(assert) { - assert.expect(3); + assert.expect(1); let expectedContext = '#alternate-ember-testing'; let expectedSelector = 'input'; @@ -218,15 +216,11 @@ moduleForProperty('fillable', function(test) { this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); - this.adapter.fillIn((actualSelector, actualContext, options, actualContent) => { - assert.equal(actualSelector, expectedSelector); - assert.equal(actualContext, expectedContext); - assert.equal(actualContent, expectedText); - }); - page.foo(expectedText); - return this.adapter.wait(); + return this.adapter.andThen(() => { + assert.equal(this.adapter.$(expectedSelector, expectedContext).val(), expectedText); + }); }); test("raises an error when the element doesn't exist", function(assert) { diff --git a/tests/unit/-private/properties/triggerable-test.js b/tests/unit/-private/properties/triggerable-test.js index b24ddddb..c131a692 100644 --- a/tests/unit/-private/properties/triggerable-test.js +++ b/tests/unit/-private/properties/triggerable-test.js @@ -3,37 +3,37 @@ import { create, triggerable } from 'ember-cli-page-object'; moduleForProperty('triggerable', function(test) { test("calls Ember's triggerEvent helper with proper args", function(assert) { - assert.expect(2); + assert.expect(1); - let expectedSelector = 'span'; + let expectedSelector = 'input'; let page = create({ foo: triggerable('focus', expectedSelector) }); - this.adapter.createTemplate(this, page, ''); + this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector, _, event) => { - assert.equal(actualSelector, expectedSelector); - assert.equal(event, 'focus'); - }); + return this.adapter.andThen(() => { + // debugger + this.adapter.$(expectedSelector).on('focus', () => { + // debugger; + assert.ok(1); + }); + page.foo(); - page.foo(); - - return this.adapter.wait(); + return this.adapter.wait(); + }); }); test("calls Ember's triggerEvent helper with static event options", function(assert) { assert.expect(1); let page = create({ - foo: triggerable('keypress', 'span', { eventProperties: { keyCode: 13 } }) + foo: triggerable('keypress', 'input', { eventProperties: { keyCode: 13 } }) }); - this.adapter.createTemplate(this, page, ''); + this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector, _, event, options) => { - assert.equal(options.keyCode, 13); - }); + this.adapter.$('input').on('keypress', (e) => assert.equal(e.keyCode, 13)); page.foo(); @@ -44,14 +44,12 @@ moduleForProperty('triggerable', function(test) { assert.expect(1); let page = create({ - foo: triggerable('keypress', 'span') + foo: triggerable('keypress', 'input') }); - this.adapter.createTemplate(this, page, ''); + this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector, _, event, options) => { - assert.equal(options.keyCode, 13); - }); + this.adapter.$('input').on('keypress', (e) => assert.equal(e.keyCode, 13)); page.foo({ keyCode: 13 }); @@ -62,16 +60,14 @@ moduleForProperty('triggerable', function(test) { assert.expect(1); let page = create({ - foo: triggerable('keypress', 'span', { + foo: triggerable('keypress', 'input', { eventProperties: { keyCode: 0 } }) }); - this.adapter.createTemplate(this, page, ''); + this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector, _, event, options) => { - assert.equal(options.keyCode, 13); - }); + this.adapter.$('input').on('keypress', (e) => assert.equal(e.keyCode, 13)); page.foo({ keyCode: 13 }); @@ -82,15 +78,12 @@ moduleForProperty('triggerable', function(test) { assert.expect(1); let page = create({ - foo: triggerable('focus', 'span', { scope: '.scope' }) + foo: triggerable('focus', 'input', { scope: '.scope' }) }); - this.adapter.createTemplate(this, page, '
'); - - this.adapter.triggerEvent((actualSelector) => { - assert.equal(actualSelector, '.scope span'); - }); + this.adapter.createTemplate(this, page, '
'); + this.adapter.$('.scope input').on('focus', () => assert.ok(1)); page.foo(); return this.adapter.wait(); @@ -102,13 +95,12 @@ moduleForProperty('triggerable', function(test) { let page = create({ scope: '.scope', - foo: triggerable('focus', 'span') + foo: triggerable('focus', 'input') }); - this.adapter.createTemplate(this, page, '
'); - this.adapter.triggerEvent((actualSelector) => { - assert.equal(actualSelector, '.scope span'); - }); + this.adapter.createTemplate(this, page, '
'); + + this.adapter.$('.scope input').on('focus', () => assert.ok(1)); page.foo(); @@ -120,14 +112,12 @@ moduleForProperty('triggerable', function(test) { let page = create({ scope: '.scope', - foo: triggerable('focus', 'span', { resetScope: true }) + foo: triggerable('focus', 'input', { resetScope: true }) }); - this.adapter.createTemplate(this, page, ''); + this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector) => { - assert.equal(actualSelector, 'span'); - }); + this.adapter.$('input').on('focus', () => assert.ok(1)); page.foo(); @@ -138,11 +128,10 @@ moduleForProperty('triggerable', function(test) { assert.expect(1); let page = create({ - foo: triggerable('focus', 'span') + foo: triggerable('focus', 'input') }); - this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent(() => {}); + this.adapter.createTemplate(this, page, ''); assert.equal(page.foo(), page); }); @@ -150,16 +139,14 @@ moduleForProperty('triggerable', function(test) { test('finds element by index', function(assert) { assert.expect(1); - let expectedSelector = 'span:eq(3)'; + let expectedSelector = 'input:eq(3)'; let page = create({ - foo: triggerable('focus', 'span', { at: 3 }) + foo: triggerable('focus', 'input', { at: 3 }) }); - this.adapter.createTemplate(this, page, ''); - this.adapter.triggerEvent((actualSelector) => { - assert.equal(actualSelector, expectedSelector); - }); + this.adapter.createTemplate(this, page, ''); + this.adapter.$(expectedSelector).on('focus', () => assert.ok(1)); page.foo(); return this.adapter.wait(); @@ -170,13 +157,12 @@ moduleForProperty('triggerable', function(test) { let expectedContext = '#alternate-ember-testing'; let page = create({ - foo: triggerable('focus', 'span', { testContainer: expectedContext }) + foo: triggerable('focus', 'input', { testContainer: expectedContext }) }); - this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); - this.adapter.triggerEvent((_, actualContext) => { - assert.equal(actualContext, expectedContext); - }); + this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); + + this.adapter.$('input', expectedContext).on('focus', () => assert.ok(1)); page.foo(); @@ -189,13 +175,12 @@ moduleForProperty('triggerable', function(test) { let expectedContext = '#alternate-ember-testing'; let page = create({ testContainer: expectedContext, - foo: triggerable('focus', 'span') + foo: triggerable('focus', 'input') }); - this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); - this.adapter.triggerEvent((_, actualContext) => { - assert.equal(actualContext, expectedContext); - }); + this.adapter.createTemplate(this, page, '', { useAlternateContainer: true }); + + this.adapter.$('input', expectedContext).on('focus', () => assert.ok(1)); page.foo();