CST-12498 Added tests, still needs cleanup and check on one behaviour

This commit is contained in:
Mattia Vianelli
2023-11-17 20:34:28 +01:00
parent 3c96abb64f
commit 92b791ed15
3 changed files with 112 additions and 44 deletions

View File

@@ -45,7 +45,8 @@ export const mockLdnService: LdnService = {
};
//export const mockLdnServiceRD$: Observable<RemoteData<PaginatedList<LdnService>>> = of((mockLdnService as unknown) as RemoteData<PaginatedList<LdnService>>);
export const mockLdnServiceRD$: Observable<RemoteData<LdnService>> = createSuccessfulRemoteDataObject$(mockLdnService);
//export const mockLdnServiceRD$ = createSuccessfulRemoteDataObject$(createPaginatedList(mockLdnService[0])as PaginatedList<LdnService>);
export const mockLdnServiceRD$ = createSuccessfulRemoteDataObject$(mockLdnService);
export const mockLdnServices: LdnService[] = [{

View File

@@ -1,6 +1,5 @@
import {ComponentFixture, TestBed} from '@angular/core/testing';
import {LdnServicesOverviewComponent} from './ldn-services-directory.component';
import {ChangeDetectorRef, EventEmitter} from '@angular/core';
import { ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing';
import { ChangeDetectorRef, EventEmitter, TemplateRef, ViewChild } from '@angular/core';
import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
@@ -9,10 +8,19 @@ import {LdnServicesService} from '../ldn-services-data/ldn-services-data.service
import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
import { of } from 'rxjs';
import { LdnService } from "../ldn-services-model/ldn-services.model";
import { PaginatedList } from "../../../core/data/paginated-list.model";
import { RemoteData } from "../../../core/data/remote-data";
import { LdnServicesOverviewComponent } from './ldn-services-directory.component';
describe('LdnServicesOverviewComponent', () => {
let component: LdnServicesOverviewComponent;
let fixture: ComponentFixture<LdnServicesOverviewComponent>;
let ldnServicesService: LdnServicesService;
let paginationService: PaginationService;
let modalService: NgbModal;
let notificationsService: NotificationsService;
let translateService: TranslateService;
const translateServiceStub = {
get: () => of('translated-text'),
@@ -26,29 +34,92 @@ describe('LdnServicesOverviewComponent', () => {
imports: [TranslateModule.forRoot()],
declarations: [LdnServicesOverviewComponent],
providers: [
{provide: LdnServicesService, useValue: {}},
{ provide: LdnServicesService, useValue: jasmine.createSpyObj('LdnServicesService', ['findAll', 'delete', 'patch']) },
{ provide: PaginationService, useValue: new PaginationServiceStub() },
{
provide: NgbModal, useValue: {
open: () => {/*comment*/
}
}
},
{ provide: NgbModal, useValue: { open: () => { /*comment*/ } } },
{ provide: ChangeDetectorRef, useValue: {} },
{ provide: NotificationsService, useValue: NotificationsServiceStub },
{ provide: TranslateService, useValue: translateServiceStub },
]
})
.compileComponents();
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(LdnServicesOverviewComponent);
component = fixture.componentInstance;
ldnServicesService = TestBed.inject(LdnServicesService);
paginationService = TestBed.inject(PaginationService);
modalService = TestBed.inject(NgbModal);
notificationsService = TestBed.inject(NotificationsService);
translateService = TestBed.inject(TranslateService);
component.modalRef = jasmine.createSpyObj({ close: null });
component.isProcessingSub = jasmine.createSpyObj({ unsubscribe: null });
component.ldnServicesRD$ = of({} as RemoteData<PaginatedList<LdnService>>); // You can adjust the mock data as needed
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
describe('ngOnInit', () => {
it('should call setLdnServices', fakeAsync(() => {
spyOn(component, 'setLdnServices').and.callThrough();
component.ngOnInit();
tick();
expect(component.setLdnServices).toHaveBeenCalled();
}));
it('should set ldnServicesRD$ with mock data', fakeAsync(() => {
spyOn(component, 'setLdnServices').and.callThrough();
const mockData = { /* your mock data here */ };
component.ldnServicesRD$ = of(mockData as RemoteData<PaginatedList<LdnService>>);
component.ngOnInit();
tick();
expect(component.setLdnServices).toHaveBeenCalled();
// Add more expectations based on your mock data and component behavior
}));
});
describe('ngOnDestroy', () => {
it('should call paginationService.clearPagination and unsubscribe', () => {
spyOn(paginationService, 'clearPagination');
spyOn(component.isProcessingSub, 'unsubscribe');
component.ngOnDestroy();
expect(paginationService.clearPagination).toHaveBeenCalledWith(component.pageConfig.id);
expect(component.isProcessingSub.unsubscribe).toHaveBeenCalled();
});
});
describe('openDeleteModal', () => {
it('should open delete modal', () => {
spyOn(modalService, 'open');
component.openDeleteModal(component.deleteModal);
expect(modalService.open).toHaveBeenCalledWith(component.deleteModal);
});
});
describe('closeModal', () => {
it('should close modal and detect changes', () => {
spyOn(component.modalRef, 'close');
spyOn(component.cdRef, 'detectChanges');
component.closeModal();
expect(component.modalRef.close).toHaveBeenCalled();
expect(component.cdRef.detectChanges).toHaveBeenCalled();
});
});
describe('deleteSelected', () => {
it('should delete selected service and update data', fakeAsync(() => {
const serviceId = '123';
const mockRemoteData = { /* insert mock data with service id 123 */ };
spyOn(component, 'setLdnServices').and.callThrough();
const deleteSpy = spyOn(ldnServicesService, 'delete').and.returnValue(of(mockRemoteData as RemoteData<PaginatedList<LdnService>>));
component.selectedServiceId = serviceId;
component.deleteSelected(serviceId, ldnServicesService);
tick();
expect(deleteSpy).toHaveBeenCalledWith(serviceId);
expect(mockRemoteData)
}));
});
});

View File

@@ -22,7 +22,7 @@ import {Operation} from 'fast-json-patch';
import {getFirstCompletedRemoteData} from '../../../core/shared/operators';
import {NotificationsService} from '../../../shared/notifications/notifications.service';
import {TranslateService} from '@ngx-translate/core';
import {mockLdnServiceRD$, mockLdnServicesRD$} from "../ldn-service-serviceMock/ldnServicesRD$-mock";
import { mockLdnServiceRD$ } from "../ldn-service-serviceMock/ldnServicesRD$-mock";
@Component({
@@ -38,8 +38,8 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy {
@ViewChild('deleteModal', {static: true}) deleteModal: TemplateRef<any>;
ldnServicesRD$: Observable<RemoteData<PaginatedList<LdnService>>>;
//TODO: remove mocks an put in test after finishing
mockLdnServiceRD$: Observable<RemoteData<PaginatedList<LdnService>>>;
mockLdnServicesRD$: Observable<RemoteData<PaginatedList<LdnService>>>;
//mockLdnServiceRD$: Observable<RemoteData<LdnService>>;
// mockLdnServicesRD$: Observable<RemoteData<PaginatedList<LdnService>>>;
config: FindListOptions = Object.assign(new FindListOptions(), {
elementsPerPage: 20
});
@@ -48,7 +48,7 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy {
pageSize: 20
});
isProcessingSub: Subscription;
private modalRef: any;
modalRef: any;
@@ -56,7 +56,7 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy {
protected ldnServicesService: LdnServicesService,
protected paginationService: PaginationService,
protected modalService: NgbModal,
private cdRef: ChangeDetectorRef,
public cdRef: ChangeDetectorRef,
private notificationService: NotificationsService,
private translateService: TranslateService,
) {
@@ -72,22 +72,18 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy {
getFirstCompletedRemoteData()
))
);
this.mockLdnServiceRD$ = this.paginationService.getFindListOptions(this.pageConfig.id, this.config).pipe(
switchMap((config) => this.ldnServicesService.findAll(config, false, false).pipe(
getFirstCompletedRemoteData()
))
);/*
this.mockLdnServiceRD$ = mockLdnServiceRD$
);
this.mockLdnServicesRD$ = this.paginationService.getFindListOptions(this.pageConfig.id, this.config).pipe(
switchMap((config) => this.ldnServicesService.findAll(config, false, false).pipe(
getFirstCompletedRemoteData()
))
);
);this.paginationService.getFindListOptions(this.pageConfig.id, this.config)
this.ldnServicesRD$.subscribe((rd: RemoteData<PaginatedList<LdnService>>) => {console.log('realremotedata:',rd);})
this.mockLdnServiceRD$.subscribe((rd: RemoteData<PaginatedList<LdnService>>) => {console.log('mockremotedata:',rd);})
this.mockLdnServicesRD$.subscribe((rd: RemoteData<PaginatedList<LdnService>>) => {console.log('mockremotedata[ldnservice]:',rd);})
this.mockLdnServiceRD$.subscribe((rd: RemoteData<LdnService>) => {console.log('mockremotedata:',rd);})
this.mockLdnServicesRD$.subscribe((rd: RemoteData<PaginatedList<LdnService>>) => {console.log('mockremotedata[ldnservice]:',rd);})*/
}