18
18
import com .fernandocejas .android10 .sample .domain .executor .PostExecutionThread ;
19
19
import com .fernandocejas .android10 .sample .domain .executor .ThreadExecutor ;
20
20
import com .fernandocejas .android10 .sample .domain .repository .UserRepository ;
21
+ import com .fernandocejas .arrow .optional .Optional ;
21
22
import org .junit .Before ;
22
23
import org .junit .Test ;
23
24
import org .junit .runner .RunWith ;
24
25
import org .mockito .Mock ;
25
26
import org .mockito .runners .MockitoJUnitRunner ;
27
+ import rx .Observable ;
26
28
29
+ import static org .assertj .core .api .Assertions .assertThat ;
27
30
import static org .mockito .Mockito .verify ;
28
31
import static org .mockito .Mockito .verifyNoMoreInteractions ;
29
32
import static org .mockito .Mockito .verifyZeroInteractions ;
30
33
31
34
@ RunWith (MockitoJUnitRunner .class )
32
35
public class GetUserDetailsTest {
33
36
34
- private static final int FAKE_USER_ID = 123 ;
37
+ private static final int USER_ID = 123 ;
35
38
36
39
private GetUserDetails getUserDetails ;
37
40
@@ -41,15 +44,38 @@ public class GetUserDetailsTest {
41
44
42
45
@ Before
43
46
public void setUp () {
44
- getUserDetails = new GetUserDetails (FAKE_USER_ID , mockUserRepository ,
45
- mockThreadExecutor , mockPostExecutionThread );
47
+ getUserDetails = new GetUserDetails (mockUserRepository , mockThreadExecutor ,
48
+ mockPostExecutionThread );
46
49
}
47
50
48
51
@ Test
49
52
public void testGetUserDetailsUseCaseObservableHappyCase () {
50
- getUserDetails .buildUseCaseObservable ();
53
+ final Params params = Params .create ();
54
+ params .putInt (GetUserDetails .PARAM_USER_ID_KEY , USER_ID );
51
55
52
- verify (mockUserRepository ).user (FAKE_USER_ID );
56
+ getUserDetails .buildUseCaseObservable (Optional .of (params ));
57
+
58
+ verify (mockUserRepository ).user (USER_ID );
59
+ verifyNoMoreInteractions (mockUserRepository );
60
+ verifyZeroInteractions (mockPostExecutionThread );
61
+ verifyZeroInteractions (mockThreadExecutor );
62
+ }
63
+
64
+ @ Test
65
+ public void testShouldReturnEmptyObservableWhenNoParameters () {
66
+ final Observable observable = getUserDetails .buildUseCaseObservable (Optional .<Params >absent ());
67
+
68
+ assertThat (observable ).isEqualTo (Observable .empty ());
69
+ verifyZeroInteractions (mockUserRepository );
70
+ verifyZeroInteractions (mockPostExecutionThread );
71
+ verifyZeroInteractions (mockThreadExecutor );
72
+ }
73
+
74
+ @ Test
75
+ public void testShouldUseDefaultUserIdValueWhenNoUserIdParameter () {
76
+ getUserDetails .buildUseCaseObservable (Optional .of (Params .create ()));
77
+
78
+ verify (mockUserRepository ).user (GetUserDetails .PARAM_USER_ID_DEFAULT_VALUE );
53
79
verifyNoMoreInteractions (mockUserRepository );
54
80
verifyZeroInteractions (mockPostExecutionThread );
55
81
verifyZeroInteractions (mockThreadExecutor );
0 commit comments