Skip to content

Commit a9c39d9

Browse files
authored
Merge pull request #222 from rwjblue/importable-helpers
Expose importable helper functions.
2 parents d2457ca + 2240194 commit a9c39d9

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

addon-test-support/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export { default as TestModuleForModel } from './legacy-0-6-x/test-module-for-mo
77
export { setResolver } from './resolver';
88
export { default as setupContext, getContext, setContext, unsetContext } from './setup-context';
99
export { default as teardownContext } from './teardown-context';
10-
export { default as setupRenderingContext } from './setup-rendering-context';
10+
export { default as setupRenderingContext, render, clearRender } from './setup-rendering-context';
1111
export { default as teardownRenderingContext } from './teardown-rendering-context';
1212
export { default as settled } from './settled';
1313

addon-test-support/setup-rendering-context.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,32 @@ import { run, next } from '@ember/runloop';
33
import { Promise } from 'rsvp';
44
import Ember from 'ember';
55
import global from './global';
6+
import { getContext } from './setup-context';
67

78
export const RENDERING_CLEANUP = Object.create(null);
89

10+
export function render(template) {
11+
let context = getContext();
12+
13+
if (!context || typeof context.render !== 'function') {
14+
throw new Error('Cannot call `render` without having first called `setupRenderingContext`.');
15+
}
16+
17+
return context.render(template);
18+
}
19+
20+
export function clearRender() {
21+
let context = getContext();
22+
23+
if (!context || typeof context.clearRender !== 'function') {
24+
throw new Error(
25+
'Cannot call `clearRender` without having first called `setupRenderingContext`.'
26+
);
27+
}
28+
29+
return context.clearRender();
30+
}
31+
932
/*
1033
* Responsible for:
1134
*
@@ -22,6 +45,7 @@ export default function(context) {
2245
RENDERING_CLEANUP[guid] = [
2346
() => {
2447
rootTestElement.innerHTML = fixtureResetValue;
48+
element = undefined;
2549
},
2650
];
2751

tests/unit/setup-rendering-context-test.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
setupRenderingContext,
99
teardownContext,
1010
teardownRenderingContext,
11+
render,
12+
clearRender,
1113
} from 'ember-test-helpers';
1214
import hasEmberVersion from 'ember-test-helpers/has-ember-version';
1315
import hasjQuery from '../helpers/has-jquery';
@@ -303,4 +305,24 @@ module('setupRenderingContext', function(hooks) {
303305
assert.equal(this.get('foo'), 'updated!');
304306
assert.equal(this.get('bar'), 'updated bar!');
305307
});
308+
309+
test('imported `render` can be used instead of this.render', async function(assert) {
310+
await render(hbs`yippie!!`);
311+
312+
assert.equal(this.element.textContent, 'yippie!!');
313+
});
314+
315+
test('imported clearRender can be used instead of this.clearRender', async function(assert) {
316+
let testingRootElement = document.getElementById('ember-testing');
317+
318+
await this.render(hbs`<p>Hello!</p>`);
319+
320+
assert.equal(this.element.textContent, 'Hello!', 'has rendered content');
321+
assert.equal(testingRootElement.textContent, 'Hello!', 'has rendered content');
322+
323+
await clearRender();
324+
assert.equal(this.element, undefined, 'this.element is reset');
325+
326+
assert.equal(testingRootElement.textContent, '', 'content is cleared');
327+
});
306328
});

0 commit comments

Comments
 (0)