diff --git a/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts b/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts index 3f559c6c48..5d409964c2 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock.ts @@ -45,7 +45,8 @@ export const mockLdnService: LdnService = { }; //export const mockLdnServiceRD$: Observable>> = of((mockLdnService as unknown) as RemoteData>); -export const mockLdnServiceRD$: Observable> = createSuccessfulRemoteDataObject$(mockLdnService); +//export const mockLdnServiceRD$ = createSuccessfulRemoteDataObject$(createPaginatedList(mockLdnService[0])as PaginatedList); +export const mockLdnServiceRD$ = createSuccessfulRemoteDataObject$(mockLdnService); export const mockLdnServices: LdnService[] = [{ diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts index 87a1da27a1..6912379b78 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts @@ -1,18 +1,26 @@ -import {ComponentFixture, TestBed} from '@angular/core/testing'; -import {LdnServicesOverviewComponent} from './ldn-services-directory.component'; -import {ChangeDetectorRef, EventEmitter} 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'; -import {NgbModal} from '@ng-bootstrap/ng-bootstrap'; -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 { 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'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +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; + 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: PaginationService, useValue: new PaginationServiceStub()}, - { - provide: NgbModal, useValue: { - open: () => {/*comment*/ - } - } - }, - {provide: ChangeDetectorRef, useValue: {}}, - {provide: NotificationsService, useValue: NotificationsServiceStub}, - {provide: TranslateService, useValue: translateServiceStub}, + { provide: LdnServicesService, useValue: jasmine.createSpyObj('LdnServicesService', ['findAll', 'delete', 'patch']) }, + { provide: PaginationService, useValue: new PaginationServiceStub() }, + { 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>); // 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>); + 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>)); + component.selectedServiceId = serviceId; + component.deleteSelected(serviceId, ldnServicesService); + tick(); + expect(deleteSpy).toHaveBeenCalledWith(serviceId); + expect(mockRemoteData) + })); + }); }); diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts index 99e420568c..476d8ef1b5 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts @@ -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; ldnServicesRD$: Observable>>; //TODO: remove mocks an put in test after finishing - mockLdnServiceRD$: Observable>>; - mockLdnServicesRD$: Observable>>; + //mockLdnServiceRD$: Observable>; + // mockLdnServicesRD$: Observable>>; config: FindListOptions = Object.assign(new FindListOptions(), { elementsPerPage: 20 }); @@ -48,17 +48,17 @@ export class LdnServicesOverviewComponent implements OnInit, OnDestroy { pageSize: 20 }); isProcessingSub: Subscription; - private modalRef: any; + modalRef: any; constructor( - protected ldnServicesService: LdnServicesService, - protected paginationService: PaginationService, - protected modalService: NgbModal, - private cdRef: ChangeDetectorRef, - private notificationService: NotificationsService, - private translateService: TranslateService, + protected ldnServicesService: LdnServicesService, + protected paginationService: PaginationService, + protected modalService: NgbModal, + 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>) => {console.log('realremotedata:',rd);}) - this.mockLdnServiceRD$.subscribe((rd: RemoteData>) => {console.log('mockremotedata:',rd);}) - this.mockLdnServicesRD$.subscribe((rd: RemoteData>) => {console.log('mockremotedata[ldnservice]:',rd);}) + this.mockLdnServiceRD$.subscribe((rd: RemoteData) => {console.log('mockremotedata:',rd);}) + this.mockLdnServicesRD$.subscribe((rd: RemoteData>) => {console.log('mockremotedata[ldnservice]:',rd);})*/ }