Skip to content

Commit c5598e4

Browse files
author
Gerrit Garbereder
committed
Make usecases generic
1 parent 78f9154 commit c5598e4

File tree

7 files changed

+17
-25
lines changed

7 files changed

+17
-25
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package com.garbereder.tasktracker.usecases
22

3-
interface UseCase {
4-
fun invoke()
3+
interface UseCase<out T> {
4+
fun invoke(): T
55
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/AddTask.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.garbereder.tasktracker.entities.Task
44
import com.garbereder.tasktracker.entities.TaskCollection
55
import com.garbereder.tasktracker.usecases.UseCase
66

7-
class AddTask constructor(private val collection: TaskCollection, private val task: Task) : UseCase {
8-
override fun invoke() = collection.add(task)
7+
class AddTask constructor(private val collection: TaskCollection, private val taskName: String) : UseCase<Unit> {
8+
override fun invoke() = collection.add(Task("${collection.size() + 1}", taskName))
99
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/LoadTasks.kt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ package com.garbereder.tasktracker.usecases.tasks
33
import com.garbereder.tasktracker.entities.TaskCollection
44
import com.garbereder.tasktracker.usecases.UseCase
55

6-
class LoadTasks(private val reader: TaskCollectionReader) : UseCase {
7-
8-
lateinit var tasks: TaskCollection
9-
10-
override fun invoke() {
11-
tasks = this.reader.read()
12-
}
13-
6+
class LoadTasks(private val reader: TaskCollectionReader) : UseCase<TaskCollection> {
7+
override fun invoke(): TaskCollection = this.reader.read()
148
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/RemoveTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import com.garbereder.tasktracker.entities.Task
44
import com.garbereder.tasktracker.entities.TaskCollection
55
import com.garbereder.tasktracker.usecases.UseCase
66

7-
class RemoveTask(private val collection: TaskCollection, private val task: Task): UseCase {
7+
class RemoveTask(private val collection: TaskCollection, private val task: Task): UseCase<Unit> {
88
override fun invoke() = collection.remove(task)
99
}

Task-Tracker-Usecases/src/commonMain/kotlin/com/garbereder/tasktracker/usecases/tasks/TaskCollectionFactory.kt

Lines changed: 0 additions & 8 deletions
This file was deleted.

Task-Tracker-Usecases/src/commonTest/kotlin/com/garbereder/tasktracker/usecases/tasks/AddTaskTest.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,22 @@ import com.garbereder.tasktracker.entities.TaskCollection
55
import io.mockative.*
66
import kotlin.test.*
77

8-
class AddTaskTes {
8+
class AddTaskTests {
99
@Mock
1010
val collection = mock(classOf<TaskCollection>())
1111

1212
@Test
1313
fun invoke_noInput_callsThrough() {
14-
val task = Task("TaskId", "TaskName")
14+
val task = Task("1","TaskName")
1515
given(collection).invocation { add(task) }
1616
.thenDoNothing()
17+
given(collection).invocation { size() }
18+
.then { 0 }
1719

18-
AddTask(collection, task).invoke()
20+
AddTask(collection, "TaskName").invoke()
1921

22+
verify(collection).invocation { size() }
23+
.wasInvoked(exactly = once)
2024
verify(collection).invocation { add(task) }
2125
.wasInvoked(exactly = once)
2226
}

Task-Tracker-Usecases/src/commonTest/kotlin/com/garbereder/tasktracker/usecases/tasks/LoadTasksTests.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.garbereder.tasktracker.entities.TaskCollection
55
import com.garbereder.tasktracker.usecases.UseCase
66
import io.mockative.*
77
import kotlin.test.Test
8+
import kotlin.test.assertEquals
89
import kotlin.test.assertNotNull
910
import kotlin.test.assertTrue
1011

@@ -18,7 +19,8 @@ class LoadTasksTests {
1819
given(reader).invocation { read() }
1920
.then { collection }
2021

21-
LoadTasks(reader).invoke()
22+
val col = LoadTasks(reader).invoke()
23+
assertEquals(collection, col)
2224

2325
verify(reader).invocation { read() }
2426
.wasInvoked(exactly = once)

0 commit comments

Comments
 (0)