diff --git a/addon-test-support/@ember/test-helpers/setup-rendering-context.ts b/addon-test-support/@ember/test-helpers/setup-rendering-context.ts
index ec8f2c7cf..7caba3837 100644
--- a/addon-test-support/@ember/test-helpers/setup-rendering-context.ts
+++ b/addon-test-support/@ember/test-helpers/setup-rendering-context.ts
@@ -20,12 +20,12 @@ import hasEmberVersion from './has-ember-version';
import isComponent from './-internal/is-component';
import { macroCondition, dependencySatisfies } from '@embroider/macros';
import { ComponentRenderMap, SetUsage } from './setup-context';
+import { ensureSafeComponent } from '@embroider/util';
import type { ComponentInstance } from '@glimmer/interfaces';
const OUTLET_TEMPLATE = hbs`{{outlet}}`;
const EMPTY_TEMPLATE = hbs``;
const INVOKE_PROVIDED_COMPONENT = hbs``;
-const DYNAMIC_INVOKE_PROVIDED_COMPONENT = hbs`{{component this.ProvidedComponent}}`;
export interface RenderingTestContext extends TestContext {
render(template: TemplateFactory): Promise;
@@ -157,33 +157,15 @@ export function render(
);
}
- if (
- macroCondition(
- dependencySatisfies('ember-source', '>=3.25.0-beta.1')
- )
- ) {
- // In 3.25+, we can treat components as one big object and just pass them around/invoke them
- // wherever, so we just assign the component to the `ProvidedComponent` property and invoke it
- // in the test's template
- context = {
- ProvidedComponent: templateOrComponent,
- };
- templateOrComponent = INVOKE_PROVIDED_COMPONENT;
- } else {
- // Below 3.25, however, we *cannot* treat components as one big object and instead have to
- // register their class and template independently and then invoke them with the `component`
- // helper so they can actually be found by the resolver and rendered
- templateId += 1;
- let name = `-undertest-${templateId}`;
- let componentFullName = `component:${name}`;
- let templateFullName = `template:components/${name}`;
- context = {
- ProvidedComponent: name,
- };
- ownerToRenderFrom.register(componentFullName, templateOrComponent);
- templateOrComponent = DYNAMIC_INVOKE_PROVIDED_COMPONENT;
- ownerToRenderFrom.register(templateFullName, templateOrComponent);
- }
+ let ProvidedComponent = ensureSafeComponent(
+ templateOrComponent,
+ context
+ );
+
+ context = {
+ ProvidedComponent,
+ };
+ templateOrComponent = INVOKE_PROVIDED_COMPONENT;
} else {
templateId += 1;
let templateFullName = `template:-undertest-${templateId}`;
diff --git a/package.json b/package.json
index 50d2b0fee..3dc06775f 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"dependencies": {
"@ember/test-waiters": "^3.0.0",
"@embroider/macros": "^1.6.0",
+ "@embroider/util": "^1.6.0",
"broccoli-debug": "^0.6.5",
"broccoli-funnel": "^3.0.8",
"ember-cli-babel": "^7.26.6",
diff --git a/yarn.lock b/yarn.lock
index 16e2519cb..a913c62a9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1810,7 +1810,7 @@
ember-cli-version-checker "^5.1.2"
semver "^7.3.5"
-"@embroider/macros@^1.6.0":
+"@embroider/macros@1.6.0", "@embroider/macros@^1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@embroider/macros/-/macros-1.6.0.tgz#2b764f965c645fdcfbf05897c88195368b046ba1"
integrity sha512-yUEXJGJGP3rjtxorxrbkdxriBFEwnmzOrNk4zK64IXKBfyRjiDZFUHV9DSTrbaYLS29Mw5yK73ZIwi8L13C4Zw==
@@ -1851,6 +1851,15 @@
semver "^7.3.2"
typescript-memoize "^1.0.0-alpha.3"
+"@embroider/util@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@embroider/util/-/util-1.6.0.tgz#6a817dfd5192afaab41e80ebce623d5812b30985"
+ integrity sha512-oUQDAMiAATHsiNwEMH/SzNSQ/Z5wDr9f6NImsDIFLvDT6T34/p7cqR4wyfrfMRtcc1EB6PbwhZ6bXYsJ6QPWRA==
+ dependencies:
+ "@embroider/macros" "1.6.0"
+ broccoli-funnel "^3.0.5"
+ ember-cli-babel "^7.23.1"
+
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
@@ -6587,9 +6596,9 @@ ember-source-channel-url@^3.0.0:
node-fetch "^2.6.0"
ember-source@~3.28.4:
- version "3.28.4"
- resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.28.4.tgz#b6ac2b1e369ef533d05164c65078b4ceafdb6390"
- integrity sha512-s7kVy0E08erAHUTI/8SZZvXt3an/xb2g5K+m4Rybvo8Tr/noMk3lIdtyQkSvmgMZ/BbvoW8spS630sO0/JN4Eg==
+ version "3.28.9"
+ resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.28.9.tgz#804c56b2d71d3cc3decff15a3273bb35d668300a"
+ integrity sha512-Fy7V3yvj+3oyo2+ke52aaihKMcFnnF7Oj9ixj547yzh2faqRfqouB5ZSiwXFH8rxw22rKaM8DiuQO4JN2Ay6xQ==
dependencies:
"@babel/helper-module-imports" "^7.8.3"
"@babel/plugin-transform-block-scoping" "^7.8.3"