All files / app/models/group group-notification-service.unit.spec.ts

94.74% Statements 18/19
100% Branches 0/0
66.67% Functions 2/3
94.74% Lines 18/19

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  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, match} from 'sinon';
import {CarColor} from '../car';
import GroupNotificationService, {
  GroupCarAction,
} from './group-notification-service';
 
describe('GroupNotificationService', function() {
  afterEach(function() {
    sinon.restore();
  });
 
  describe('notifyCarUpdate', function() {
    const nsp = {
      emit: sinon.stub(),
      use: sinon.stub(),
      on: sinon.stub(),
    };
    const io = {
      of: sinon.stub().returns(nsp),
    };
 
    GroupNotificationService.setIo(io as any);
 
    const groupId = 88;
    const carId = 4;
    const type = GroupCarAction.Drive;
    const car = {
      name: 'test',
      groupId,
      carId,
      color: CarColor.Blue,
    };
    GroupNotificationService.notifyCarUpdate(
        groupId,
        carId,
        type,
      car as any,
    );
 
    assert.calledWithExactly(io.of, /^\/group\/\w+/);
    assert.calledWithExactly(io.of, `/group/${groupId}`);
    assert.calledTwice(io.of);
    assert.calledOnceWithExactly(
        nsp.emit,
        'update',
        match({action: type, car}),
    );
  });
});