@@ -6,12 +6,17 @@ import { SavingsRecordType, UserSavingsRecord } from 'src/Domain/HumanResource/S
6
6
import { UserRepository } from 'src/Infrastructure/HumanResource/User/Repository/UserRepository' ;
7
7
import { UserSavingsRecordRepository } from 'src/Infrastructure/HumanResource/Savings/Repository/UserSavingsRecordRepository' ;
8
8
import { UserNotFoundException } from 'src/Domain/HumanResource/User/Exception/UserNotFoundException' ;
9
+ import { InterestRateRepository } from 'src/Infrastructure/HumanResource/Savings/Repository/InterestRateRepository' ;
10
+ import { InterestRateNotFoundException } from 'src/Domain/HumanResource/Savings/Exception/InterestRateNotFoundException' ;
11
+ import { InterestRate } from 'src/Domain/HumanResource/Savings/InterestRate.entity' ;
9
12
10
13
describe ( 'IncreaseUserSavingsRecordCommandHandler' , ( ) => {
11
14
let userRepository : UserRepository ;
12
15
let userSavingsRecordRepository : UserSavingsRecordRepository ;
16
+ let interestRateRepository : InterestRateRepository ;
13
17
let handler : IncreaseUserSavingsRecordCommandHandler ;
14
18
19
+ const user = mock ( User ) ;
15
20
const command = new IncreaseUserSavingsRecordCommand (
16
21
5000 ,
17
22
'a58c5253-c097-4f44-b8c1-ccd45aab36e3' ,
@@ -20,10 +25,12 @@ describe('IncreaseUserSavingsRecordCommandHandler', () => {
20
25
beforeEach ( ( ) => {
21
26
userRepository = mock ( UserRepository ) ;
22
27
userSavingsRecordRepository = mock ( UserSavingsRecordRepository ) ;
28
+ interestRateRepository = mock ( InterestRateRepository ) ;
23
29
24
30
handler = new IncreaseUserSavingsRecordCommandHandler (
25
31
instance ( userRepository ) ,
26
32
instance ( userSavingsRecordRepository ) ,
33
+ instance ( interestRateRepository ) ,
27
34
) ;
28
35
} ) ;
29
36
@@ -46,17 +53,45 @@ describe('IncreaseUserSavingsRecordCommandHandler', () => {
46
53
}
47
54
} ) ;
48
55
56
+ it ( 'testInterestRateNotFound' , async ( ) => {
57
+ when (
58
+ userRepository . findOneById ( 'a58c5253-c097-4f44-b8c1-ccd45aab36e3' )
59
+ ) . thenResolve ( instance ( user ) ) ;
60
+ when (
61
+ interestRateRepository . findLatestInterestRate ( )
62
+ ) . thenResolve ( null ) ;
63
+
64
+ try {
65
+ expect ( await handler . execute ( command ) ) . toBeUndefined ( ) ;
66
+ } catch ( e ) {
67
+ expect ( e ) . toBeInstanceOf ( InterestRateNotFoundException ) ;
68
+ expect ( e . message ) . toBe (
69
+ 'human_resources.savings_records.errors.interest_rate_not_found'
70
+ ) ;
71
+ verify (
72
+ userRepository . findOneById ( 'a58c5253-c097-4f44-b8c1-ccd45aab36e3' )
73
+ ) . once ( ) ;
74
+ verify (
75
+ interestRateRepository . findLatestInterestRate ( )
76
+ ) . once ( ) ;
77
+ verify ( userSavingsRecordRepository . save ( anything ( ) ) ) . never ( ) ;
78
+ }
79
+ } ) ;
80
+
49
81
it ( 'testAddSuccessfully' , async ( ) => {
50
82
const userSavingsRecord = mock ( UserSavingsRecord ) ;
51
- const user = mock ( User ) ;
83
+ const interestRate = mock ( InterestRate ) ;
52
84
53
85
when ( userSavingsRecord . getId ( ) ) . thenReturn ( '5c97487c-7863-46a2-967d-79eb8c94ecb5' ) ;
54
86
when (
55
87
userRepository . findOneById ( 'a58c5253-c097-4f44-b8c1-ccd45aab36e3' )
56
88
) . thenResolve ( instance ( user ) ) ;
89
+ when (
90
+ interestRateRepository . findLatestInterestRate ( )
91
+ ) . thenResolve ( instance ( interestRate ) ) ;
57
92
when (
58
93
userSavingsRecordRepository . save (
59
- deepEqual ( new UserSavingsRecord ( 500000 , SavingsRecordType . INPUT , instance ( user ) ) )
94
+ deepEqual ( new UserSavingsRecord ( 500000 , SavingsRecordType . INPUT , instance ( user ) , instance ( interestRate ) ) )
60
95
)
61
96
) . thenResolve ( instance ( userSavingsRecord ) ) ;
62
97
@@ -65,9 +100,12 @@ describe('IncreaseUserSavingsRecordCommandHandler', () => {
65
100
verify (
66
101
userRepository . findOneById ( 'a58c5253-c097-4f44-b8c1-ccd45aab36e3' )
67
102
) . once ( ) ;
103
+ verify (
104
+ interestRateRepository . findLatestInterestRate ( )
105
+ ) . once ( ) ;
68
106
verify (
69
107
userSavingsRecordRepository . save (
70
- deepEqual ( new UserSavingsRecord ( 500000 , SavingsRecordType . INPUT , instance ( user ) ) )
108
+ deepEqual ( new UserSavingsRecord ( 500000 , SavingsRecordType . INPUT , instance ( user ) , instance ( interestRate ) ) )
71
109
)
72
110
) . once ( ) ;
73
111
} ) ;
0 commit comments