mirror of
https://github.com/wismna/DoNext.git
synced 2025-12-06 08:12:37 -05:00
Add remaining ViewModels Unit Tests
Update packages Make Clock a dependency in TaskItemViewModel
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
package com.wismna.geoffroy.donext.domain.extension
|
||||
|
||||
import java.time.Clock
|
||||
import java.time.Instant
|
||||
import java.time.LocalDate
|
||||
import java.time.ZoneId
|
||||
|
||||
fun Long.toLocalDate(): LocalDate =
|
||||
fun Long.toLocalDate(clock: Clock = Clock.systemDefaultZone()): LocalDate =
|
||||
Instant.ofEpochMilli(this)
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.atZone(clock.zone)
|
||||
.toLocalDate()
|
||||
|
||||
@@ -283,7 +283,7 @@ fun AppContent(
|
||||
is AppDestination.RecycleBin -> {
|
||||
EmptyRecycleBinAction()
|
||||
}
|
||||
else -> null
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -297,7 +297,7 @@ fun AppContent(
|
||||
text = { Text(stringResource(R.string.action_create_list)) },
|
||||
)
|
||||
}
|
||||
else -> null
|
||||
else -> Unit
|
||||
}
|
||||
}
|
||||
) { contentPadding ->
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.wismna.geoffroy.donext.presentation.viewmodel
|
||||
import com.wismna.geoffroy.donext.domain.extension.toLocalDate
|
||||
import com.wismna.geoffroy.donext.domain.model.Priority
|
||||
import com.wismna.geoffroy.donext.domain.model.Task
|
||||
import java.time.Clock
|
||||
import java.time.LocalDate
|
||||
import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
@@ -10,7 +11,9 @@ import java.time.format.FormatStyle
|
||||
import java.time.format.TextStyle
|
||||
import java.util.Locale
|
||||
|
||||
class TaskItemViewModel(task: Task) {
|
||||
class TaskItemViewModel(
|
||||
task: Task,
|
||||
private val clock: Clock = Clock.systemDefaultZone()) {
|
||||
val id: Long = task.id!!
|
||||
val name: String = task.name
|
||||
val description: String? = task.description
|
||||
@@ -18,17 +21,17 @@ class TaskItemViewModel(task: Task) {
|
||||
val isDeleted: Boolean = task.isDeleted
|
||||
val priority: Priority = task.priority
|
||||
|
||||
val today: LocalDate = LocalDate.now(ZoneId.systemDefault())
|
||||
val today: LocalDate = LocalDate.now(clock)
|
||||
|
||||
val isOverdue: Boolean = task.dueDate?.let { millis ->
|
||||
val dueDate = millis.toLocalDate()
|
||||
val dueDate = millis.toLocalDate(clock)
|
||||
dueDate.isBefore(today)
|
||||
} ?: false
|
||||
|
||||
val dueDateText: String? = task.dueDate?.let { formatDueDate(it) }
|
||||
|
||||
private fun formatDueDate(dueMillis: Long): String {
|
||||
val dueDate = dueMillis.toLocalDate()
|
||||
val dueDate = dueMillis.toLocalDate(clock)
|
||||
|
||||
return when {
|
||||
dueDate.isEqual(today) -> "Today"
|
||||
|
||||
Reference in New Issue
Block a user