From 876aeea09c24aa81592a05f33624d1584a8c2310 Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Wed, 22 Jul 2015 16:29:44 -0700 Subject: [PATCH] [BUGFIX release] ensure testHelpers are removed when the app is destroyed --- packages/ember-testing/lib/test.js | 7 +++++ .../ember-testing/tests/acceptance_test.js | 26 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/ember-testing/lib/test.js b/packages/ember-testing/lib/test.js index 5e87f2c05bb..f425bb2e662 100644 --- a/packages/ember-testing/lib/test.js +++ b/packages/ember-testing/lib/test.js @@ -423,6 +423,13 @@ EmberApplication.reopen({ this.helperContainer = window; } + this.reopen({ + willDestroy() { + this._super(...arguments); + this.removeTestHelpers(); + } + }); + this.testHelpers = {}; for (var name in helpers) { this.originalMethods[name] = this.helperContainer[name]; diff --git a/packages/ember-testing/tests/acceptance_test.js b/packages/ember-testing/tests/acceptance_test.js index 1fd19228e34..16f98b50425 100644 --- a/packages/ember-testing/tests/acceptance_test.js +++ b/packages/ember-testing/tests/acceptance_test.js @@ -97,7 +97,6 @@ QUnit.module('ember-testing Acceptance', { }, teardown() { - App.removeTestHelpers(); Test.unregisterHelper('slowHelper'); jQuery('#ember-testing-container, #ember-testing').remove(); run(App, App.destroy); @@ -379,3 +378,28 @@ QUnit.test('visiting a URL and then visiting a second URL with a transition shou equal(currentURL(), '/comments', 'Redirected to Comments URL'); }); }); + +QUnit.module('ember-testing Acceptance – teardown'); + +QUnit.test('that the setup/teardown happens correct', function() { + expect(2); + + jQuery('').appendTo('head'); + jQuery('
').appendTo('body'); + + run(function() { + indexHitCount = 0; + App = EmberApplication.create({ + rootElement: '#ember-testing' + }); + }); + App.injectTestHelpers(); + + jQuery('#ember-testing-container, #ember-testing').remove(); + ok(typeof Test.Promise.prototype.click === 'function'); + run(App, App.destroy); + equal(Test.Promise.prototype.click, undefined); + App = null; + Test.adapter = originalAdapter; + indexHitCount = 0; +});