import axios from 'axios'; import dayjs from 'dayjs'; import sinon from 'sinon'; import { DATE_TIME_FORMAT } from '@/shared/composables/date-format'; import { Liberatoria } from '@/shared/model/liberatoria.model'; import LiberatoriaService from './liberatoria.service'; const error = { response: { status: null, data: { type: null, }, }, }; const axiosStub = { get: sinon.stub(axios, 'get'), post: sinon.stub(axios, 'post'), put: sinon.stub(axios, 'put'), patch: sinon.stub(axios, 'patch'), delete: sinon.stub(axios, 'delete'), }; describe('Service Tests', () => { describe('Liberatoria Service', () => { let service: LiberatoriaService; let elemDefault; let currentDate: Date; beforeEach(() => { service = new LiberatoriaService(); currentDate = new Date(); elemDefault = new Liberatoria(123, currentDate); }); describe('Service methods', () => { it('should find an element', async () => { const returnedFromService = { accettata: dayjs(currentDate).format(DATE_TIME_FORMAT), ...elemDefault }; axiosStub.get.resolves({ data: returnedFromService }); return service.find(123).then(res => { expect(res).toMatchObject(elemDefault); }); }); it('should not find an element', async () => { axiosStub.get.rejects(error); return service .find(123) .then() .catch(err => { expect(err).toMatchObject(error); }); }); it('should create a Liberatoria', async () => { const returnedFromService = { id: 123, accettata: dayjs(currentDate).format(DATE_TIME_FORMAT), ...elemDefault }; const expected = { accettata: currentDate, ...returnedFromService }; axiosStub.post.resolves({ data: returnedFromService }); return service.create({}).then(res => { expect(res).toMatchObject(expected); }); }); it('should not create a Liberatoria', async () => { axiosStub.post.rejects(error); return service .create({}) .then() .catch(err => { expect(err).toMatchObject(error); }); }); it('should update a Liberatoria', async () => { const returnedFromService = { accettata: dayjs(currentDate).format(DATE_TIME_FORMAT), ...elemDefault }; const expected = { accettata: currentDate, ...returnedFromService }; axiosStub.put.resolves({ data: returnedFromService }); return service.update(expected).then(res => { expect(res).toMatchObject(expected); }); }); it('should not update a Liberatoria', async () => { axiosStub.put.rejects(error); return service .update({}) .then() .catch(err => { expect(err).toMatchObject(error); }); }); it('should partial update a Liberatoria', async () => { const patchObject = { accettata: dayjs(currentDate).format(DATE_TIME_FORMAT), ...new Liberatoria() }; const returnedFromService = Object.assign(patchObject, elemDefault); const expected = { accettata: currentDate, ...returnedFromService }; axiosStub.patch.resolves({ data: returnedFromService }); return service.partialUpdate(patchObject).then(res => { expect(res).toMatchObject(expected); }); }); it('should not partial update a Liberatoria', async () => { axiosStub.patch.rejects(error); return service .partialUpdate({}) .then() .catch(err => { expect(err).toMatchObject(error); }); }); it('should return a list of Liberatoria', async () => { const returnedFromService = { accettata: dayjs(currentDate).format(DATE_TIME_FORMAT), ...elemDefault }; const expected = { accettata: currentDate, ...returnedFromService }; axiosStub.get.resolves([returnedFromService]); return service.retrieve().then(res => { expect(res).toContainEqual(expected); }); }); it('should not return a list of Liberatoria', async () => { axiosStub.get.rejects(error); return service .retrieve() .then() .catch(err => { expect(err).toMatchObject(error); }); }); it('should delete a Liberatoria', async () => { axiosStub.delete.resolves({ ok: true }); return service.delete(123).then(res => { expect(res.ok).toBeTruthy(); }); }); it('should not delete a Liberatoria', async () => { axiosStub.delete.rejects(error); return service .delete(123) .then() .catch(err => { expect(err).toMatchObject(error); }); }); }); }); });