* Given a template, creates a component fixture and returns * a set of helper functions to trigger rendering of prefetching * of a defer block.
(template: string)
| 185 | * of a defer block. |
| 186 | */ |
| 187 | function createFixture(template: string) { |
| 188 | @Component({ |
| 189 | selector: 'nested-cmp', |
| 190 | template: '{{ block }}', |
| 191 | |
| 192 | changeDetection: ChangeDetectionStrategy.Eager, |
| 193 | }) |
| 194 | class NestedCmp { |
| 195 | @Input() block!: string; |
| 196 | } |
| 197 | |
| 198 | @Component({ |
| 199 | selector: 'simple-app', |
| 200 | imports: [NestedCmp], |
| 201 | template, |
| 202 | |
| 203 | changeDetection: ChangeDetectionStrategy.Eager, |
| 204 | }) |
| 205 | class MyCmp { |
| 206 | trigger = false; |
| 207 | prefetchTrigger = false; |
| 208 | } |
| 209 | |
| 210 | let loadingTimeout = 0; |
| 211 | const deferDepsInterceptor = { |
| 212 | intercept() { |
| 213 | return () => { |
| 214 | return [dynamicImportOf(NestedCmp, loadingTimeout)]; |
| 215 | }; |
| 216 | }, |
| 217 | }; |
| 218 | |
| 219 | TestBed.configureTestingModule({ |
| 220 | providers: [ |
| 221 | ...COMMON_PROVIDERS, |
| 222 | {provide: ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, useValue: deferDepsInterceptor}, |
| 223 | ], |
| 224 | }); |
| 225 | |
| 226 | clearDirectiveDefs(MyCmp); |
| 227 | |
| 228 | const fixture = TestBed.createComponent(MyCmp); |
| 229 | fixture.detectChanges(); |
| 230 | |
| 231 | const trigger = (loadingResourcesTime: number) => () => { |
| 232 | loadingTimeout = loadingResourcesTime; |
| 233 | fixture.componentInstance.trigger = true; |
| 234 | fixture.detectChanges(); |
| 235 | }; |
| 236 | |
| 237 | const triggerPrefetch = (loadingResourcesTime: number) => () => { |
| 238 | loadingTimeout = loadingResourcesTime; |
| 239 | fixture.componentInstance.prefetchTrigger = true; |
| 240 | fixture.detectChanges(); |
| 241 | }; |
| 242 | |
| 243 | return {trigger, triggerPrefetch, fixture}; |
| 244 | } |
no test coverage detected