87 lines
2.9 KiB
JavaScript
87 lines
2.9 KiB
JavaScript
const app = require('vn-loopback/server/server');
|
|
const LoopBackContext = require('loopback-context');
|
|
|
|
describe('zone deletezone()', () => {
|
|
const userId = 9;
|
|
const activeCtx = {
|
|
accessToken: {userId: userId},
|
|
};
|
|
const ctx = {req: activeCtx};
|
|
let zoneId = 9;
|
|
let originalZone;
|
|
let originalZoneWarehouses;
|
|
let originalTickets;
|
|
let ticketIDs;
|
|
let originalZoneIncluded;
|
|
let originalTicketStates;
|
|
let originalRoutes;
|
|
|
|
beforeAll(async done => {
|
|
spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({
|
|
active: activeCtx
|
|
});
|
|
try {
|
|
originalZone = await app.models.Zone.findById(zoneId);
|
|
originalZoneWarehouses = await app.models.ZoneWarehouse.findById(zoneId);
|
|
originalTickets = await app.models.Ticket.find({
|
|
where: {
|
|
zoneFk: zoneId
|
|
}
|
|
});
|
|
originalRoutes = await app.models.Route.find({where: {zoneFk: zoneId}});
|
|
ticketIDs = originalTickets.map(ticket => ticket.id);
|
|
originalZoneIncluded = await app.models.ZoneIncluded.find({where: {zoneFk: zoneId}});
|
|
originalTicketStates = await app.models.TicketState.find({where: {
|
|
ticketFk: {inq: ticketIDs},
|
|
code: 'FIXING'}});
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
afterAll(async done => {
|
|
try {
|
|
await originalZone.save();
|
|
await app.models.ZoneWarehouse.create(originalZoneWarehouses);
|
|
|
|
for (route of originalRoutes)
|
|
await route.updateAttributes({zoneFk: zoneId});
|
|
|
|
for (ticket of originalTickets)
|
|
await ticket.updateAttributes({zoneFk: zoneId});
|
|
|
|
for (zoneIncluded of originalZoneIncluded)
|
|
await zoneIncluded.save();
|
|
|
|
const fixingStateId = 1;
|
|
const trackings = await app.models.TicketTracking.find({where: {
|
|
ticketFk: {inq: ticketIDs},
|
|
stateFk: fixingStateId}});
|
|
|
|
for (let tracking of trackings)
|
|
await app.models.TicketTracking.destroyById(tracking.id);
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
|
|
done();
|
|
});
|
|
|
|
it('should delete a zone and update their tickets', async() => {
|
|
await app.models.Zone.deleteZone(ctx, zoneId);
|
|
|
|
const updatedZone = await app.models.Zone.findById(zoneId);
|
|
const anUpdatedTicket = await app.models.Ticket.findById(ticketIDs[0]);
|
|
|
|
const updatedTicketStates = await app.models.TicketState.find({where: {
|
|
ticketFk: {inq: ticketIDs},
|
|
code: 'FIXING'}});
|
|
|
|
expect(updatedZone).toBeNull();
|
|
expect(anUpdatedTicket.zoneFk).toBeNull();
|
|
expect(updatedTicketStates.length).toBeGreaterThan(originalTicketStates.length);
|
|
});
|
|
});
|