Skip to content

Commit c8c8ede

Browse files
Dave Connisbegedin
authored andcommitted
Rewrite busy-model-wrapper tests to use dynamically defined page object. (#1625)
1 parent aa21317 commit c8c8ede

File tree

2 files changed

+46
-16
lines changed

2 files changed

+46
-16
lines changed
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import Component from '@ember/component';
22

33
export default Component.extend({
4-
tagName:'',
54
model: null,
65

7-
onSaving: 'Saving...',
8-
onDeleting: 'Deleting...'
6+
onDeleting: 'Deleting...',
7+
onSaving: 'Saving...'
98
});
Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,56 @@
11
import { moduleForComponent, test } from 'ember-qunit';
22
import hbs from 'htmlbars-inline-precompile';
3+
import { set } from '@ember/object';
4+
import PageObject from 'ember-cli-page-object';
5+
6+
// Since this is a tagless component, we cannot effectively use a typical page
7+
// object.
8+
//
9+
// Instead, we render the tagless form inside a test container and dynamically
10+
// define a page object using the scope of the test container.
11+
12+
let page = PageObject.create({ scope: '.test-container' });
13+
14+
function renderPage() {
15+
page.render(hbs`
16+
<div class="test-container">
17+
{{#common/busy-model-wrapper model=model}}
18+
Yielded
19+
{{/common/busy-model-wrapper}}
20+
</div>
21+
`);
22+
}
323

424
moduleForComponent('common/busy-model-wrapper', 'Integration | Component | common/busy model wrapper', {
5-
integration: true
25+
integration: true,
26+
beforeEach() {
27+
page.setContext(this);
28+
},
29+
afterEach() {
30+
page.removeContext();
31+
}
632
});
733

8-
test('it renders', function(assert) {
34+
test('it shows "Deleting" if model is saving and is deleted', function(assert) {
35+
let model = { isSaving: true, isDeleted: true };
36+
set(this, 'model', model);
937

10-
// Set any properties with this.set('myProperty', 'value');
11-
// Handle any actions with this.on('myAction', function(val) { ... });
38+
renderPage();
39+
assert.equal(page.text, 'Deleting...', 'A deletion indicator is rendered in place of the yielded block.');
40+
});
1241

13-
this.render(hbs`{{common/busy-model-wrapper}}`);
42+
test('it shows "Saving" if model is saving and not deleted', function(assert) {
43+
let model = { isSaving: true, isDeleted: false };
44+
set(this, 'model', model);
1445

15-
assert.equal(this.$().text().trim(), '');
46+
renderPage();
47+
assert.equal(page.text, 'Saving...', 'A deletion indicator is rendered in place of the yielded block.');
48+
});
1649

17-
// Template block usage:
18-
this.render(hbs`
19-
{{#common/busy-model-wrapper}}
20-
template block text
21-
{{/common/busy-model-wrapper}}
22-
`);
50+
test('it shows yield if model is neither saving or deleted', function(assert) {
51+
let model = { isSaving: false, isDeleted: false };
52+
set(this, 'model', model);
2353

24-
assert.equal(this.$().text().trim(), 'template block text');
54+
renderPage();
55+
assert.equal(page.text, 'Yielded', 'The yielded block is rendered.');
2556
});

0 commit comments

Comments
 (0)