1
|
|
|
import { mock, instance, when, verify, anything } from 'ts-mockito'; |
2
|
|
|
import { SchoolUserRepository } from 'src/Infrastructure/School/Repository/SchoolUserRepository'; |
3
|
|
|
import { SchoolUser } from 'src/Domain/School/SchoolUser.entity'; |
4
|
|
|
import { RemoveSchoolUserCommandHandler } from './RemoveSchoolUserCommandHandler'; |
5
|
|
|
import { RemoveSchoolUserCommand } from './RemoveSchoolUserCommand'; |
6
|
|
|
import { SchoolUserNotFoundException } from 'src/Domain/School/Exception/SchoolUserNotFoundException'; |
7
|
|
|
|
8
|
|
|
describe('RemoveSchoolUserCommandHandler', () => { |
9
|
|
|
let schooluserRepository: SchoolUserRepository; |
10
|
|
|
let removedSchoolUser: SchoolUser; |
11
|
|
|
let handler: RemoveSchoolUserCommandHandler; |
12
|
|
|
|
13
|
|
|
const command = new RemoveSchoolUserCommand('17efcbee-bd2f-410e-9e99-51684b592bad'); |
14
|
|
|
|
15
|
|
|
beforeEach(() => { |
16
|
|
|
schooluserRepository = mock(SchoolUserRepository); |
17
|
|
|
removedSchoolUser = mock(SchoolUser); |
18
|
|
|
|
19
|
|
|
handler = new RemoveSchoolUserCommandHandler( |
20
|
|
|
instance(schooluserRepository) |
21
|
|
|
); |
22
|
|
|
}); |
23
|
|
|
|
24
|
|
|
it('testSchoolUserRemovedSuccessfully', async () => { |
25
|
|
|
when(schooluserRepository.findOneById('17efcbee-bd2f-410e-9e99-51684b592bad')) |
26
|
|
|
.thenResolve(instance(removedSchoolUser)); |
27
|
|
|
|
28
|
|
|
await handler.execute(command); |
29
|
|
|
|
30
|
|
|
verify( |
31
|
|
|
schooluserRepository.remove(instance(removedSchoolUser)) |
32
|
|
|
).once(); |
33
|
|
|
verify(schooluserRepository.findOneById('17efcbee-bd2f-410e-9e99-51684b592bad')).once(); |
34
|
|
|
}); |
35
|
|
|
|
36
|
|
|
it('testSchoolUserNotFound', async () => { |
37
|
|
|
when(schooluserRepository.findOneById('17efcbee-bd2f-410e-9e99-51684b592bad')) |
38
|
|
|
.thenResolve(null); |
39
|
|
|
|
40
|
|
|
try { |
41
|
|
|
expect(await handler.execute(command)).toBeUndefined(); |
42
|
|
|
} catch (e) { |
43
|
|
|
expect(e).toBeInstanceOf(SchoolUserNotFoundException); |
44
|
|
|
expect(e.message).toBe('schools.users.errors.school_user_not_found'); |
45
|
|
|
verify(schooluserRepository.findOneById('17efcbee-bd2f-410e-9e99-51684b592bad')).once(); |
46
|
|
|
verify(schooluserRepository.remove(anything())).never(); |
47
|
|
|
} |
48
|
|
|
}); |
49
|
|
|
}); |
50
|
|
|
|