Untitled

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

const { expect } = chai;
const salesServices = require('../../../src/services/sales.services');
const salesController = require('../../../src/controllers/sales.controller');
const { SALES_MOCK, SALES_MOCK_NOTFOUND, SINGLE_SALE_MOCK } = require('../mocks/SALES_MOCKS');

chai.use(chaiHttp);
chai.use(sinonChai);

describe('Tests /models/sales.controller', function () {
  afterEach(function () {
    sinon.restore();
  });

  describe('When sales/sale exists', function () {
    it('Returns all the sales from the table SALES as an array', async function () {
      const req = {
        params: {
          id: 1,
        },
      };
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub().returnsThis(),
      };
      const stub = sinon.stub(salesServices, 'getSales').resolves(SALES_MOCK);
      await salesController.getAllSales(req, res);
      expect(res.status).to.have.been.calledWith(200);
      stub.restore();
    });
  
    it('Returns a single sale when the ID is found in the table SALES', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub().returnsThis(),
      };
      const req = {
        params:
        {
          id: 1,
        },
      };
      const stub = sinon.stub(salesServices, 'getSaleId').resolves(SINGLE_SALE_MOCK);
      await salesController.getSaleByID(req, res);
      expect(res.status).to.have.been.calledWith(200);
  
      stub.restore();
    });
  });

  describe('When sales/sale DOES NOT exists', function () {
    it('Returns "Sale not found" if an sale does not exist in the table SALES', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub().returnsThis(),
      };
      const req = {
        params:
        {
          id: 1,
        },
      };
      const stub = sinon.stub(salesServices, 'getSaleId').resolves(SALES_MOCK_NOTFOUND);
      await salesController.getSaleByID(req, res);
  
      expect(res.status).to.have.been.calledWith(200);
      stub.restore();
    });
  });
});
Editor is loading...
Leave a Comment