diff --git a/addon-test-support/setup-rendering-context.js b/addon-test-support/setup-rendering-context.js index bcd8de0ac..2cdf0fbf5 100644 --- a/addon-test-support/setup-rendering-context.js +++ b/addon-test-support/setup-rendering-context.js @@ -39,13 +39,12 @@ export function clearRender() { export default function(context) { let guid = guidFor(context); - let rootTestElement = document.getElementById('ember-testing'); - let fixtureResetValue = rootTestElement.innerHTML; + let testElementContainer = document.getElementById('ember-testing-container'); + let fixtureResetValue = testElementContainer.outerHTML; RENDERING_CLEANUP[guid] = [ () => { - rootTestElement.innerHTML = fixtureResetValue; - element = undefined; + testElementContainer.innerHTML = fixtureResetValue; }, ]; diff --git a/tests/unit/settled-test.js b/tests/unit/settled-test.js index 2141d6b5e..3d348a5a1 100644 --- a/tests/unit/settled-test.js +++ b/tests/unit/settled-test.js @@ -185,8 +185,8 @@ module('settle', function(hooks) { this.server.shutdown(); await settled(); - teardownContext(this); teardownRenderingContext(this); + teardownContext(this); }); test('it works when async exists in `init`', async function(assert) { diff --git a/tests/unit/setup-rendering-context-test.js b/tests/unit/setup-rendering-context-test.js index 0906a48f0..d2a206e7d 100644 --- a/tests/unit/setup-rendering-context-test.js +++ b/tests/unit/setup-rendering-context-test.js @@ -39,8 +39,8 @@ module('setupRenderingContext', function(hooks) { }); hooks.afterEach(function() { - teardownContext(this); teardownRenderingContext(this); + teardownContext(this); }); test('render exposes an `.element` property', async function(assert) { diff --git a/tests/unit/teardown-rendering-context-test.js b/tests/unit/teardown-rendering-context-test.js new file mode 100644 index 000000000..d7b27c8b8 --- /dev/null +++ b/tests/unit/teardown-rendering-context-test.js @@ -0,0 +1,53 @@ +import { module, test } from 'qunit'; +import { + setupContext, + setupRenderingContext, + teardownContext, + teardownRenderingContext, +} from 'ember-test-helpers'; +import hasEmberVersion from 'ember-test-helpers/has-ember-version'; + +module('setupRenderingContext', function(hooks) { + if (!hasEmberVersion(2, 4)) { + return; + } + + hooks.beforeEach(function() { + setupContext(this); + setupRenderingContext(this); + }); + + hooks.afterEach(function() { + teardownContext(this); + }); + + test('clears any attributes added to the ember-testing div', function(assert) { + let beforeTeardownEl = document.getElementById('ember-testing'); + beforeTeardownEl.setAttribute('data-was-set', ''); + + assert.ok( + beforeTeardownEl.hasAttribute('data-was-set'), + 'precond - attribute is present before teardown' + ); + assert.ok(document.contains(beforeTeardownEl), 'precond - ember-testing element is in DOM'); + + teardownRenderingContext(this); + + let afterTeardownEl = document.getElementById('ember-testing'); + + assert.notOk( + afterTeardownEl.hasAttribute('data-was-set'), + 'attribute is not present on ember-testing that is in DOM' + ); + assert.ok(document.contains(afterTeardownEl), 'ember-testing element is still in DOM'); + + assert.ok( + beforeTeardownEl.hasAttribute('data-was-set'), + 'attribute is still present on prior ember-testing element after teardown' + ); + assert.notOk( + document.contains(beforeTeardownEl), + 'previous ember-testing element is no longer in DOM' + ); + }); +});