Completed
Push — master ( 2108a7...065ee0 )
by Mathieu
26s queued 12s
created

server/src/Application/HumanResource/Savings/Command/IncreaseUserSavingsRecordCommandHandler.spec.ts   A

Complexity

Total Complexity 1
Complexity/F 0

Size

Lines of Code 75
Function Count 0

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 59
mnd 1
bc 1
fnc 0
dl 0
loc 75
rs 10
bpm 0
cpm 0
noi 0
c 0
b 0
f 0
1
import { mock, instance, when, verify, deepEqual, anything } from 'ts-mockito';
2
import { User } from 'src/Domain/HumanResource/User/User.entity';
3
import { IncreaseUserSavingsRecordCommandHandler } from './IncreaseUserSavingsRecordCommandHandler';
4
import { IncreaseUserSavingsRecordCommand } from './IncreaseUserSavingsRecordCommand';
5
import { SavingsRecordType, UserSavingsRecord } from 'src/Domain/HumanResource/Savings/UserSavingsRecord.entity';
6
import { UserRepository } from 'src/Infrastructure/HumanResource/User/Repository/UserRepository';
7
import { UserSavingsRecordRepository } from 'src/Infrastructure/HumanResource/Savings/Repository/UserSavingsRecordRepository';
8
import { UserNotFoundException } from 'src/Domain/HumanResource/User/Exception/UserNotFoundException';
9
10
describe('IncreaseUserSavingsRecordCommandHandler', () => {
11
  let userRepository: UserRepository;
12
  let userSavingsRecordRepository: UserSavingsRecordRepository;
13
  let handler: IncreaseUserSavingsRecordCommandHandler;
14
15
  const command = new IncreaseUserSavingsRecordCommand(
16
    5000,
17
    'a58c5253-c097-4f44-b8c1-ccd45aab36e3',
18
  );
19
20
  beforeEach(() => {
21
    userRepository = mock(UserRepository);
22
    userSavingsRecordRepository = mock(UserSavingsRecordRepository);
23
24
    handler = new IncreaseUserSavingsRecordCommandHandler(
25
      instance(userRepository),
26
      instance(userSavingsRecordRepository),
27
    );
28
  });
29
30
  it('testUserNotFound', async () => {
31
    when(
32
      userRepository.findOneById('a58c5253-c097-4f44-b8c1-ccd45aab36e3')
33
    ).thenResolve(null);
34
35
    try {
36
      expect(await handler.execute(command)).toBeUndefined();
37
    } catch (e) {
38
      expect(e).toBeInstanceOf(UserNotFoundException);
39
      expect(e.message).toBe(
40
        'human_resources.users.errors.not_found'
41
      );
42
      verify(
43
        userRepository.findOneById('a58c5253-c097-4f44-b8c1-ccd45aab36e3')
44
      ).once();
45
      verify(userSavingsRecordRepository.save(anything())).never();
46
    }
47
  });
48
49
  it('testAddSuccessfully', async () => {
50
    const userSavingsRecord = mock(UserSavingsRecord);
51
    const user = mock(User);
52
53
    when(userSavingsRecord.getId()).thenReturn('5c97487c-7863-46a2-967d-79eb8c94ecb5');
54
    when(
55
      userRepository.findOneById('a58c5253-c097-4f44-b8c1-ccd45aab36e3')
56
    ).thenResolve(instance(user));
57
    when(
58
      userSavingsRecordRepository.save(
59
        deepEqual(new UserSavingsRecord(500000, SavingsRecordType.INPUT, instance(user)))
60
      )
61
    ).thenResolve(instance(userSavingsRecord));
62
63
    expect(await handler.execute(command)).toBe('5c97487c-7863-46a2-967d-79eb8c94ecb5');
64
65
    verify(
66
      userRepository.findOneById('a58c5253-c097-4f44-b8c1-ccd45aab36e3')
67
    ).once();
68
    verify(
69
      userSavingsRecordRepository.save(
70
        deepEqual(new UserSavingsRecord(500000, SavingsRecordType.INPUT, instance(user)))
71
      )
72
    ).once();
73
  });
74
});
75