Untitled

 avatar
unknown
plain_text
a year ago
1.9 kB
4
Indexable
const chai = require('chai');
const sinon = require('sinon');
const sinonChai = require('sinon-chai');
const chaiHTTP = require('chai-http');

const { SERVICES_MOCK, UNIQUE_PRODUCT_MOCK, NOT_FOUND_MOCK } = require('../mocks/product.mock');

const { expect } = chai;
chai.use(sinonChai);
chai.use(chaiHTTP);

const serviceForProducts = require('../../../src/services/product.services');
const controllerForProducts = require('../../../src/controllers/products');

describe('Model for products', function () {
  afterEach(function () {
    sinon.restore();
  });
  it('should return all products', async function () {
    const req = { params: { id: 1 } };
    const res = { status: sinon.stub().returnsThis(), json: sinon.stub().returnsThis() };
    const getAllProductsFromDatabase = sinon.stub(serviceForProducts, 'getAllDatabase').resolves(SERVICES_MOCK);
    await controllerForProducts.getControllerByProducts(req, res);
    expect(res.status).to.be.calledWith(200);

    getAllProductsFromDatabase.restore();
  });

  it('should return a product by id', async function () {
    const req = { params: { id: 1 } };
    const res = { status: sinon.stub().returnsThis(), json: sinon.stub().returnsThis() };
    const getAllProductsById = sinon.stub(serviceForProducts, 'getAllById').resolves(UNIQUE_PRODUCT_MOCK);
    await controllerForProducts.getControllerById(req, res);
    expect(res.status).to.be.calledWith(200);

    getAllProductsById.restore();
  });
  
  it('should return a error message', async function () {
    const req = { params: { id: 1 } };
    const res = { status: sinon.stub().returnsThis(), json: sinon.stub().returnsThis() };
    const getAllProductsById = sinon.stub(serviceForProducts, 'getAllById').resolves(NOT_FOUND_MOCK);
    await controllerForProducts.getControllerById(req, res);
    expect(res.status).to.be.calledWith(200);
    
    getAllProductsById.restore();
  });
});
Editor is loading...
Leave a Comment