import { HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http' import { Subject } from 'rxjs' import { toArray } from 'rxjs/operators' import { upload } from './upload' describe('upload', () => { it('should transform HTTP upload', done => { const request = new Subject<HttpEvent<unknown>>() request.pipe(upload(), toArray()) .subscribe(uploads => { expect(uploads).toEqual([ {progress: 0, state: 'PENDING'}, {progress: 1, state: 'IN_PROGRESS'}, {progress: 50, state: 'IN_PROGRESS'}, {progress: 100, state: 'IN_PROGRESS'}, {progress: 100, state: 'DONE'} ]) done() }) request.next({type: HttpEventType.Sent}) request.next({ type: HttpEventType.User, }) request.next({ type: HttpEventType.UploadProgress, loaded: 12, total: 1024 }) request.next({ type: HttpEventType.UploadProgress, loaded: 512, total: 1024 }) request.next({ type: HttpEventType.User, }) request.next({ type: HttpEventType.UploadProgress, loaded: 1024, total: 1024 }) request.next({ type: HttpEventType.UploadProgress, loaded: 1024 }) request.next(new HttpResponse({ status: 200, url: '/uploads/file.pdf' })) request.complete() }) })