From c8c8ede0548b0719a1b5e821adc1c0b79b3dc2d0 Mon Sep 17 00:00:00 2001 From: Dave Connis Date: Fri, 19 Jan 2018 10:00:16 -0500 Subject: [PATCH] Rewrite busy-model-wrapper tests to use dynamically defined page object. (#1625) --- app/components/common/busy-model-wrapper.js | 5 +- .../common/busy-model-wrapper-test.js | 57 ++++++++++++++----- 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/app/components/common/busy-model-wrapper.js b/app/components/common/busy-model-wrapper.js index 306d78df7..394b20cd9 100644 --- a/app/components/common/busy-model-wrapper.js +++ b/app/components/common/busy-model-wrapper.js @@ -1,9 +1,8 @@ import Component from '@ember/component'; export default Component.extend({ - tagName:'', model: null, - onSaving: 'Saving...', - onDeleting: 'Deleting...' + onDeleting: 'Deleting...', + onSaving: 'Saving...' }); diff --git a/tests/integration/components/common/busy-model-wrapper-test.js b/tests/integration/components/common/busy-model-wrapper-test.js index b9a4868a1..b34add5d1 100644 --- a/tests/integration/components/common/busy-model-wrapper-test.js +++ b/tests/integration/components/common/busy-model-wrapper-test.js @@ -1,25 +1,56 @@ import { moduleForComponent, test } from 'ember-qunit'; import hbs from 'htmlbars-inline-precompile'; +import { set } from '@ember/object'; +import PageObject from 'ember-cli-page-object'; + +// Since this is a tagless component, we cannot effectively use a typical page +// object. +// +// Instead, we render the tagless form inside a test container and dynamically +// define a page object using the scope of the test container. + +let page = PageObject.create({ scope: '.test-container' }); + +function renderPage() { + page.render(hbs` +
+ {{#common/busy-model-wrapper model=model}} + Yielded + {{/common/busy-model-wrapper}} +
+ `); +} moduleForComponent('common/busy-model-wrapper', 'Integration | Component | common/busy model wrapper', { - integration: true + integration: true, + beforeEach() { + page.setContext(this); + }, + afterEach() { + page.removeContext(); + } }); -test('it renders', function(assert) { +test('it shows "Deleting" if model is saving and is deleted', function(assert) { + let model = { isSaving: true, isDeleted: true }; + set(this, 'model', model); - // Set any properties with this.set('myProperty', 'value'); - // Handle any actions with this.on('myAction', function(val) { ... }); + renderPage(); + assert.equal(page.text, 'Deleting...', 'A deletion indicator is rendered in place of the yielded block.'); +}); - this.render(hbs`{{common/busy-model-wrapper}}`); +test('it shows "Saving" if model is saving and not deleted', function(assert) { + let model = { isSaving: true, isDeleted: false }; + set(this, 'model', model); - assert.equal(this.$().text().trim(), ''); + renderPage(); + assert.equal(page.text, 'Saving...', 'A deletion indicator is rendered in place of the yielded block.'); +}); - // Template block usage: - this.render(hbs` - {{#common/busy-model-wrapper}} - template block text - {{/common/busy-model-wrapper}} - `); +test('it shows yield if model is neither saving or deleted', function(assert) { + let model = { isSaving: false, isDeleted: false }; + set(this, 'model', model); - assert.equal(this.$().text().trim(), 'template block text'); + renderPage(); + assert.equal(page.text, 'Yielded', 'The yielded block is rendered.'); });