Как написать тестовый пример для необработанного запроса Sequelize.js в Sequelize Mock в Node.js - PullRequest
0 голосов
/ 15 марта 2019

Я не могу понять, как написать тестовый пример для необработанного запроса в 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 не определено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...