Skip to content

Commit

Permalink
test: dashboard index service (#736)
Browse files Browse the repository at this point in the history
Co-authored-by: yannick-aneo <[email protected]>
  • Loading branch information
fdewas-aneo and yannick-aneo authored Oct 20, 2023
1 parent 87f4e58 commit 0970360
Showing 1 changed file with 107 additions and 0 deletions.
107 changes: 107 additions & 0 deletions src/app/dashboard/services/dashboard-index.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import { TaskStatus } from '@aneoconsultingfr/armonik.api.angular';
import { TestBed } from '@angular/core/testing';
import { TasksStatusesService } from '@app/tasks/services/tasks-statuses.service';
import { DefaultConfigService } from '@services/default-config.service';
import { DashboardIndexService } from './dashboard-index.service';
import { DashboardStorageService } from './dashboard-storage.service';
import { Line } from '../types';

describe('DashboardIndexService', () => {
let service: DashboardIndexService;

const mockDashboardStorageService = {
restoreLines: jest.fn(),
saveLines: jest.fn(),
restoreSplitLines: jest.fn(),
saveSplitLines: jest.fn()
};

const defaultValues = new DefaultConfigService();

const lines: Line[] = [
{
name: 'line1',
interval: 10,
hideGroupsHeader: false,
filters: [],
taskStatusesGroups: [
{ name: 'Success', color: 'green', statuses: [TaskStatus.TASK_STATUS_COMPLETED, TaskStatus.TASK_STATUS_PROCESSED]},
{ name: 'Running', color: 'yellow', statuses: [TaskStatus.TASK_STATUS_CREATING, TaskStatus.TASK_STATUS_PROCESSING]},
{ name: 'Error', color: 'red', statuses: [TaskStatus.TASK_STATUS_CANCELLED, TaskStatus.TASK_STATUS_TIMEOUT]}
],
},
{
name: 'line2',
interval: 20,
hideGroupsHeader: true,
filters: [],
taskStatusesGroups: [
{ name: 'Success', color: 'green', statuses: [TaskStatus.TASK_STATUS_COMPLETED, TaskStatus.TASK_STATUS_PROCESSED]},
{ name: 'Running', color: 'yellow', statuses: [TaskStatus.TASK_STATUS_CREATING, TaskStatus.TASK_STATUS_PROCESSING]},
{ name: 'Unspecified', color: 'grey', statuses: [TaskStatus.TASK_STATUS_UNSPECIFIED, TaskStatus.TASK_STATUS_RETRIED]}
],
}
];

beforeEach(() => {
service = TestBed.configureTestingModule({
providers: [
DashboardIndexService,
DefaultConfigService,
{ provide: DashboardStorageService, useValue: mockDashboardStorageService },
TasksStatusesService
]
}).inject(DashboardIndexService);
});

it('should create', () => {
expect(service).toBeTruthy();
});

it('should get statuses label', () => {
expect(service.statuses().sort((a, b) => Number(a.value) - Number(b.value))).toEqual([
{ value: '0', name: 'Unspecified' },
{ value: '1', name: 'Creating' },
{ value: '2', name: 'Submitted' },
{ value: '3', name: 'Dispatched' },
{ value: '4', name: 'Finished' },
{ value: '5', name: 'Error' },
{ value: '6', name: 'Timeout' },
{ value: '7', name: 'Cancelling' },
{ value: '8', name: 'Cancelled' },
{ value: '9', name: 'Processing' },
{ value: '10', name: 'Processed' },
{ value: '11', name: 'Retried' }
]);
});

it('should restore lines', () => {
mockDashboardStorageService.restoreLines.mockImplementationOnce(() => lines);
expect(service.restoreLines()).toEqual(lines);
});

it('should restore default lines', () => {
mockDashboardStorageService.restoreLines.mockImplementationOnce(() => null);
expect(service.restoreLines()).toEqual(defaultValues.defaultDashboardLines);
});

it('should save lines', () => {
service.saveLines(lines);
expect(mockDashboardStorageService.saveLines).toHaveBeenCalledWith(lines);
});

it('should restore splitted lines', () => {
mockDashboardStorageService.restoreSplitLines.mockImplementationOnce(() => 4);
expect(service.restoreSplitLines()).toEqual(4);
});

it('should restore default splitted lines', () => {
mockDashboardStorageService.restoreSplitLines.mockImplementationOnce(() => null);
expect(service.restoreSplitLines()).toEqual(defaultValues.defaultDashboardSplitLines);
});

it('should save splitted lines', () => {
service.saveSplitLines(2);
expect(mockDashboardStorageService.saveSplitLines).toHaveBeenCalledWith(2);
});
});

1 comment on commit 0970360

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines Statements Branches Functions
Coverage: 90%
90.19% (1517/1682) 80.44% (292/363) 82.81% (376/454)

JUnit

Tests Skipped Failures Errors Time
519 0 💤 0 ❌ 0 🔥 1m 19s ⏱️
Files coverage (90%)
File% Stmts% Branch% Funcs% LinesUncovered Line #s
All files90.1980.4482.8190.26 
applications/services97.180.9591.6696.96 
   applications-filters.service.ts100100100100 
   applications-grpc.service.ts10066.6610010068–69
   applications-index.service.ts93.18086.6692.8571–75
components92.0394.1181.4493.6 
   actions-toolbar-group.component.ts100100100100 
   actions-toolbar.component.ts100100100100 
   auto-refresh-button.component.ts100100100100 
   auto-refresh-dialog.component.ts100100100100 
   columns-button.component.ts100100100100 
   columns-modify-dialog.component.ts26.660033.3365–123
   count-tasks-by-status.component.ts1005010010048
   page-header.component.ts8010008039
   page-section-header.component.ts8010008031
   page-section.component.ts100100100100 
   refresh-button.component.ts100100100100 
   share-url.component.ts92.851007592.337
   show-card-content.component.ts100100100100 
   spinner.component.ts100100100100 
   table-actions-toolbar.component.ts100100100100 
   view-tasks-by-status-dialog.component.ts100100100100 
   view-tasks-by-status.component.ts100100100100 
components/filters9578.9495.7494.89 
   filters-chips.component.ts100100100100 
   filters-dialog-and.component.ts100100100100 
   filters-dialog-filter-field.component.ts86.275.7592.385.9699–100, 132, 174, 198–202
   filters-dialog-input.component.ts92.8563.6387.592.5973–74
   filters-dialog-or.component.ts100100100100 
   filters-dialog.component.ts100100100100 
   filters-toolbar.component.ts100100100100 
components/navigation99.4410097.3699.42 
   add-external-service-dialog.component.ts100100100100 
   edit-external-service-dialog.component.ts100100100100 
   form-external-service.component.ts100100100100 
   manage-external-services-dialog.component.ts100100100100 
   navigation.component.ts98.1410088.8898.11215
   theme-selector.component.ts100100100100 
dashboard100100100100 
   index.component.ts100100100100 
dashboard/components68.138.8845.6768.24 
   add-line-dialog.component.ts55.55100055.5527–38
   add-statuses-group-dialog.component.ts45.45100045.4529–45
   edit-name-line-dialog.component.ts5010005031–46
   edit-status-group-dialog.component.ts41.66100041.6630–47
   form-name-line.component.ts47.360047.3657–88
   form-statuses-group.component.ts22.50022.582–159
   line.component.ts100100100100 
   manage-groups-dialog.component.ts100100100100 
   reorganize-lines-dialog.component.ts32.430034.28104–160
   split-lines-dialog.component.ts42.850042.8538–61
   statuses-group-card.component.ts100100100100 
dashboard/services100100100100 
   dashboard-index.service.ts100100100100 
   dashboard-storage.service.ts100100100100 
services98.3695.4195.6998.24 
   auto-refresh.service.ts100100100100 
   date-handler.service.ts100100100100 
   default-config.service.ts100100100100 
   environment.service.ts80100507519
   filters.service.ts100100100100 
   icons.service.ts100100100100 
   navigation.service.ts10080100100109
   notification.service.ts100100100100 
   query-params.service.ts100100100100 
   share-url.service.ts100100100100 
   storage.service.ts98.0310010097.9595
   table-storage.service.ts500042.8511–31
   table-url.service.ts100100100100 
   table.service.ts100100100100 
   tasks-by-status.service.ts100100100100 
   user-grpc.service.ts100100100100 
   user.service.ts100100100100 
   utils.service.ts100100100100 
   versions-grpc.service.ts100100100100 
   versions.service.ts1007010010014, 25, 32
sessions/services93.336087.592.85 
   sessions-filters.service.ts95.836010095.65145
   sessions-statuses.service.ts83.33100508013
tasks/services77.455083.7876.53 
   tasks-filters.service.ts100100100100 
   tasks-grpc.service.ts23.330020.6813–151
   tasks-index.service.ts100100100100 
   tasks-statuses.service.ts100100100100 
tokens100100100100 
   filters.token.ts100100100100 

Please sign in to comment.