ref #5417 date filters added #1773
|
@ -1,15 +1,24 @@
|
||||||
const models = require('vn-loopback/server/server').models;
|
const models = require('vn-loopback/server/server').models;
|
||||||
|
|
||||||
describe('Client transactions', () => {
|
describe('Client transactions', () => {
|
||||||
|
const ctx = {};
|
||||||
|
|
||||||
it('should call transactions() method to receive a list of Web Payments from BRUCE WAYNE', async() => {
|
it('should call transactions() method to receive a list of Web Payments from BRUCE WAYNE', async() => {
|
||||||
const tx = await models.Client.beginTransaction({});
|
const tx = await models.Client.beginTransaction({});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ctx = {};
|
|
||||||
const filter = {where: {clientFk: 1101}};
|
const filter = {where: {clientFk: 1101}};
|
||||||
const result = await models.Client.transactions(ctx, filter, options);
|
const result = await models.Client.transactions(
|
||||||
|
ctx,
|
||||||
|
filter,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
expect(result[1].id).toBeTruthy();
|
expect(result[1].id).toBeTruthy();
|
||||||
|
|
||||||
|
@ -26,9 +35,17 @@ describe('Client transactions', () => {
|
||||||
try {
|
try {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ctx = {args: {orderFk: 6}};
|
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Client.transactions(ctx, filter, options);
|
const result = await models.Client.transactions(
|
||||||
|
ctx,
|
||||||
|
filter,
|
||||||
|
6,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
const firstRow = result[0];
|
const firstRow = result[0];
|
||||||
|
|
||||||
|
@ -47,10 +64,17 @@ describe('Client transactions', () => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const options = {transaction: tx};
|
const options = {transaction: tx};
|
||||||
|
|
||||||
const ctx = {args: {amount: 40}};
|
|
||||||
const filter = {};
|
const filter = {};
|
||||||
const result = await models.Client.transactions(ctx, filter, options);
|
const result = await models.Client.transactions(
|
||||||
|
ctx,
|
||||||
|
filter,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
jorgep marked this conversation as resolved
Outdated
|
|||||||
|
40,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
const randomIndex = Math.floor(Math.random() * result.length);
|
const randomIndex = Math.floor(Math.random() * result.length);
|
||||||
const transaction = result[randomIndex];
|
const transaction = result[randomIndex];
|
||||||
|
@ -63,4 +87,43 @@ describe('Client transactions', () => {
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should call transactions() method filtering by date', async() => {
|
||||||
|
const tx = await models.Client.beginTransaction({});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = {transaction: tx};
|
||||||
|
const filter = {};
|
||||||
|
const withResults = await models.Client.transactions(
|
||||||
|
ctx,
|
||||||
|
filter,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
'2000/12/31',
|
||||||
|
undefined,
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(withResults.length).toEqual(6);
|
||||||
|
|
||||||
|
const noResults = await models.Client.transactions(
|
||||||
|
ctx,
|
||||||
|
filter,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
'2099/12/31',
|
||||||
|
undefined,
|
||||||
|
options
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(noResults.length).toEqual(0);
|
||||||
|
|
||||||
|
await tx.rollback();
|
||||||
|
} catch (e) {
|
||||||
|
await tx.rollback();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,22 +12,26 @@ module.exports = Self => {
|
||||||
arg: 'filter',
|
arg: 'filter',
|
||||||
type: 'object',
|
type: 'object',
|
||||||
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
description: 'Filter defining where, order, offset, and limit - must be a JSON-encoded string',
|
||||||
http: {source: 'query'}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'orderFk',
|
arg: 'orderFk',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
http: {source: 'query'}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'clientFk',
|
arg: 'clientFk',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
http: {source: 'query'}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
arg: 'amount',
|
arg: 'amount',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
http: {source: 'query'}
|
},
|
||||||
|
{
|
||||||
|
arg: 'from',
|
||||||
|
type: 'date',
|
||||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
http: {source: 'query'} es el tipo por defecto? http: {source: 'query'} es el tipo por defecto?
jorgep
commented
No, pero en este caso los datos llegan así. No, pero en este caso los datos llegan así.
|
|||||||
|
},
|
||||||
|
{
|
||||||
|
arg: 'to',
|
||||||
|
type: 'date',
|
||||||
}
|
}
|
||||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
http: {source: 'query'} es el tipo por defecto? http: {source: 'query'} es el tipo por defecto?
|
|||||||
],
|
],
|
||||||
returns: {
|
returns: {
|
||||||
|
@ -40,14 +44,15 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.transactions = async(ctx, filter, options) => {
|
Self.transactions = async(ctx, filter, orderFk, clientFk, amount, from, to, options) => {
|
||||||
const args = ctx.args;
|
|
||||||
const myOptions = {};
|
const myOptions = {};
|
||||||
|
|
||||||
if (typeof options == 'object')
|
if (typeof options == 'object')
|
||||||
Object.assign(myOptions, options);
|
Object.assign(myOptions, options);
|
||||||
|
|
||||||
const where = buildFilter(args, (param, value) => {
|
if (to) to.setHours(23, 59, 59, 999);
|
||||||
|
|
||||||
|
const where = buildFilter({orderFk, clientFk, amount, from, to}, (param, value) => {
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case 'orderFk':
|
case 'orderFk':
|
||||||
return {'t.id': value};
|
return {'t.id': value};
|
||||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
Parlarem en una reunio de salix, que no debiem gastar ctx.args. Si no definir dalt els parametros Parlarem en una reunio de salix, que no debiem gastar ctx.args. Si no definir dalt els parametros
https://docs.google.com/document/d/1vjyL64Rqi40kLxEpB9nISU_r3cndQfp3NdsnlPagzv4/edit
(el punt 2)
|
|||||||
|
@ -55,6 +60,10 @@ module.exports = Self => {
|
||||||
return {'t.clientFk': value};
|
return {'t.clientFk': value};
|
||||||
case 'amount':
|
case 'amount':
|
||||||
return {'t.amount': (value * 100)};
|
return {'t.amount': (value * 100)};
|
||||||
jorgep marked this conversation as resolved
Outdated
alexm
commented
.setHours(23, 59, 59, 999); .setHours(23, 59, 59, 999);
|
|||||||
|
case 'from':
|
||||||
|
return {'t.created': {gte: value}};
|
||||||
|
case 'to':
|
||||||
|
return {'t.created': {lte: value}};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
I aci no te falla? args
Sí, lo acabo de arreglar.