1
1
package com .d4rk .androidtutorials .java .domain .home ;
2
2
3
3
import static org .junit .Assert .assertThrows ;
4
- import static org .mockito .Mockito .any ;
4
+ import static org .mockito .ArgumentMatchers .any ;
5
5
import static org .mockito .Mockito .doThrow ;
6
6
import static org .mockito .Mockito .mock ;
7
7
import static org .mockito .Mockito .verify ;
8
8
9
9
import com .d4rk .androidtutorials .java .data .model .PromotedApp ;
10
10
import com .d4rk .androidtutorials .java .data .repository .HomeRepository ;
11
11
12
+ import org .junit .Before ;
12
13
import org .junit .Test ;
13
14
import org .mockito .ArgumentCaptor ;
14
15
17
18
18
19
public class GetPromotedAppsUseCaseTest {
19
20
20
- @ Test
21
- public void invokeCallsRepository () {
22
- HomeRepository repository = mock (HomeRepository .class );
23
- GetPromotedAppsUseCase useCase = new GetPromotedAppsUseCase (repository );
21
+ private HomeRepository repository ;
22
+ private GetPromotedAppsUseCase useCase ;
23
+ private GetPromotedAppsUseCase .Callback callback ;
24
+
25
+ @ Before
26
+ public void setUp () {
27
+ repository = mock (HomeRepository .class );
28
+ useCase = new GetPromotedAppsUseCase (repository );
29
+ callback = mock (GetPromotedAppsUseCase .Callback .class );
30
+ }
24
31
25
- useCase .invoke (apps -> {});
32
+ @ Test
33
+ public void invokeRequestsPromotedAppsFromRepository () {
34
+ useCase .invoke (callback );
26
35
27
36
verify (repository ).fetchPromotedApps (any ());
28
37
}
29
38
30
39
@ Test
31
- public void invokeReturnsAppsThroughCallback () {
32
- HomeRepository repository = mock (HomeRepository .class );
33
- GetPromotedAppsUseCase useCase = new GetPromotedAppsUseCase (repository );
34
- GetPromotedAppsUseCase .Callback callback = mock (GetPromotedAppsUseCase .Callback .class );
40
+ public void invokeForwardsRepositoryResultsToCallback () {
41
+ ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
42
+ ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
35
43
36
44
useCase .invoke (callback );
37
45
38
- ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
39
- ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
40
46
verify (repository ).fetchPromotedApps (captor .capture ());
47
+ List <PromotedApp > promotedApps = Collections .singletonList (
48
+ new PromotedApp ("App" , "package" , "icon" )
49
+ );
41
50
42
- List <PromotedApp > apps = List .of (new PromotedApp ("App" , "pkg" , "icon" ));
43
- captor .getValue ().onResult (apps );
51
+ captor .getValue ().onResult (promotedApps );
44
52
45
- verify (callback ).onResult (apps );
53
+ verify (callback ).onResult (promotedApps );
46
54
}
47
55
48
56
@ Test
49
- public void invokePropagatesEmptyResults () {
50
- HomeRepository repository = mock (HomeRepository .class );
51
- GetPromotedAppsUseCase useCase = new GetPromotedAppsUseCase (repository );
52
- GetPromotedAppsUseCase .Callback callback = mock (GetPromotedAppsUseCase .Callback .class );
57
+ public void invokeForwardsEmptyList () {
58
+ ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
59
+ ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
53
60
54
61
useCase .invoke (callback );
55
62
56
- ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
57
- ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
58
63
verify (repository ).fetchPromotedApps (captor .capture ());
64
+ List <PromotedApp > promotedApps = Collections .emptyList ();
59
65
60
- List <PromotedApp > apps = Collections .emptyList ();
61
- captor .getValue ().onResult (apps );
66
+ captor .getValue ().onResult (promotedApps );
62
67
63
- verify (callback ).onResult (apps );
68
+ verify (callback ).onResult (promotedApps );
64
69
}
65
70
66
71
@ Test
67
- public void invokePropagatesNullResults () {
68
- HomeRepository repository = mock (HomeRepository .class );
69
- GetPromotedAppsUseCase useCase = new GetPromotedAppsUseCase (repository );
70
- GetPromotedAppsUseCase .Callback callback = mock (GetPromotedAppsUseCase .Callback .class );
72
+ public void invokeForwardsNullList () {
73
+ ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
74
+ ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
71
75
72
76
useCase .invoke (callback );
73
77
74
- ArgumentCaptor <HomeRepository .PromotedAppsCallback > captor =
75
- ArgumentCaptor .forClass (HomeRepository .PromotedAppsCallback .class );
76
78
verify (repository ).fetchPromotedApps (captor .capture ());
77
79
78
80
captor .getValue ().onResult (null );
@@ -81,12 +83,10 @@ public void invokePropagatesNullResults() {
81
83
}
82
84
83
85
@ Test
84
- public void invokePropagatesRepositoryException () {
85
- HomeRepository repository = mock (HomeRepository .class );
86
- GetPromotedAppsUseCase useCase = new GetPromotedAppsUseCase (repository );
87
- GetPromotedAppsUseCase .Callback callback = mock (GetPromotedAppsUseCase .Callback .class );
88
- doThrow (new IllegalStateException ("failure" ))
89
- .when (repository ).fetchPromotedApps (any ());
86
+ public void invokePropagatesRepositoryExceptions () {
87
+ doThrow (new IllegalStateException ("failed" ))
88
+ .when (repository )
89
+ .fetchPromotedApps (any ());
90
90
91
91
assertThrows (IllegalStateException .class , () -> useCase .invoke (callback ));
92
92
verify (repository ).fetchPromotedApps (any ());
0 commit comments