@@ -27,22 +27,26 @@ const OUTLET_TEMPLATE = hbs`{{outlet}}`;
2727const EMPTY_TEMPLATE = hbs `` ;
2828const INVOKE_PROVIDED_COMPONENT = hbs `<this.ProvidedComponent />` ;
2929
30- export interface RenderingTestContext extends TestContext {
31- render ( template : TemplateFactory ) : Promise < void > ;
32- clearRender ( ) : Promise < void > ;
30+ const hasCalledSetupRenderingContext = Symbol ( ) ;
3331
32+ export interface RenderingTestContext extends TestContext {
3433 element : Element | Document ;
34+ [ hasCalledSetupRenderingContext ] ?: true ;
35+ }
36+
37+ // Isolates the notion of transforming a TextContext into a RenderingTestContext.
38+ // eslint-disable-next-line require-jsdoc
39+ function prepare ( context : TestContext ) : RenderingTestContext {
40+ let renderingTestContext = context as RenderingTestContext ;
41+ ( context as RenderingTestContext ) [ hasCalledSetupRenderingContext ] = true ;
42+ return context as RenderingTestContext ;
3543}
3644
3745// eslint-disable-next-line require-jsdoc
3846export function isRenderingTestContext (
3947 context : BaseContext
4048) : context is RenderingTestContext {
41- return (
42- isTestContext ( context ) &&
43- typeof context [ 'render' ] === 'function' &&
44- typeof context [ 'clearRender' ] === 'function'
45- ) ;
49+ return isTestContext ( context ) && hasCalledSetupRenderingContext in context ;
4650}
4751
4852/**
@@ -293,58 +297,11 @@ export default function setupRenderingContext(
293297 let testMetadata = getTestMetadata ( context ) ;
294298 testMetadata . setupTypes . push ( 'setupRenderingContext' ) ;
295299
300+ let renderingContext = prepare ( context ) ;
301+
296302 return Promise . resolve ( )
297303 . then ( ( ) => {
298- let { owner } = context ;
299-
300- let renderDeprecationWrapper = function ( template : TemplateFactory ) {
301- deprecate (
302- 'Using this.render has been deprecated, consider using `render` imported from `@ember/test-helpers`.' ,
303- false ,
304- {
305- id : 'ember-test-helpers.setup-rendering-context.render' ,
306- until : '3.0.0' ,
307- for : '@ember/test-helpers' ,
308- since : {
309- enabled : '2.0.0' ,
310- available : '2.0.0' ,
311- } ,
312- }
313- ) ;
314-
315- return render ( template ) ;
316- } ;
317-
318- let clearRenderDeprecationWrapper = function ( ) {
319- deprecate (
320- 'Using this.clearRender has been deprecated, consider using `clearRender` imported from `@ember/test-helpers`.' ,
321- false ,
322- {
323- id : 'ember-test-helpers.setup-rendering-context.clearRender' ,
324- until : '3.0.0' ,
325- for : '@ember/test-helpers' ,
326- since : {
327- enabled : '2.0.0' ,
328- available : '2.0.0' ,
329- } ,
330- }
331- ) ;
332-
333- return clearRender ( ) ;
334- } ;
335-
336- Object . defineProperty ( context , 'render' , {
337- configurable : true ,
338- enumerable : true ,
339- value : renderDeprecationWrapper ,
340- writable : false ,
341- } ) ;
342- Object . defineProperty ( context , 'clearRender' , {
343- configurable : true ,
344- enumerable : true ,
345- value : clearRenderDeprecationWrapper ,
346- writable : false ,
347- } ) ;
304+ let { owner } = renderingContext ;
348305
349306 // When the host app uses `setApplication` (instead of `setResolver`) the event dispatcher has
350307 // already been setup via `applicationInstance.boot()` in `./build-owner`. If using
@@ -378,13 +335,13 @@ export default function setupRenderingContext(
378335
379336 // initially render a simple empty template
380337 return render ( EMPTY_TEMPLATE ) . then ( ( ) => {
381- ( run as Function ) ( toplevelView , 'appendTo' , getRootElement ( ) ) ;
338+ run ( toplevelView , 'appendTo' , getRootElement ( ) ) ;
382339
383340 return settled ( ) ;
384341 } ) ;
385342 } )
386343 . then ( ( ) => {
387- Object . defineProperty ( context , 'element' , {
344+ Object . defineProperty ( renderingContext , 'element' , {
388345 configurable : true ,
389346 enumerable : true ,
390347 // ensure the element is based on the wrapping toplevel view
@@ -402,6 +359,6 @@ export default function setupRenderingContext(
402359 writable : false ,
403360 } ) ;
404361
405- return context as RenderingTestContext ;
362+ return renderingContext ;
406363 } ) ;
407364}
0 commit comments