76 lines
2.6 KiB
TypeScript
76 lines
2.6 KiB
TypeScript
import { TestBed } from '@angular/core/testing';
|
|
import { Response } from '../../models/Response';
|
|
import { ContactService } from './contact.service';
|
|
import { provideHttpClient } from '@angular/common/http';
|
|
import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
|
|
import { environment } from '../../../environments/environment';
|
|
import { ContactDTO } from '../../models/ContactDTO';
|
|
|
|
describe('ContactService', () => {
|
|
let service: ContactService;
|
|
let httpTestingController: HttpTestingController;
|
|
|
|
let RES_MOCK: Response<any>;
|
|
|
|
let endpointURL = environment.apiUrl + '/contacts';
|
|
beforeEach(() => {
|
|
TestBed.configureTestingModule({
|
|
imports: [],
|
|
providers: [provideHttpClient(), provideHttpClientTesting()],
|
|
});
|
|
service = TestBed.inject(ContactService);
|
|
httpTestingController = TestBed.inject(HttpTestingController);
|
|
|
|
RES_MOCK = {
|
|
data: null,
|
|
errors: [],
|
|
message: '',
|
|
success: true,
|
|
};
|
|
});
|
|
|
|
it('should be created', () => {
|
|
expect(service).toBeTruthy();
|
|
});
|
|
|
|
it('should GET contacts from the contacts ep', () => {
|
|
const CONTACTS_MOCK = [new ContactDTO(1, 'mock1'), new ContactDTO(2, 'mock2')];
|
|
service.getAll().subscribe();
|
|
const req = httpTestingController.expectOne(endpointURL);
|
|
expect(req.request.method).toEqual('GET');
|
|
RES_MOCK.data = CONTACTS_MOCK;
|
|
req.flush(RES_MOCK);
|
|
httpTestingController.verify();
|
|
});
|
|
|
|
it('should POST contact to the contacts ep', () => {
|
|
const CONTACT_MOCK = new ContactDTO(undefined, 'mock');
|
|
service.save(CONTACT_MOCK).subscribe();
|
|
const postReq = httpTestingController.expectOne(endpointURL);
|
|
expect(postReq.request.method).toEqual('POST');
|
|
expect(postReq.request.body).toEqual(CONTACT_MOCK);
|
|
CONTACT_MOCK.id = 1;
|
|
RES_MOCK.data = CONTACT_MOCK
|
|
postReq.flush(RES_MOCK);
|
|
const getReq = httpTestingController.expectOne(endpointURL);
|
|
expect(getReq.request.method).toEqual('GET');
|
|
RES_MOCK.data = [CONTACT_MOCK];
|
|
getReq.flush(RES_MOCK);
|
|
httpTestingController.verify();
|
|
});
|
|
|
|
it('should DELETE with the given ID to the contacts ep', () => {
|
|
const ID_MOCK = 1;
|
|
service.delete(ID_MOCK).subscribe();
|
|
const deleteReq = httpTestingController.expectOne(`${endpointURL}/${ID_MOCK}`);
|
|
expect(deleteReq.request.method).toEqual('DELETE');
|
|
RES_MOCK.message = "Contact deleted successfully";
|
|
deleteReq.flush(RES_MOCK);
|
|
const getReq = httpTestingController.expectOne(endpointURL);
|
|
expect(getReq.request.method).toEqual('GET');
|
|
RES_MOCK.data = [];
|
|
RES_MOCK.message = '';
|
|
getReq.flush(RES_MOCK);
|
|
});
|
|
});
|