Created
June 13, 2018 08:52
-
-
Save psixdev/9d6a069ff001fbf26a249415e7575ced to your computer and use it in GitHub Desktop.
setbundle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const _ = require('underscore'); | |
const t = require('tap'); | |
const testHelpers = require('../helpers'); | |
const {reservationsResource, ticketsPoolsResource} = require('../../tickets'); | |
t.test('reservations api', async (t) => { | |
await testHelpers.initDb(); | |
await t.skip('get', async (t) => { | |
const {user, organization} = await testHelpers.createAdmin(); | |
const first = await testHelpers.createReservation(); | |
const second = await testHelpers.createReservation(); | |
const {total, reservations} = await testHelpers.apiRequest({ | |
method: 'get', | |
path: '/reservations', | |
query: {sort: '_id'}, | |
auth: user.auth, | |
organization | |
}); | |
t.is(total, 2, 'check total'); | |
t.same(reservations, [first, second], 'check reservations'); | |
await testHelpers.cleanDb(); | |
await testHelpers.cleanTicketsDb(); | |
}); | |
await t.skip('getOne', async (t) => { | |
const reservation = await testHelpers.createReservation(); | |
const result = await testHelpers.apiRequest({ | |
method: 'get', | |
path: `/reservations/${reservation.number}` | |
}); | |
t.same(result, {reservation}, 'check reservation'); | |
await testHelpers.cleanDb(); | |
await testHelpers.cleanTicketsDb(); | |
}); | |
await t.skip('create', async (t) => { | |
const {reservation} = await testHelpers.apiRequest({ | |
method: 'post', | |
path: '/reservations', | |
body: {} | |
}); | |
t.same( | |
reservation, | |
await reservationsResource.getOne(reservation.number), | |
'check reservation' | |
); | |
await testHelpers.cleanDb(); | |
await testHelpers.cleanTicketsDb(); | |
}); | |
await t.skip('expire', async (t) => { | |
const reservation = await testHelpers.createReservation(); | |
const response = await testHelpers.apiRequest({ | |
method: 'put', | |
path: '/reservations/expire', | |
body: { | |
number: reservation.number | |
} | |
}); | |
t.notOk(response, 'empty response'); | |
}); | |
await t.skip('set', async (t) => { | |
const organization = await testHelpers.createEntity('organizations'); | |
const user = await testHelpers.createUserWithOrganization(organization); | |
const place = await testHelpers.createEntity('places'); | |
const batch = await testHelpers.createTicketsBatch({ | |
type: 'place', | |
entity: { | |
type: 'place', | |
place: place._id | |
}, | |
user: user._id, | |
organization: organization._id | |
}); | |
const pool = await testHelpers.createTicketsPool({ | |
batch: batch._id, | |
status: 'available', | |
entity: { | |
type: 'place', | |
place: place._id | |
}, | |
prices: [{ | |
price: 10000, | |
rests: [{ | |
total: 10 | |
}] | |
}] | |
}); | |
const restId = pool.prices[0].rests[0]._id; | |
const reservation = await testHelpers.createReservation(); | |
const response = await testHelpers.apiRequest({ | |
method: 'put', | |
path: '/reservations/set', | |
body: { | |
number: reservation.number, | |
rest: restId, | |
count: 5 | |
} | |
}); | |
t.notOk(response, 'empty response'); | |
}); | |
await t.skip('unset', async (t) => { | |
const organization = await testHelpers.createEntity('organizations'); | |
const user = await testHelpers.createUserWithOrganization(organization); | |
const place = await testHelpers.createEntity('places'); | |
const batch = await testHelpers.createTicketsBatch({ | |
type: 'place', | |
entity: { | |
type: 'place', | |
place: place._id | |
}, | |
user: user._id, | |
organization: organization._id | |
}); | |
const pool = await testHelpers.createTicketsPool({ | |
batch: batch._id, | |
status: 'available', | |
entity: { | |
type: 'place', | |
place: place._id | |
}, | |
prices: [{ | |
price: 10000, | |
rests: [{ | |
total: 10 | |
}] | |
}] | |
}); | |
const restId = pool.prices[0].rests[0]._id; | |
const reservation = await testHelpers.createReservation(); | |
await reservationsResource.set(reservation.number, { | |
restId, | |
count: 2 | |
}); | |
const response = await testHelpers.apiRequest({ | |
method: 'put', | |
path: '/reservations/unset', | |
body: { | |
number: reservation.number, | |
rest: restId | |
} | |
}); | |
t.notOk(response, 'empty response'); | |
}); | |
async function createPool(type, user, organization) { | |
const entity = await testHelpers.createEntity(type + 's'); | |
const batch = await testHelpers.createTicketsBatch({ | |
type, | |
entity: { | |
type, | |
[type]: entity._id | |
}, | |
user: user._id, | |
organization: organization._id | |
}); | |
return testHelpers.createTicketsPool({ | |
batch: batch._id, | |
status: 'available', | |
entity: { | |
type, | |
[type]: entity._id | |
}, | |
prices: [{ | |
bundlePrice: 5000, | |
price: 10000, | |
rests: [{ | |
total: 5 | |
}] | |
}] | |
}); | |
} | |
await t.test('setbundle', async (t) => { | |
const organization = await testHelpers.createEntity('organizations'); | |
const user = await testHelpers.createUserWithOrganization(organization); | |
const platform = await testHelpers.createEntity('platforms'); | |
const event = await testHelpers.createEntity('events', { | |
user: user._id, | |
organization: organization._id | |
}); | |
const seance1 = await testHelpers.createEntity('seances', {event: event._id}); | |
const seance2 = await testHelpers.createEntity('seances', {event: event._id}); | |
const batch = await testHelpers.createTicketsBatch({ | |
user: user._id, | |
organization: organization._id, | |
type: 'seances', | |
entity: { | |
type: 'event', | |
event: event._id | |
} | |
}); | |
const seancePool1 = await testHelpers.createTicketsPool({ | |
entity: { | |
type: 'seance', | |
seance: seance1._id | |
}, | |
status: 'available', | |
user: user._id, | |
organization: organization._id, | |
batch: batch._id, | |
prices: [{ | |
bundlePrice: 5000, | |
price: 10000, | |
rests: [{ | |
total: 5 | |
}] | |
}] | |
}); | |
const seancePool2 = await testHelpers.createTicketsPool({ | |
entity: { | |
type: 'seance', | |
seance: seance2._id | |
}, | |
status: 'available', | |
user: user._id, | |
organization: organization._id, | |
batch: batch._id, | |
prices: [{ | |
bundlePrice: 5000, | |
price: 10000, | |
rests: [{ | |
total: 5 | |
}] | |
}] | |
}); | |
const articlePool = await createPool('article', user, organization); | |
const placePool = await createPool('place', user, organization); | |
console.log('initial values'); | |
console.error(_(articlePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
console.error(_(placePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
console.error(_(seancePool1.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
console.error(_(seancePool2.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const bundle = await testHelpers.createTicketsBundle({ | |
user: user._id, | |
organization: organization._id, | |
platforms: [platform._id], | |
ticketsPools: [ | |
{ticketsPool: placePool._id, count: 2}, | |
{ticketsPool: articlePool._id, count: 2}, | |
{ticketsPool: seancePool1._id, count: 2}, | |
{ticketsPool: seancePool2._id, count: 2} | |
] | |
}); | |
const reservation = await testHelpers.createReservation({bundle: bundle._id}); | |
{ | |
const response = await testHelpers.apiRequest({ | |
method: 'put', | |
path: '/reservations/setbundle', | |
body: { | |
number: reservation.number, | |
counters: [{ | |
rest: articlePool.prices[0].rests[0]._id, | |
count: 2 | |
}, { | |
rest: placePool.prices[0].rests[0]._id, | |
count: 2 | |
}, { | |
rest: seancePool1.prices[0].rests[0]._id, | |
count: 2 | |
}] | |
} | |
}); | |
t.notOk(response, 'empty response'); | |
console.log('first setbundle'); | |
const updatedReservation = await reservationsResource.getOne(reservation.number); | |
console.error(updatedReservation.counters); | |
const updatedArticlePool = await ticketsPoolsResource.getOne(articlePool._id); | |
console.error(_(updatedArticlePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedPlacePool = await ticketsPoolsResource.getOne(placePool._id); | |
console.error(_(updatedPlacePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedSeancePool1 = await ticketsPoolsResource.getOne(seancePool1._id); | |
console.error(_(updatedSeancePool1.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedSeancePool2 = await ticketsPoolsResource.getOne(seancePool2._id); | |
console.error(_(updatedSeancePool2.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
} | |
{ | |
const response = await testHelpers.apiRequest({ | |
method: 'put', | |
path: '/reservations/setbundle', | |
body: { | |
number: reservation.number, | |
counters: [{ | |
rest: articlePool.prices[0].rests[0]._id, | |
count: 2 | |
}, { | |
rest: placePool.prices[0].rests[0]._id, | |
count: 2 | |
}, { | |
rest: seancePool2.prices[0].rests[0]._id, | |
count: 2 | |
}] | |
} | |
}); | |
t.notOk(response, 'empty response'); | |
console.log('second setbundle'); | |
const updatedReservation = await reservationsResource.getOne(reservation.number); | |
console.error(updatedReservation.counters); | |
const updatedArticlePool = await ticketsPoolsResource.getOne(articlePool._id); | |
console.error(_(updatedArticlePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedPlacePool = await ticketsPoolsResource.getOne(placePool._id); | |
console.error(_(updatedPlacePool.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedSeancePool1 = await ticketsPoolsResource.getOne(seancePool1._id); | |
console.error(_(updatedSeancePool1.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
const updatedSeancePool2 = await ticketsPoolsResource.getOne(seancePool2._id); | |
console.error(_(updatedSeancePool2.prices[0].rests[0]).pick('total', 'available', 'reserved')); | |
} | |
}); | |
await testHelpers.destroyDb(); | |
await testHelpers.destroyTicketsDb(); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment