1 import { HttpClientTestingModule } from '@angular/common/http/testing';
2 import { TestBed } from '@angular/core/testing';
3 import { RouterTestingModule } from '@angular/router/testing';
5 import { of } from 'rxjs';
7 import { configureTestBed, i18nProviders } from '../../../testing/unit-test-helper';
8 import { ExecutingTask } from '../models/executing-task';
9 import { SummaryService } from './summary.service';
10 import { TaskListService } from './task-list.service';
11 import { TaskMessageService } from './task-message.service';
13 describe('TaskListService', () => {
14 let service: TaskListService;
15 let summaryService: SummaryService;
16 let taskMessageService: TaskMessageService;
22 const addItem = (name) => {
23 apiResp.push({ name: name });
27 providers: [TaskListService, TaskMessageService, SummaryService, i18nProviders],
28 imports: [HttpClientTestingModule, RouterTestingModule]
32 service = TestBed.get(TaskListService);
33 summaryService = TestBed.get(SummaryService);
34 taskMessageService = TestBed.get(TaskMessageService);
35 summaryService['summaryDataSource'].next({ executing_tasks: [] });
37 taskMessageService.messages['test/create'] = taskMessageService.messages['rbd/create'];
38 taskMessageService.messages['test/edit'] = taskMessageService.messages['rbd/edit'];
39 taskMessageService.messages['test/delete'] = taskMessageService.messages['rbd/delete'];
51 (updatedList) => (list = updatedList),
53 (task) => task.name.startsWith('test'),
54 (item, task) => item.name === task.metadata['name'],
56 default: (task) => ({ name: task.metadata['name'] })
61 it('should be created', () => {
62 expect(service).toBeTruthy();
65 const addTask = (name: string, itemName: string) => {
66 const task = new ExecutingTask();
68 task.metadata = { name: itemName };
70 summaryService.addRunningTask(task);
73 const expectItemTasks = (item: any, executing: string) => {
74 expect(item.cdExecuting).toBe(executing);
77 it('gets all items without any executing items', () => {
78 expect(list.length).toBe(3);
79 expect(list.every((item) => !item.cdExecuting)).toBeTruthy();
82 it('gets an item from a task during creation', () => {
83 addTask('test/create', 'd');
84 expect(list.length).toBe(4);
85 expectItemTasks(list[3], 'Creating');
88 it('gets all items with one executing items', () => {
89 addTask('test/create', 'a');
90 expect(list.length).toBe(3);
91 expectItemTasks(list[0], 'Creating');
92 expectItemTasks(list[1], undefined);
93 expectItemTasks(list[2], undefined);
96 it('gets all items with multiple executing items', () => {
97 addTask('test/create', 'a');
98 addTask('test/edit', 'a');
99 addTask('test/delete', 'a');
100 addTask('test/edit', 'b');
101 addTask('test/delete', 'b');
102 addTask('test/delete', 'c');
103 expect(list.length).toBe(3);
104 expectItemTasks(list[0], 'Creating, Updating, Deleting');
105 expectItemTasks(list[1], 'Updating, Deleting');
106 expectItemTasks(list[2], 'Deleting');
109 it('gets all items with multiple executing tasks (not only item tasks', () => {
110 addTask('rbd/create', 'a');
111 addTask('rbd/edit', 'a');
112 addTask('test/delete', 'a');
113 addTask('test/edit', 'b');
114 addTask('rbd/delete', 'b');
115 addTask('rbd/delete', 'c');
116 expect(list.length).toBe(3);
117 expectItemTasks(list[0], 'Deleting');
118 expectItemTasks(list[1], 'Updating');
119 expectItemTasks(list[2], undefined);
122 it('should call ngOnDestroy', () => {
123 expect(service.summaryDataSubscription.closed).toBeFalsy();
124 service.ngOnDestroy();
125 expect(service.summaryDataSubscription.closed).toBeTruthy();