Я не могу понять, как написать тестовый пример для необработанного запроса в sequelizejs, используя Sequelize Mock.
Моя функция, которая возвращает объект-купон в случае успеха с состоянием 200
try {
const domain = req.params.domain;
const domainFilter = { domain: { [Op.eq]: req.params.domain } };
const merchant = await models.merchants.findOne({ where: domainFilter });
if (merchant) {
const coupons = await models.sequelize.query(`SELECT * FROM coupons LEFT JOIN coupon_activities ON coupons.coupon=coupon_activities.coupon WHERE coupons.domain='${domain}' ORDER BY coupon_activities.best_discount DESC, coupon_activities.worked DESC, coupons.expire_date DESC LIMIT 50`, { type: sequelize.QueryTypes.SELECT });
if (coupons && coupons.length > 0) {
const keys = [...new Set(coupons[0].map(el => el.coupon))]
const filteredCoupons = coupons[0].filter(el => {
if (keys.indexOf(el.coupon) !== -1) {
keys.splice(keys.indexOf(el.coupon), 1)
return true;
} else {
return false;
}
});
res.status(200).send({ coupons: filteredCoupons });
} else {
res.status(204).send({ response: "No Coupons" });
}
} else {
res.status(204).send({ response: "No Content" });
}
} catch (err) {
console.log(err);
res.status(500).send({ response: "Error in server" });
}
Тестовый пример для функции
describe('Get Coupons By Merchand Id', () => {
it('It got all coupons of a merchant', (done) => {
const merchant_id = 1;
chai.request(server)
.get('/api/coupons/' + merchant_id)
.end((err, res) => {
res.should.have.status(200);
res.body.should.be.a('object');
res.body.should.not.have.property('errors');
res.body.coupons.length.should.not.equal(0);
res.body.coupons[0].merchant_id.should.be.equal(merchant_id);
done();
});
});
});
Мок у меня есть настройки
'use strict';
const dbMock = require('./sequelize_mock');
const Op = dbMock.Op;
let SequelizeMock = dbMock.define("sequelize", {
merchant_id: 1,
domain: 'amazon.com',
coupon: 'TESTCOUPON',
description: 'This is a test',
expiry_date: '12-12-9999',
}, {
indexes: [{ fields: ['merchant_id'] }],
createdAt: false,
updatedAt: false,
id: false,
tableName: 'coupons',
});
SequelizeMock.$queryInterface.$useHandler(function(query, queryOptions, done) {
console.log('TCL: query', query)
console.log('TCL: queryOptions', queryOptions)
});
module.exports = SequelizeMock;
Но это не работает, даваяme error может кто-нибудь помочь мне правильно настроить этот макет, чтобы я мог отправлять обратно данные, основанные на запросе или что-то, что работает.
В настоящее время получение ошибки sequelize не определено