Skip to content

Commit 4122396

Browse files
author
github-actions
committed
Merge remote-tracking branch 'origin/main'
2 parents 168295e + 04924f6 commit 4122396

File tree

8 files changed

+45
-48
lines changed

8 files changed

+45
-48
lines changed

app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/statistics/StatisticsScreenTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class StatisticsScreenTest {
6666
repository.apply {
6767
createTask("Title1", "Description1")
6868
createTask("Title2", "Description2").also {
69-
completeTask(it.id)
69+
completeTask(it)
7070
}
7171
}
7272

app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/taskdetail/TaskDetailScreenTest.kt

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import androidx.lifecycle.SavedStateHandle
2727
import androidx.test.ext.junit.runners.AndroidJUnit4
2828
import androidx.test.filters.MediumTest
2929
import com.example.android.architecture.blueprints.todoapp.HiltTestActivity
30-
import com.example.android.architecture.blueprints.todoapp.data.Task
3130
import com.example.android.architecture.blueprints.todoapp.data.TaskRepository
3231
import com.google.accompanist.appcompattheme.AppCompatTheme
3332
import dagger.hilt.android.testing.HiltAndroidRule
@@ -66,13 +65,13 @@ class TaskDetailScreenTest {
6665
@Test
6766
fun activeTaskDetails_DisplayedInUi() = runTest {
6867
// GIVEN - Add active (incomplete) task to the DB
69-
val activeTask = repository.createTask(
68+
val activeTaskId = repository.createTask(
7069
title = "Active Task",
7170
description = "AndroidX Rocks"
7271
)
7372

7473
// WHEN - Details screen is opened
75-
setContent(activeTask)
74+
setContent(activeTaskId)
7675

7776
// THEN - Task details are displayed on the screen
7877
// make sure that the title/description are both shown and correct
@@ -85,11 +84,11 @@ class TaskDetailScreenTest {
8584
@Test
8685
fun completedTaskDetails_DisplayedInUi() = runTest {
8786
// GIVEN - Add completed task to the DB
88-
val completedTask = repository.createTask("Completed Task", "AndroidX Rocks")
89-
repository.completeTask(completedTask.id)
87+
val completedTaskId = repository.createTask("Completed Task", "AndroidX Rocks")
88+
repository.completeTask(completedTaskId)
9089

9190
// WHEN - Details screen is opened
92-
setContent(completedTask)
91+
setContent(completedTaskId)
9392

9493
// THEN - Task details are displayed on the screen
9594
// make sure that the title/description are both shown and correct
@@ -99,14 +98,14 @@ class TaskDetailScreenTest {
9998
composeTestRule.onNode(isToggleable()).assertIsOn()
10099
}
101100

102-
private fun setContent(activeTask: Task) {
101+
private fun setContent(activeTaskId: String) {
103102
composeTestRule.setContent {
104103
AppCompatTheme {
105104
Surface {
106105
TaskDetailScreen(
107106
viewModel = TaskDetailViewModel(
108107
repository,
109-
SavedStateHandle(mapOf("taskId" to activeTask.id))
108+
SavedStateHandle(mapOf("taskId" to activeTaskId))
110109
),
111110
onEditTask = { /*TODO*/ },
112111
onBack = { },

app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreenTest.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ class TasksScreenTest {
9999
@Test
100100
fun displayCompletedTask() = runTest {
101101
repository.apply {
102-
createTask("TITLE1", "DESCRIPTION1").also { completeTask(it.id) }
102+
createTask("TITLE1", "DESCRIPTION1").also { completeTask(it) }
103103
}
104104

105105
setContent()
@@ -134,7 +134,7 @@ class TasksScreenTest {
134134
@Test
135135
fun markTaskAsActive() = runTest {
136136
repository.apply {
137-
createTask("TITLE1", "DESCRIPTION1").also { completeTask(it.id) }
137+
createTask("TITLE1", "DESCRIPTION1").also { completeTask(it) }
138138
}
139139

140140
setContent()
@@ -156,7 +156,7 @@ class TasksScreenTest {
156156
// Add one active task and one completed task
157157
repository.apply {
158158
createTask("TITLE1", "DESCRIPTION1")
159-
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it.id) }
159+
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it) }
160160
}
161161

162162
setContent()
@@ -173,7 +173,7 @@ class TasksScreenTest {
173173
repository.apply {
174174
createTask("TITLE1", "DESCRIPTION1")
175175
createTask("TITLE2", "DESCRIPTION2")
176-
createTask("TITLE3", "DESCRIPTION3").also { completeTask(it.id) }
176+
createTask("TITLE3", "DESCRIPTION3").also { completeTask(it) }
177177
}
178178

179179
setContent()
@@ -190,8 +190,8 @@ class TasksScreenTest {
190190
// Add one active task and 2 completed tasks
191191
repository.apply {
192192
createTask("TITLE1", "DESCRIPTION1")
193-
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it.id) }
194-
createTask("TITLE3", "DESCRIPTION3").also { completeTask(it.id) }
193+
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it) }
194+
createTask("TITLE3", "DESCRIPTION3").also { completeTask(it) }
195195
}
196196

197197
setContent()
@@ -208,7 +208,7 @@ class TasksScreenTest {
208208
// Add one active task and one completed task
209209
repository.apply {
210210
createTask("TITLE1", "DESCRIPTION1")
211-
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it.id) }
211+
createTask("TITLE2", "DESCRIPTION2").also { completeTask(it) }
212212
}
213213

214214
setContent()

app/src/androidTest/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ class TasksTest {
195195
// Add 1 completed task
196196
val taskTitle = "ACTIVE"
197197
repository.apply {
198-
createTask(taskTitle, "DESCRIPTION").also { completeTask(it.id) }
198+
createTask(taskTitle, "DESCRIPTION").also { completeTask(it) }
199199
}
200200

201201
setContent()
@@ -249,7 +249,7 @@ class TasksTest {
249249
// Add 1 completed task
250250
val taskTitle = "COMP-ACT"
251251
repository.apply {
252-
createTask(taskTitle, "DESCRIPTION").also { completeTask(it.id) }
252+
createTask(taskTitle, "DESCRIPTION").also { completeTask(it) }
253253
}
254254

255255
setContent()

app/src/main/java/com/example/android/architecture/blueprints/todoapp/data/DefaultTaskRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class DefaultTaskRepository(
4040
private val coroutineDispatcher: CoroutineDispatcher = Dispatchers.Default
4141
) : TaskRepository {
4242

43-
override suspend fun createTask(title: String, description: String): Task {
43+
override suspend fun createTask(title: String, description: String): String {
4444
// ID creation might be a complex operation so it's executed using the supplied
4545
// coroutine dispatcher
4646
val taskId = withContext(coroutineDispatcher) {
@@ -53,7 +53,7 @@ class DefaultTaskRepository(
5353
)
5454
taskDao.upsert(task.toLocal())
5555
saveTasksToNetwork()
56-
return task
56+
return taskId
5757
}
5858

5959
override suspend fun updateTask(taskId: String, title: String, description: String) {

app/src/main/java/com/example/android/architecture/blueprints/todoapp/data/TaskRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ interface TaskRepository {
3535

3636
suspend fun refreshTask(taskId: String)
3737

38-
suspend fun createTask(title: String, description: String): Task
38+
suspend fun createTask(title: String, description: String): String
3939

4040
suspend fun updateTask(taskId: String, title: String, description: String)
4141

app/src/test/java/com/example/android/architecture/blueprints/todoapp/data/DefaultTaskRepositoryTest.kt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,15 @@ class DefaultTaskRepositoryTest {
3636
private val task1 = Task(id = "1", title = "Title1", description = "Description1")
3737
private val task2 = Task(id = "2", title = "Title2", description = "Description2")
3838
private val task3 = Task(id = "3", title = "Title3", description = "Description3")
39-
private val newTask = Task(id = "new", title = "Title new", description = "Description new")
40-
private val networkTasks = listOf(task1, task2).toNetwork().sortedBy { it.id }
41-
private val localTasks = listOf(task3.toLocal()).sortedBy { it.id }
4239

43-
private val newTasks = listOf(newTask).sortedBy { it.id }
40+
private val newTaskTitle = "Title new"
41+
private val newTaskDescription = "Description new"
42+
private val newTask = Task(id = "new", title = newTaskTitle, description = newTaskDescription)
43+
private val newTasks = listOf(newTask)
44+
45+
private val networkTasks = listOf(task1, task2).toNetwork()
46+
private val localTasks = listOf(task3.toLocal())
47+
4448
private lateinit var networkDataSource: FakeNetworkDataSource
4549
private lateinit var localDataSource: FakeTaskDao
4650

@@ -103,16 +107,12 @@ class DefaultTaskRepositoryTest {
103107

104108
@Test
105109
fun saveTask_savesToLocalAndRemote() = runTest {
106-
// Make sure newTask is not in the remote or local datasources
107-
assertThat(networkDataSource.tasks).doesNotContain(newTask.toNetwork())
108-
assertThat(localDataSource.tasks).doesNotContain(newTask.toLocal())
109-
110110
// When a task is saved to the tasks repository
111-
val newTask = tasksRepository.createTask(newTask.title, newTask.description)
111+
val newTaskId = tasksRepository.createTask(newTask.title, newTask.description)
112112

113-
// Then the remote and local sources are called
114-
assertThat(networkDataSource.tasks).contains(newTask.toNetwork())
115-
assertThat(localDataSource.tasks?.contains(newTask.toLocal()))
113+
// Then the remote and local sources contain the new task
114+
assertThat(networkDataSource.tasks?.map { it.id }?.contains(newTaskId))
115+
assertThat(localDataSource.tasks?.map { it.id }?.contains(newTaskId))
116116
}
117117

118118
@Test
@@ -179,32 +179,32 @@ class DefaultTaskRepositoryTest {
179179
@Test
180180
fun completeTask_completesTaskToServiceAPIUpdatesCache() = runTest {
181181
// Save a task
182-
val newTask = tasksRepository.createTask(newTask.title, newTask.description)
182+
val newTaskId = tasksRepository.createTask(newTask.title, newTask.description)
183183

184184
// Make sure it's active
185-
assertThat(tasksRepository.getTask(newTask.id)?.isCompleted).isFalse()
185+
assertThat(tasksRepository.getTask(newTaskId)?.isCompleted).isFalse()
186186

187187
// Mark is as complete
188-
tasksRepository.completeTask(newTask.id)
188+
tasksRepository.completeTask(newTaskId)
189189

190190
// Verify it's now completed
191-
assertThat(tasksRepository.getTask(newTask.id)?.isCompleted).isTrue()
191+
assertThat(tasksRepository.getTask(newTaskId)?.isCompleted).isTrue()
192192
}
193193

194194
@Test
195195
fun completeTask_activeTaskToServiceAPIUpdatesCache() = runTest {
196196
// Save a task
197-
val newTask = tasksRepository.createTask(newTask.title, newTask.description)
198-
tasksRepository.completeTask(newTask.id)
197+
val newTaskId = tasksRepository.createTask(newTask.title, newTask.description)
198+
tasksRepository.completeTask(newTaskId)
199199

200200
// Make sure it's completed
201-
assertThat(tasksRepository.getTask(newTask.id)?.isActive).isFalse()
201+
assertThat(tasksRepository.getTask(newTaskId)?.isActive).isFalse()
202202

203203
// Mark is as active
204-
tasksRepository.activateTask(newTask.id)
204+
tasksRepository.activateTask(newTaskId)
205205

206206
// Verify it's now activated
207-
assertThat(tasksRepository.getTask(newTask.id)?.isActive).isTrue()
207+
assertThat(tasksRepository.getTask(newTaskId)?.isActive).isTrue()
208208
}
209209

210210
@Test

shared-test/src/main/java/com/example/android/architecture/blueprints/todoapp/data/FakeTaskRepository.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,12 @@ class FakeTaskRepository : TaskRepository {
5656
refreshTasks()
5757
}
5858

59-
override suspend fun createTask(title: String, description: String): Task {
60-
return Task(
61-
title = title,
62-
description = description,
63-
id = generateTaskId()
64-
).also {
59+
override suspend fun createTask(title: String, description: String): String {
60+
val taskId = generateTaskId()
61+
Task(title = title, description = description, id = taskId).also {
6562
saveTask(it)
6663
}
64+
return taskId
6765
}
6866

6967
override fun getTasksStream(): Flow<List<Task>> = observableTasks

0 commit comments

Comments
 (0)