33using CommonTestUtilities . Services ;
44using FluentAssertions ;
55using RecipesApp . Application . UseCases . User . Register ;
6+ using RecipesApp . Exception . Project ;
7+ using RecipesApp . Exception . Resources ;
68
79namespace UseCases . Test . User . Register ;
810
911public class RegisterUserUCTest
1012{
11- private RegisterUserUC CreateUseCase ( )
13+ private RegisterUserUC CreateUseCase ( string ? email = null )
1214 {
13- var r = new UserReadOnlyRepositoryMockFactory ( ) . CreateMock ( ) ;
15+ var factory = new UserReadOnlyRepositoryMockFactory ( ) ;
16+
17+ if ( string . IsNullOrEmpty ( email ) is false )
18+ factory . ExistActiveUserWithEmail ( email ) ;
1419 var w = UserWriteOnlyRepositoryMockFactory . CreateMock ( ) ;
1520 var uw = UnitOfWorkMockFactory . CreateMock ( ) ;
1621 var map = MapperMockFactory . CreateMock ( ) ;
1722 var pw = EncryptMockFactory . CreateMock ( ) ;
18-
19- return new RegisterUserUC ( r , w , uw , map , pw ) ;
23+
24+ return new RegisterUserUC ( factory . CreateMock ( ) , w , uw , map , pw ) ;
2025 }
21-
26+
2227 [ Fact ]
2328 public async Task Test_OnSuccess ( )
2429 {
@@ -30,4 +35,17 @@ public async Task Test_OnSuccess()
3035 result . Should ( ) . NotBeNull ( ) ;
3136 result . Name . Should ( ) . Be ( request . Name ) ;
3237 }
38+
39+ [ Fact ]
40+ public async Task Test_OnFailure_WithEmailAlreadyRegistered ( )
41+ {
42+ var request = RegisterUserRequestJSONMockFactory . CreateMock ( ) ;
43+ var uc = CreateUseCase ( request . Email ) ;
44+
45+ Func < Task > act = async ( ) => await uc . Execute ( request ) ;
46+
47+ ( await act . Should ( ) . ThrowAsync < ErrorOnValidationException > ( ) )
48+ . Where ( e => e . ErrorMessages . Count == 1
49+ && e . ErrorMessages . Contains ( ResourcesAccessor . EMAIL_ALREADY_REGISTERED ) ) ;
50+ }
3351}
0 commit comments