Skip to content

Commit

Permalink
chore: tests for application grpc services (#718)
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 18, 2023
1 parent 95dbad6 commit b604d98
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions src/app/applications/services/applications-grpc.service.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
import { ApplicationRawEnumField, ApplicationsClient, FilterStringOperator, ListApplicationsRequest } from '@aneoconsultingfr/armonik.api.angular';
import { TestBed } from '@angular/core/testing';
import { FilterDefinitionRootString } from '@app/types/filter-definition';
import { UtilsService } from '@services/utils.service';
import { ApplicationsFiltersService } from './applications-filters.service';
import { ApplicationsGrpcService } from './applications-grpc.service';
import { ApplicationRawFilter, ApplicationRawListOptions } from '../types';

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

const mockApplicationFiltersService = {
retrieveFiltersDefinitions: jest.fn().mockImplementation(() => {
const definitions: FilterDefinitionRootString<ApplicationRawEnumField>[] = [
{
for: 'root',
field: 1,
type: 'string'
},
{
for: 'root',
field: 2,
type: 'number'
} as unknown as FilterDefinitionRootString<ApplicationRawEnumField>
];
return definitions;
})
};

const mockApplicationsClient = {
listApplications: jest.fn().mockImplementation((data) => data)
};

const options: ApplicationRawListOptions = {
pageIndex: 0,
pageSize: 10,
sort: {
active: 'name',
direction: 'asc'
}
};

const correctfilters: ApplicationRawFilter = [[
{
field: 1,
for: 'root',
operator: 0,
value: 'someValue'
}
]];

const uncorrectfilters: ApplicationRawFilter = [[
{
field: 2,
for: 'root',
operator: 0,
value: 123
}
]];

beforeEach(() => {
service = TestBed.configureTestingModule({
providers: [
ApplicationsGrpcService,
UtilsService<ApplicationRawEnumField>,
{ provide: ApplicationsClient, useValue: mockApplicationsClient },
{ provide: ApplicationsFiltersService, useValue: mockApplicationFiltersService }
]
}).inject(ApplicationsGrpcService);
});

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

it('should not get', () => {
expect(() => {service.get$();}).toThrowError('This method must never be called');
});

it('should create a request without filters', () => {
const listResult = new ListApplicationsRequest({
page: 0,
pageSize: 10,
sort: {
direction: 1,
fields: [{
applicationField: {
field: 1
}
}]
},
filters: {or: []}
});
expect(service.list$(options, [])).toEqual(listResult);
});

it('should create a request with filters', () => {
const listResult = new ListApplicationsRequest({
page: 0,
pageSize: 10,
sort: {
direction: 1,
fields: [{
applicationField: {
field: 1
}
}]
},
filters: { or: [{
and: [{
field: {
applicationField: {
field: 1
}
},
filterString: {
value: 'someValue',
operator: 0 as FilterStringOperator
}
}]
}]}
});
expect(service.list$(options, correctfilters)).toEqual(listResult);
});

it('should throw error in case on unexpected type', () => {
expect(() => {service.list$(options, uncorrectfilters);}).toThrowError('Type number not supported');
});
});

1 comment on commit b604d98

@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: 89%
88.9% (1443/1623) 79.59% (277/348) 80.04% (345/431)

JUnit

Tests Skipped Failures Errors Time
484 0 💤 0 ❌ 0 🔥 1m 22s ⏱️
Files coverage (89%)
File% Stmts% Branch% Funcs% LinesUncovered Line #s
All files88.979.5980.0489.07 
applications/services10081.81100100 
   applications-filters.service.ts100100100100 
   applications-grpc.service.ts10066.6610010068–69
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/services52.533.3326.6652.77 
   dashboard-index.service.ts240022.7210–49
   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
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.