1 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
3 import * as _ from 'lodash';
4 import { BehaviorSubject } from 'rxjs';
6 import { configureTestBed } from '../../../testing/unit-test-helper';
7 import { SummaryService } from './summary.service';
8 import { TaskManagerService } from './task-manager.service';
10 const summary: Record<string, any> = {
12 health_status: 'HEALTH_OK',
14 rbd_mirroring: { errors: 0, warnings: 0 },
16 have_mon_connection: true,
17 finished_tasks: [{ name: 'foo', metadata: {} }],
18 filesystems: [{ id: 1, name: 'cephfs_a' }]
21 export class SummaryServiceMock {
22 summaryDataSource = new BehaviorSubject(summary);
23 summaryData$ = this.summaryDataSource.asObservable();
26 this.summaryDataSource.next(summary);
28 subscribe(call: any) {
29 return this.summaryData$.subscribe(call);
33 describe('TaskManagerService', () => {
34 let taskManagerService: TaskManagerService;
35 let summaryService: any;
40 providers: [TaskManagerService, { provide: SummaryService, useClass: SummaryServiceMock }]
46 taskManagerService = TestBed.get(TaskManagerService);
47 summaryService = TestBed.get(SummaryService);
49 taskManagerService.subscribe('foo', {}, () => (called = true));
52 it('should be created', () => {
53 expect(taskManagerService).toBeTruthy();
56 it('should subscribe and be notified when task is finished', fakeAsync(() => {
57 expect(taskManagerService.subscriptions.length).toBe(1);
58 summaryService.refresh();
60 expect(called).toEqual(true);
61 expect(taskManagerService.subscriptions).toEqual([]);
64 it('should subscribe and process executing taks', fakeAsync(() => {
65 const original_subscriptions = _.cloneDeep(taskManagerService.subscriptions);
67 executing_tasks: [{ name: 'foo', metadata: {} }],
70 summaryService.refresh();
72 expect(taskManagerService.subscriptions).toEqual(original_subscriptions);