From 6ae11c86b538f63cb559734b3468e438f4e459da Mon Sep 17 00:00:00 2001 From: Edward Faulkner Date: Thu, 11 Feb 2021 17:41:57 -0500 Subject: [PATCH] Support getOwner The test context already has an owner, in the sense of `this.owner` working. But the standard way to get an owner in Ember is `getOwner`, which doesn't work. This makes `getOwner` work. A motivating example are [these tests](https://github.com/embroider-build/embroider/blob/0349de7a5386c30dff8d4aa859fe01138b026878/packages/util/tests/integration/helpers/ensure-safe-component-test.js#L18-L22) which currently use a workaround. They're testing an API that accepts any owned object, and it's nice to use the test context as that object. --- addon-test-support/@ember/test-helpers/setup-context.ts | 2 ++ tests/unit/setup-rendering-context-test.js | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/addon-test-support/@ember/test-helpers/setup-context.ts b/addon-test-support/@ember/test-helpers/setup-context.ts index ff1ec113e..944b8e875 100644 --- a/addon-test-support/@ember/test-helpers/setup-context.ts +++ b/addon-test-support/@ember/test-helpers/setup-context.ts @@ -1,6 +1,7 @@ import { run } from '@ember/runloop'; import { set, setProperties, get, getProperties } from '@ember/object'; import Resolver from '@ember/application/resolver'; +import { setOwner } from '@ember/application'; import buildOwner, { Owner } from './build-owner'; import { _setupAJAXHooks, _teardownAJAXHooks } from './settled'; @@ -211,6 +212,7 @@ export default function setupContext( value: owner, writable: false, }); + setOwner(context, owner); Object.defineProperty(context, 'set', { configurable: true, diff --git a/tests/unit/setup-rendering-context-test.js b/tests/unit/setup-rendering-context-test.js index a4dc3d5fc..0c31e095c 100644 --- a/tests/unit/setup-rendering-context-test.js +++ b/tests/unit/setup-rendering-context-test.js @@ -23,6 +23,7 @@ import { import hasEmberVersion from '@ember/test-helpers/has-ember-version'; import { setResolverRegistry, application, resolver } from '../helpers/resolver'; import { hbs } from 'ember-cli-htmlbars'; +import { getOwner } from '@ember/application'; module('setupRenderingContext', function (hooks) { if (!hasEmberVersion(2, 4)) { @@ -431,6 +432,10 @@ module('setupRenderingContext', function (hooks) { assert.strictEqual(this.element, originalElement, 'this.element is stable'); }); + test('context supports getOwner', async function (assert) { + assert.equal(getOwner(this), this.owner); + }); + module('this.render and this.clearRender deprecations', function () { test('this.render() and this.clearRender deprecation message', async function (assert) { await this.render(hbs``);