All files / app/routes/api/group/group-id/delete delete-group-controller.unit.spec.ts

100% Statements 43/43
100% Branches 0/0
100% Functions 8/8
100% Lines 43/43

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105  1x 1x 1x 1x     1x   1x           1x 4x       4x 4x     1x 4x     1x 1x 1x           1x     1x 1x 1x 1x     1x 1x             1x     1x 1x 1x 1x     1x 1x                 1x     1x 1x 1x 1x       1x   1x     1x 1x             1x     1x 1x 1x 1x      
/* eslint-disable @typescript-eslint/no-explicit-any */
import sinon, {assert} from 'sinon';
import deleteGroupController from './delete-group-controller';
import {expect} from 'chai';
import {
  BadRequestError,
} from '../../../../../errors';
import {GroupService} from '../../../../../models';
 
describe('DeleteGroupController', function() {
  let req: any;
  let res: any;
  let next: any;
  let deleteStub: sinon.SinonStub;
 
  beforeEach(function() {
    res = {
      status: sinon.stub().returnsThis(),
      send: sinon.stub(),
    };
    next = sinon.stub();
    deleteStub = sinon.stub(GroupService, 'delete');
  });
 
  afterEach(function() {
    sinon.restore();
  });
 
  describe('throws BadRequestError if', function() {
    it('if user is missing on request', async function() {
      req = {
        params: {
          groupId: 1,
        },
      };
 
      await expect(deleteGroupController(req, res, next))
          .to.eventually.to.be.rejectedWith(BadRequestError);
 
      assert.notCalled(deleteStub);
      assert.notCalled(next);
      assert.notCalled(res.status);
      assert.notCalled(res.send);
    });
 
    it('if groupId is missing on request', async function() {
      req = {
        user: {
          id: 1,
        },
        params: {},
      };
 
      await expect(deleteGroupController(req, res, next))
          .to.eventually.to.be.rejectedWith(BadRequestError);
 
      assert.notCalled(deleteStub);
      assert.notCalled(next);
      assert.notCalled(res.status);
      assert.notCalled(res.send);
    });
 
    it('if groupId is not numeric', async function() {
      req = {
        user: {
          id: 1,
        },
        params: {
          groupId: 'NOT_A_NUMBER',
        },
      };
 
      await expect(deleteGroupController(req, res, next))
          .to.eventually.to.be.rejectedWith(BadRequestError);
 
      assert.notCalled(deleteStub);
      assert.notCalled(next);
      assert.notCalled(res.status);
      assert.notCalled(res.send);
    });
  });
 
  it('calls GroupService.delete with correct parameters and sends' +
    'with status code 204', async function() {
    const user = {
      id: 6,
    };
    const groupId = 66;
    req = {
      user,
      params: {
        groupId,
      },
    };
 
    await expect(deleteGroupController(req, res, next))
        .to.eventually.be.fulfilled;
 
    assert.calledOnceWithExactly(deleteStub, user, groupId);
    assert.calledOnceWithExactly(res.status, 204);
    assert.calledOnceWithExactly(res.send);
    assert.notCalled(next);
  });
});