8524-devToTest #3415
|
@ -22,14 +22,16 @@ describe('Ticket transferClient()', () => {
|
||||||
it('should throw an error as the ticket is not editable', async() => {
|
it('should throw an error as the ticket is not editable', async() => {
|
||||||
try {
|
try {
|
||||||
const ticketId = 4;
|
const ticketId = 4;
|
||||||
await models.Ticket.transferClient(ctx, ticketId, clientId, options);
|
const addressFk = null;
|
||||||
|
await models.Ticket.transferClient(ctx, ticketId, clientId, addressFk, options);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
expect(e.message).toEqual('This ticket is locked');
|
expect(e.message).toEqual('This ticket is locked');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be assigned a different clientFk and nickname in the original ticket', async() => {
|
it('should be assigned a different clientFk and nickname in the original ticket', async() => {
|
||||||
await models.Ticket.transferClient(ctx, 2, clientId, options);
|
const addressFk = null;
|
||||||
|
await models.Ticket.transferClient(ctx, 2, clientId, addressFk, options);
|
||||||
const afterTransfer = await models.Ticket.findById(2, null, options);
|
const afterTransfer = await models.Ticket.findById(2, null, options);
|
||||||
const client = await models.Client.findById(clientId, {fields: ['defaultAddressFk']}, options);
|
const client = await models.Client.findById(clientId, {fields: ['defaultAddressFk']}, options);
|
||||||
const address = await models.Address.findById(client.defaultAddressFk, {fields: ['nickname']}, options);
|
const address = await models.Address.findById(client.defaultAddressFk, {fields: ['nickname']}, options);
|
||||||
|
@ -39,7 +41,8 @@ describe('Ticket transferClient()', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should be assigned a different clientFk and nickname in the original and refund ticket and claim', async() => {
|
it('should be assigned a different clientFk and nickname in the original and refund ticket and claim', async() => {
|
||||||
await models.Ticket.transferClient(ctx, originalTicketId, clientId, options);
|
const addressFk = null;
|
||||||
|
await models.Ticket.transferClient(ctx, originalTicketId, clientId, addressFk, options);
|
||||||
|
|
||||||
const [originalTicket, refundTicket] = await models.Ticket.find({
|
const [originalTicket, refundTicket] = await models.Ticket.find({
|
||||||
where: {id: {inq: [originalTicketId, refundTicketId]}}
|
where: {id: {inq: [originalTicketId, refundTicketId]}}
|
||||||
|
@ -59,4 +62,39 @@ describe('Ticket transferClient()', () => {
|
||||||
expect(originalTicket.nickname).toEqual(address.nickname);
|
expect(originalTicket.nickname).toEqual(address.nickname);
|
||||||
expect(refundTicket.nickname).toEqual(address.nickname);
|
expect(refundTicket.nickname).toEqual(address.nickname);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should be assigned a different addressFk and nickname in the original and refund ticket', async() => {
|
||||||
|
const addressFk = 131;
|
||||||
|
await models.Ticket.transferClient(ctx, originalTicketId, clientId, addressFk, options);
|
||||||
|
|
||||||
|
const [originalTicket, refundTicket] = await models.Ticket.find({
|
||||||
|
where: {id: {inq: [originalTicketId, refundTicketId]}}
|
||||||
|
}, options);
|
||||||
|
|
||||||
|
const claim = await models.Claim.findOne({
|
||||||
|
where: {ticketFk: originalTicketId}
|
||||||
|
}, options);
|
||||||
|
|
||||||
|
const address = await models.Address.findById(addressFk, {fields: ['id', 'nickname', 'clientFk']}, options);
|
||||||
|
|
||||||
|
expect(originalTicket.clientFk).toEqual(clientId);
|
||||||
|
expect(originalTicket.clientFk).toEqual(address.clientFk);
|
||||||
|
expect(refundTicket.clientFk).toEqual(clientId);
|
||||||
|
expect(refundTicket.clientFk).toEqual(address.clientFk);
|
||||||
|
expect(claim.clientFk).toEqual(clientId);
|
||||||
|
expect(claim.clientFk).toEqual(address.clientFk);
|
||||||
|
|
||||||
|
expect(originalTicket.nickname).toEqual(address.nickname);
|
||||||
|
expect(refundTicket.nickname).toEqual(address.nickname);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be thrown an error if the new address is not belong to the client', async() => {
|
||||||
|
const addressFk = 1;
|
||||||
|
try {
|
||||||
|
await models.Ticket.transferClient(ctx, originalTicketId, clientId, addressFk, options);
|
||||||
|
fail('Expected an error to be thrown, but none was thrown.');
|
||||||
|
} catch (e) {
|
||||||
|
expect(e.message).toEqual('The address does not belong to the client');
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const UserError = require('vn-loopback/util/user-error');
|
||||||
module.exports = Self => {
|
module.exports = Self => {
|
||||||
Self.remoteMethodCtx('transferClient', {
|
Self.remoteMethodCtx('transferClient', {
|
||||||
description: 'Transferring ticket to another client',
|
description: 'Transferring ticket to another client',
|
||||||
|
@ -12,6 +13,10 @@ module.exports = Self => {
|
||||||
arg: 'clientFk',
|
arg: 'clientFk',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
required: true,
|
required: true,
|
||||||
|
}, {
|
||||||
|
arg: 'addressFk',
|
||||||
|
type: 'number',
|
||||||
|
required: false,
|
||||||
}],
|
}],
|
||||||
http: {
|
http: {
|
||||||
path: `/:id/transferClient`,
|
path: `/:id/transferClient`,
|
||||||
|
@ -19,7 +24,7 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.transferClient = async(ctx, id, clientFk, options) => {
|
Self.transferClient = async(ctx, id, clientFk, addressFk, options) => {
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
const myOptions = {};
|
const myOptions = {};
|
||||||
let tx;
|
let tx;
|
||||||
|
@ -43,10 +48,12 @@ module.exports = Self => {
|
||||||
const client = await models.Client.findById(clientFk,
|
const client = await models.Client.findById(clientFk,
|
||||||
{fields: ['id', 'defaultAddressFk']}, myOptions);
|
{fields: ['id', 'defaultAddressFk']}, myOptions);
|
||||||
|
|
||||||
const address = await models.Address.findById(client.defaultAddressFk,
|
const address = await models.Address.findById(addressFk ? addressFk : client.defaultAddressFk,
|
||||||
{fields: ['id', 'nickname']}, myOptions);
|
{fields: ['id', 'nickname', 'clientFk']}, myOptions);
|
||||||
|
|
||||||
const attributes = {clientFk, addressFk: client.defaultAddressFk, nickname: address.nickname};
|
if (address.clientFk !== clientFk) throw new UserError('The address does not belong to the client');
|
||||||
|
|
||||||
|
const attributes = {clientFk, addressFk: address.id, nickname: address.nickname};
|
||||||
|
|
||||||
const tickets = [];
|
const tickets = [];
|
||||||
const ticketIds = [];
|
const ticketIds = [];
|
||||||
|
|
Loading…
Reference in New Issue