1+ using CommonTestUtilities . Repositories ;
2+ using CommonTestUtilities . Requests ;
3+ using CommonTestUtilities . Services ;
4+ using FluentAssertions ;
5+ using RecipesApp . Application . UseCases . User . Register ;
6+ using RecipesApp . Exception . Project ;
7+ using RecipesApp . Exception . Resources ;
8+
9+ namespace UseCases . Test . User . Register ;
10+
11+ public class RegisterUserUCTest
12+ {
13+ private RegisterUserUC CreateUseCase ( string ? email = null )
14+ {
15+ var factory = new UserReadOnlyRepositoryMockFactory ( ) ;
16+
17+ if ( string . IsNullOrEmpty ( email ) is false )
18+ factory . ExistActiveUserWithEmail ( email ) ;
19+ var w = UserWriteOnlyRepositoryMockFactory . CreateMock ( ) ;
20+ var uw = UnitOfWorkMockFactory . CreateMock ( ) ;
21+ var map = MapperMockFactory . CreateMock ( ) ;
22+ var pw = EncryptMockFactory . CreateMock ( ) ;
23+
24+ return new RegisterUserUC ( factory . CreateMock ( ) , w , uw , map , pw ) ;
25+ }
26+
27+ [ Fact ]
28+ public async Task Test_OnSuccess ( )
29+ {
30+ var request = RegisterUserRequestJSONMockFactory . CreateMock ( ) ;
31+ var uc = CreateUseCase ( ) ;
32+
33+ var result = await uc . Execute ( request ) ;
34+
35+ result . Should ( ) . NotBeNull ( ) ;
36+ result . Name . Should ( ) . Be ( request . Name ) ;
37+ }
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+ }
51+ }
0 commit comments