16
16
17
17
package com .example .android .architecture .blueprints .todoapp .taskdetail ;
18
18
19
+ import android .support .v4 .app .LoaderManager ;
19
20
import android .support .v4 .content .Loader ;
20
21
21
22
import com .example .android .architecture .blueprints .todoapp .data .Task ;
27
28
import org .mockito .Mock ;
28
29
import org .mockito .MockitoAnnotations ;
29
30
30
- import static org .mockito .Mockito .mock ;
31
- import static org .mockito .Mockito .never ;
32
- import static org .mockito .Mockito .verify ;
31
+ import static org .mockito .Mockito .*;
33
32
34
33
/**
35
34
* Unit tests for the implementation of {@link TaskDetailPresenter}
@@ -55,22 +54,25 @@ public class TaskDetailPresenterTest {
55
54
@ Mock
56
55
private TaskLoader mTaskLoader ;
57
56
57
+ @ Mock
58
+ private LoaderManager mLoaderManager ;
59
+
58
60
private TaskDetailPresenter mTaskDetailPresenter ;
59
61
60
62
@ Before
61
- public void setupTasksPresenter () {
63
+ public void setup () {
62
64
// Mockito has a very convenient way to inject mocks by using the @Mock annotation. To
63
65
// inject the mocks in the test the initMocks method needs to be called.
64
66
MockitoAnnotations .initMocks (this );
65
-
66
- // Get a reference to the class under test
67
- mTaskDetailPresenter = new TaskDetailPresenter (
68
- ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader );
69
67
}
70
68
71
69
@ Test
72
70
public void getActiveTaskFromRepositoryAndLoadIntoView () {
73
71
// When tasks presenter is asked to open an ACTIVE_TASK
72
+
73
+ // Get a reference to the class under test
74
+ mTaskDetailPresenter = new TaskDetailPresenter (
75
+ ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
74
76
mTaskDetailPresenter .onLoadFinished (mock (Loader .class ), ACTIVE_TASK );
75
77
76
78
// Then progress indicator is hidden and title, description and completion status are shown
@@ -83,6 +85,8 @@ public void getActiveTaskFromRepositoryAndLoadIntoView() {
83
85
@ Test
84
86
public void getCompletedTaskFromRepositoryAndLoadIntoView () {
85
87
// When tasks presenter is asked to open a completed task
88
+ mTaskDetailPresenter = new TaskDetailPresenter (
89
+ COMPLETED_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
86
90
mTaskDetailPresenter .onLoadFinished (mock (Loader .class ), COMPLETED_TASK );
87
91
88
92
// Then progress indicator is hidden and title, description and completion status are shown
@@ -94,61 +98,74 @@ public void getCompletedTaskFromRepositoryAndLoadIntoView() {
94
98
}
95
99
96
100
@ Test
97
- public void loadANullTask_showsMissingTaskError () {
98
- // When loading of an ACTIVE_TASK is requested with an invalid task.
101
+ public void getUnknownTaskFromRepositoryAndLoadIntoView () {
102
+ // When loading of an ACTIVE_TASK is requested with an invalid task
103
+ mTaskDetailPresenter = new TaskDetailPresenter (
104
+ INVALID_TASK_ID , mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
99
105
mTaskDetailPresenter .onLoadFinished (mock (Loader .class ), null );
100
106
101
107
// Then progress indicator is hidden and missing ACTIVE_TASK UI is shown
102
108
verify (mTaskDetailFragment ).showMissingTask ();
103
109
}
104
110
105
111
@ Test
106
- public void userActions_deleteTask () {
112
+ public void deleteTask () {
107
113
// When the deletion of an ACTIVE_TASK is requested
108
- mTaskDetailPresenter .deleteTask (ACTIVE_TASK .getId ());
114
+ mTaskDetailPresenter = new TaskDetailPresenter (
115
+ ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
116
+ mTaskDetailPresenter .deleteTask ();
109
117
110
118
// Then the repository and the view are notified
111
119
verify (mTasksRepository ).deleteTask (ACTIVE_TASK .getId ());
112
120
verify (mTaskDetailFragment ).showTaskDeleted ();
113
121
}
114
122
115
123
@ Test
116
- public void userActions_editTask_correctId () {
124
+ public void completeTask () {
125
+ // When the presenter is asked to complete the ACTIVE_TASK
126
+ mTaskDetailPresenter = new TaskDetailPresenter (
127
+ ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
128
+ mTaskDetailPresenter .completeTask ();
129
+
130
+ // Then a request is sent to the repository and the UI is updated
131
+ verify (mTasksRepository ).completeTask (ACTIVE_TASK .getId ());
132
+ verify (mTaskDetailFragment ).showTaskMarkedComplete ();
133
+ }
134
+
135
+ @ Test
136
+ public void activateTask () {
137
+ // When the presenter is asked to activate the ACTIVE_TASK
138
+ mTaskDetailPresenter = new TaskDetailPresenter (
139
+ ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
140
+ mTaskDetailPresenter .activateTask ();
141
+
142
+ // Then a request is sent to the repository and the UI is updated
143
+ verify (mTasksRepository ).activateTask (ACTIVE_TASK .getId ());
144
+ verify (mTaskDetailFragment ).showTaskMarkedActive ();
145
+ }
146
+
147
+ @ Test
148
+ public void activeTaskIsShownWhenEditing () {
117
149
// When the edit of an ACTIVE_TASK is requested
118
- mTaskDetailPresenter .editTask (ACTIVE_TASK .getId ());
150
+ mTaskDetailPresenter = new TaskDetailPresenter (
151
+ ACTIVE_TASK .getId (), mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
152
+ mTaskDetailPresenter .editTask ();
119
153
120
154
// Then the view is notified
121
155
verify (mTaskDetailFragment ).showEditTask (ACTIVE_TASK .getId ());
122
156
}
123
157
124
158
@ Test
125
- public void userActions_editTask_incorrectId () {
159
+ public void invalidTaskIsNotShownWhenEditing () {
126
160
// When the edit of an invalid task id is requested
127
- mTaskDetailPresenter .editTask (INVALID_TASK_ID );
161
+ mTaskDetailPresenter = new TaskDetailPresenter (
162
+ INVALID_TASK_ID , mTasksRepository , mTaskDetailFragment , mTaskLoader , mLoaderManager );
163
+ mTaskDetailPresenter .editTask ();
128
164
129
165
// Then the edit mode is never started
130
166
verify (mTaskDetailFragment , never ()).showEditTask (INVALID_TASK_ID );
131
167
// instead, the error is shown.
132
168
verify (mTaskDetailFragment ).showMissingTask ();
133
169
}
134
170
135
- @ Test
136
- public void userActions_completeTask () {
137
- // When the presenter is asked to complete the ACTIVE_TASK
138
- mTaskDetailPresenter .completeTask (ACTIVE_TASK .getId ());
139
-
140
- // Then a request is sent to the repository and the UI is updated
141
- verify (mTasksRepository ).completeTask (ACTIVE_TASK .getId ());
142
- verify (mTaskDetailFragment ).showTaskMarkedComplete ();
143
- }
144
-
145
- @ Test
146
- public void userActions_activateTask () {
147
- // When the presenter is asked to activate the ACTIVE_TASK
148
- mTaskDetailPresenter .activateTask (ACTIVE_TASK .getId ());
149
-
150
- // Then a request is sent to the repository and the UI is updated
151
- verify (mTasksRepository ).activateTask (ACTIVE_TASK .getId ());
152
- verify (mTaskDetailFragment ).showTaskMarkedActive ();
153
- }
154
171
}
0 commit comments