Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.5 kB
2
Indexable
Never
  describe('Quando o produto é atualizado com sucesso', function () {
    it('Retorna o produto atualizado', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub().returnsThis(),
      };
      const req = {
        params: {
          id: 1,
        },
        body: {
          name: 'Bombril de ouro',
        },
      };
      const stub = sinon.stub(productsService, 'updateProductName').resolves(MOCK_UPDATE_OUTPUT);
      await productsController.updateProductName(req, res);

      expect(res.status).to.have.been.calledWith(200);
      stub.restore();
    });
  });

  describe('Quando o produto não é atualizado com sucesso', function () {
    it('Sem nome', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub(),
      };
      const req = {
        params: {
          id: 1,
        },
        body: {},
      };
      const stub = sinon.stub(productsService, 'updateProductName').resolves(null);
      await productsController.updateProductName(req, res);

      expect(res.status).to.have.been.calledWith(400);
      expect(res.json).to.have.been.calledWith({ message: '"name" is required' });
      stub.restore();
    });

    it('Nome com menos de 5 caracteres', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub(),
      };
      const req = {
        params: {
          id: 1,
        },
        body: {
          name: 'hjkl',
        },
      };
      const stub = sinon.stub(productsService, 'updateProductName').resolves(null);
      await productsController.updateProductName(req, res);

      expect(res.status).to.have.been.calledWith(422);
      expect(res.json).to.have.been.calledWith({ message: '"name" length must be at least 5 characters long' });
      stub.restore();
    });

    it('Produto não encontrado', async function () {
      const res = {
        status: sinon.stub().returnsThis(),
        json: sinon.stub(),
      };
      const req = {
        params: {
          id: 1,
        },
        body: {
          name: 'Bombril de ouro',
        },
      };
      const stub = sinon.stub(productsService, 'updateProductName').resolves({ message: 'Product not found' });
      await productsController.updateProductName(req, res);

      expect(res.status).to.have.been.calledWith(200);
      expect(res.json).to.have.been.calledWith({ message: 'Product not found' });
      stub.restore();
    });
  });
Leave a Comment