src/Application/Task/Command/CreateTaskCommandHandler.spec.ts   A
last analyzed

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 61
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 51
mnd 1
bc 1
fnc 0
dl 0
loc 61
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
1
import { mock, instance, when, verify, deepEqual } from 'ts-mockito';
2
import { TaskRepository } from 'src/Infrastructure/Task/Repository/TaskRepository';
3
import { IsTaskAlreadyExist } from 'src/Domain/Task/Specification/IsTaskAlreadyExist';
4
import { CreateTaskCommandHandler } from 'src/Application/Task/Command/CreateTaskCommandHandler';
5
import { CreateTaskCommand } from 'src/Application/Task/Command/CreateTaskCommand';
6
import { Task } from 'src/Domain/Task/Task.entity';
7
import { TaskAlreadyExistException } from 'src/Domain/Task/Exception/TaskAlreadyExistException';
8
9
describe('CreateTaskCommandHandler', () => {
10
  let taskRepository: TaskRepository;
11
  let isTaskAlreadyExist: IsTaskAlreadyExist;
12
  let createdTask: Task;
13
  let handler: CreateTaskCommandHandler;
14
15
  const command = new CreateTaskCommand('Development');
16
17
  beforeEach(() => {
18
    taskRepository = mock(TaskRepository);
19
    isTaskAlreadyExist = mock(IsTaskAlreadyExist);
20
    createdTask = mock(Task);
21
22
    handler = new CreateTaskCommandHandler(
23
      instance(taskRepository),
24
      instance(isTaskAlreadyExist)
25
    );
26
  });
27
28
  it('testTaskCreatedSuccessfully', async () => {
29
    when(isTaskAlreadyExist.isSatisfiedBy('Development')).thenResolve(false);
30
    when(createdTask.getId()).thenReturn(
31
      '1e5fb4da-12c2-11ea-8d71-362b9e155667'
32
    );
33
34
    when(taskRepository.save(deepEqual(new Task('Development')))).thenResolve(
35
      instance(createdTask)
36
    );
37
38
    expect(await handler.execute(command)).toBe(
39
      '1e5fb4da-12c2-11ea-8d71-362b9e155667'
40
    );
41
42
    verify(isTaskAlreadyExist.isSatisfiedBy('Development')).once();
43
    verify(taskRepository.save(deepEqual(new Task('Development')))).once();
44
    verify(createdTask.getId()).once();
45
  });
46
47
  it('testTaskAlreadyExist', async () => {
48
    when(isTaskAlreadyExist.isSatisfiedBy('Development')).thenResolve(true);
49
50
    try {
51
      await handler.execute(command);
52
    } catch (e) {
53
      expect(e).toBeInstanceOf(TaskAlreadyExistException);
54
      expect(e.message).toBe('accounting.tasks.errors.already_exist');
55
      verify(isTaskAlreadyExist.isSatisfiedBy('Development')).once();
56
      verify(taskRepository.save(deepEqual(new Task('Development')))).never();
57
      verify(createdTask.getId()).never();
58
    }
59
  });
60
});
61