From b348397873e67f1f70ba3dec76ba55b3c5dc9ecb Mon Sep 17 00:00:00 2001 From: Godfrey Chan Date: Fri, 17 Nov 2023 17:27:46 -0800 Subject: [PATCH] Fix ember-canary error/deprecation The canary build started failing after https://github.com/emberjs/ember.js/pull/20570 was merged. We were never supposed to pass a `TemplateFactory` to `OutletState`, but it was previously tolerated. The pattern was fixed in the pass, but regressed when implementing support for `render()`. --- .../test-helpers/setup-rendering-context.ts | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/addon/addon-test-support/@ember/test-helpers/setup-rendering-context.ts b/addon/addon-test-support/@ember/test-helpers/setup-rendering-context.ts index 3223c89a0..a6ab4cd58 100644 --- a/addon/addon-test-support/@ember/test-helpers/setup-rendering-context.ts +++ b/addon/addon-test-support/@ember/test-helpers/setup-rendering-context.ts @@ -88,7 +88,7 @@ export interface RenderOptions { Renders the provided template and appends it to the DOM. @public - @param {Template|Component} templateOrComponent the component (or template) to render + @param {Template|Component} templateFactoryOrComponent the component (or template) to render @param {RenderOptions} options options hash containing engine owner ({ owner: engineOwner }) @returns {Promise} resolves when settled @@ -99,12 +99,12 @@ export interface RenderOptions { await render(hbs`
`); */ export function render( - templateOrComponent: object, + templateFactoryOrComponent: object, options?: RenderOptions ): Promise { let context = getContext(); - if (!templateOrComponent) { + if (!templateFactoryOrComponent) { throw new Error('you must pass a template to `render()`'); } @@ -128,7 +128,7 @@ export function render( let OutletTemplate = lookupOutletTemplate(owner); let ownerToRenderFrom = options?.owner || owner; - if (isComponent(templateOrComponent)) { + if (isComponent(templateFactoryOrComponent)) { // We use this to track when `render` is used with a component so that we can throw an // assertion if `this.{set,setProperty} is used in the same test ComponentRenderMap.set(context, true); @@ -144,19 +144,16 @@ export function render( } context = { - ProvidedComponent: templateOrComponent, + ProvidedComponent: templateFactoryOrComponent, }; - templateOrComponent = INVOKE_PROVIDED_COMPONENT; - } else { - templateId += 1; - let templateFullName = `template:-undertest-${templateId}` as const; - ownerToRenderFrom.register(templateFullName, templateOrComponent); - templateOrComponent = lookupTemplate( - ownerToRenderFrom, - templateFullName - ); + templateFactoryOrComponent = INVOKE_PROVIDED_COMPONENT; } + templateId += 1; + let templateFullName = `template:-undertest-${templateId}` as const; + ownerToRenderFrom.register(templateFullName, templateFactoryOrComponent); + let template = lookupTemplate(ownerToRenderFrom, templateFullName); + let outletState = { render: { owner, // always use the host app owner for application outlet @@ -177,7 +174,7 @@ export function render( name: 'index', controller: context, ViewClass: undefined, - template: templateOrComponent, + template, outlets: {}, }, outlets: {},