Passed
Pull Request — master (#75)
by Mathieu
01:18
created

server/src/Application/FairCalendar/Query/GetEventByIdQueryHandler.spec.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 74
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 61
mnd 1
bc 1
fnc 0
dl 0
loc 74
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
rs 10
1
import {mock, instance, when, verify} from 'ts-mockito';
2
import {EventRepository} from 'src/Infrastructure/FairCalendar/Repository/EventRepository';
3
import {Event} from 'src/Domain/FairCalendar/Event.entity';
4
import {EventView} from 'src/Application/FairCalendar/View/EventView';
5
import {GetEventByIdQueryHandler} from './GetEventByIdQueryHandler';
6
import {GetEventByIdQuery} from './GetEventByIdQuery';
7
import {EventNotFoundException} from 'src/Domain/FairCalendar/Exception/EventNotFoundException';
8
import {Task} from 'src/Domain/Task/Task.entity';
9
import {Project} from 'src/Domain/Project/Project.entity';
10
11
describe('GetEventByIdQueryHandler', () => {
12
  const query = new GetEventByIdQuery('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2');
13
14
  it('testGetEvent', async () => {
15
    const eventRepository = mock(EventRepository);
16
    const queryHandler = new GetEventByIdQueryHandler(
17
      instance(eventRepository)
18
    );
19
    const expectedResult = new EventView(
20
      'eb9e1d9b-dce2-48a9-b64f-f0872f3157d2',
21
      '[Development] RadioFrance',
22
      'mission',
23
      0.75,
24
      '2019-12-12',
25
      'Summary'
26
    );
27
28
    const task = mock(Task);
29
    const project = mock(Project);
30
31
    when(project.getName()).thenReturn('RadioFrance');
32
    when(task.getName()).thenReturn('Development');
33
34
    const event1 = mock(Event);
35
    when(event1.getId()).thenReturn('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2');
36
    when(event1.getType()).thenReturn('mission');
37
    when(event1.getTime()).thenReturn(75);
38
    when(event1.getDate()).thenReturn('2019-12-12');
39
    when(event1.getSummary()).thenReturn('Summary');
40
    when(event1.getTask()).thenReturn(instance(task));
41
    when(event1.getProject()).thenReturn(instance(project));
42
43
    when(
44
      eventRepository.findOneById('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2')
45
    ).thenResolve(instance(event1));
46
47
    expect(await queryHandler.execute(query)).toMatchObject(expectedResult);
48
49
    verify(
50
      eventRepository.findOneById('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2')
51
    ).once();
52
  });
53
54
  it('testGetEventNotFound', async () => {
55
    const eventRepository = mock(EventRepository);
56
    const queryHandler = new GetEventByIdQueryHandler(
57
      instance(eventRepository)
58
    );
59
    when(
60
      eventRepository.findOneById('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2')
61
    ).thenResolve(null);
62
63
    try {
64
      await queryHandler.execute(query);
65
    } catch (e) {
66
      expect(e).toBeInstanceOf(EventNotFoundException);
67
      expect(e.message).toBe('fair_calendar.errors.event_not_found');
68
      verify(
69
        eventRepository.findOneById('eb9e1d9b-dce2-48a9-b64f-f0872f3157d2')
70
      ).once();
71
    }
72
  });
73
});
74