@@ -18,7 +18,13 @@ import {
1818
1919export type RenderResultQueries < Q extends Queries = typeof queries > = BoundFunctions < Q > ;
2020
21- export interface RenderResult < ComponentType , WrapperType = ComponentType > extends RenderResultQueries {
21+ export type RenderResult <
22+ ComponentType ,
23+ WrapperType = ComponentType ,
24+ Q extends Queries = typeof queries ,
25+ > = RenderResultQueries < Q > & BaseRenderResult < ComponentType , WrapperType > ;
26+
27+ interface BaseRenderResult < ComponentType , WrapperType = ComponentType > {
2228 /**
2329 * @description
2430 * The containing DOM node of your rendered Angular Component.
@@ -206,28 +212,28 @@ export interface RenderTemplateOptions<WrapperType, Properties extends object =
206212 imports ?: any [ ] ;
207213}
208214
209- export async function render < ComponentType > (
215+ export async function render < ComponentType , Q extends Queries = typeof queries > (
210216 component : Type < ComponentType > ,
211- renderOptions ?: RenderComponentOptions ,
212- ) : Promise < RenderResult < ComponentType , ComponentType > > ;
213- export async function render < WrapperType = WrapperComponent > (
217+ renderOptions ?: RenderComponentOptions < Q > ,
218+ ) : Promise < RenderResult < ComponentType , ComponentType , Q > > ;
219+ export async function render < WrapperType = WrapperComponent , Q extends Queries = typeof queries > (
214220 template : string ,
215- renderOptions ?: RenderTemplateOptions < WrapperType > ,
216- ) : Promise < RenderResult < WrapperType > > ;
217- export async function render < ComponentType , WrapperType = ComponentType > (
221+ renderOptions ?: RenderTemplateOptions < WrapperType , object , Q > ,
222+ ) : Promise < RenderResult < WrapperType , WrapperType , Q > > ;
223+ export async function render < ComponentType , WrapperType = ComponentType , Q extends Queries = typeof queries > (
218224 componentOrTemplate : Type < ComponentType > | string ,
219- renderOptions : RenderComponentOptions | RenderTemplateOptions < WrapperType > = { } ,
220- ) : Promise < RenderResult < ComponentType , ComponentType | WrapperType > > {
225+ renderOptions : RenderComponentOptions < Q > | RenderTemplateOptions < WrapperType , object , Q > = { } ,
226+ ) : Promise < RenderResult < ComponentType , ComponentType | WrapperType , Q > > {
221227 TestBed . configureTestingModule ( {
222228 declarations : [ WrapperComponent ] ,
223229 imports : 'imports' in renderOptions ? renderOptions . imports : [ ] ,
224230 providers : renderOptions . providers ?? [ ] ,
225231 } ) ;
226232
227- if ( 'importOverrides' in renderOptions && ( renderOptions as RenderComponentOptions ) . importOverrides ?. length ) {
233+ if ( 'importOverrides' in renderOptions && ( renderOptions as RenderComponentOptions < Q > ) . importOverrides ?. length ) {
228234 const sut = componentOrTemplate as Type < unknown > ;
229235 if ( typeof sut === 'function' && isStandalone ( sut ) ) {
230- const overrides = ( renderOptions as RenderComponentOptions ) . importOverrides ! ;
236+ const overrides = ( renderOptions as RenderComponentOptions < Q > ) . importOverrides ! ;
231237 TestBed . overrideComponent ( sut , {
232238 remove : { imports : overrides . map ( ( o ) => o . replace ) } ,
233239 add : { imports : overrides . map ( ( o ) => o . with ) } ,
@@ -267,8 +273,8 @@ export async function render<ComponentType, WrapperType = ComponentType>(
267273 console . log ( prettyDOM ( element , maxLength , options ) ) ;
268274 }
269275 } ,
270- ...getQueriesForElement ( fixture . nativeElement , renderOptions ?. queries ) ,
271- } ;
276+ ...getQueriesForElement < Q > ( fixture . nativeElement , renderOptions ?. queries ) ,
277+ } as RenderResult < ComponentType , ComponentType | WrapperType , Q > ;
272278}
273279
274280async function createComponentFixture < SutType > (
0 commit comments