diff --git a/packages/angular_devkit/core/src/experimental/jobs/simple-scheduler_spec.ts b/packages/angular_devkit/core/src/experimental/jobs/simple-scheduler_spec.ts index 02a4755722ad..e5e3c9855390 100644 --- a/packages/angular_devkit/core/src/experimental/jobs/simple-scheduler_spec.ts +++ b/packages/angular_devkit/core/src/experimental/jobs/simple-scheduler_spec.ts @@ -590,5 +590,36 @@ describe('SimpleScheduler', () => { expect(await job.output.toPromise()).toBe(103); expect(outputs).toEqual([101, 103]); }); + + it('works deferred', async () => { + // This is a more complex test. The job returns an output deferred from the input + registry.register( + 'job', + createJobHandler((argument, context) => { + return new Observable(subscriber => { + context.input.subscribe(x => { + if (x === null) { + setTimeout(() => subscriber.complete(), 10); + } else { + setTimeout(() => subscriber.next(parseInt('' + x) + argument), x); + } + }); + }); + }), + ); + + const job = scheduler.schedule('job', 100); + const outputs: number[] = []; + + job.output.subscribe(x => outputs.push(x as number)); + + job.input.next(1); + job.input.next(2); + job.input.next(3); + job.input.next(null); + + expect(await job.output.toPromise()).toBe(103); + expect(outputs).toEqual(jasmine.arrayWithExactContents([101, 102, 103])); + }); }); });