У меня есть функция, которая на основе сервисов выбирает их время и суммирует его. Службы должны быть сначала извлечены из базы данных mongoDb, поэтому я написал функцию, которая является async
функцией, которая извлекает время из служб
const getTotalVisitsTime = async (services) => {
let totalVisitTime = 0
const foundServices = await require('../visitType').find({ _id: { $in: services } })
if (foundServices) {
return new Promise((resolve, reject) => {
if (foundServices.length === 0) {
reject('No services for given id(s) found in database')
} else {
for (var i = 0; i < foundServices.length; i++) {
totalVisitTime += parseInt(foundServices[i].time)
}
resolve(totalVisitTime)
}
})
} else {
throw Error('Problem with querying services ocurred. Check id(s)')
}
}
Использование:
module.exports.getAvailableVisitTimesByDate = async (hairdresserId, date, services, salonData) => {
return getAvailableVisitTimesArray(await getVisitsForGivenDay(hairdresserId, date),
salonData,
await getTotalVisitsTime(services).catch(err => { console.log(err) }))
}
При тестировании через Postman он выбирает все необходимые данные, но я хотел проверить это с chakram
. В тестовом случае, к сожалению, он не выбирает время, что приводит к пустому массиву в тесте.
Тестовый случай:
it('should return array of available visit times for certain hairdresser, 1 hour-long visit and certain day (10-03-2019)', () => {
return chakram.get(url, requestBody, { headers: { 'content-type': 'application/json' } })
.then(response => {
expect(response).to.have.status(201)
console.log(response.body)
//expect(response.body['freeVisitTimes']).to.eql(expectedArrayOfTimes)
})
})
При тестировании регистрируется, что getTotalVisitsTime
равно undefined
, в то время как выполнение запроса через Почтальон приводит к целому числу, которое описывает время. Что не так с моим кодом?