From 6f08194ff7ac9219c7ec622216a1be668319fda7 Mon Sep 17 00:00:00 2001 From: akashs056 Date: Sat, 31 Aug 2024 11:21:56 +0530 Subject: [PATCH] implement TestTimeConverter and fix ExportCsvUseCasePropertyTest --- .../ivy/base/time/impl/TestTimeConverter.kt | 27 +++++++++++++++++++ .../domain/usecase/csv/ExportCsvUseCase.kt | 6 ++--- .../csv/ExportCsvUseCasePropertyTest.kt | 3 +++ 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 shared/base/src/main/java/com/ivy/base/time/impl/TestTimeConverter.kt diff --git a/shared/base/src/main/java/com/ivy/base/time/impl/TestTimeConverter.kt b/shared/base/src/main/java/com/ivy/base/time/impl/TestTimeConverter.kt new file mode 100644 index 0000000000..e13dcfd943 --- /dev/null +++ b/shared/base/src/main/java/com/ivy/base/time/impl/TestTimeConverter.kt @@ -0,0 +1,27 @@ +package com.ivy.base.time.impl + +import com.ivy.base.time.TimeConverter +import java.time.Instant +import java.time.LocalDate +import java.time.LocalDateTime +import java.time.ZoneId + +class TestTimeConverter : TimeConverter { + private val utcZoneId = ZoneId.of("UTC") + + override fun Instant.toLocalDateTime(): LocalDateTime { + return this.atZone(utcZoneId).toLocalDateTime() + } + + override fun Instant.toLocalDate(): LocalDate { + return this.atZone(utcZoneId).toLocalDate() + } + + override fun LocalDateTime.toUTC(): Instant { + return this.atZone(utcZoneId).toInstant() + } + + fun LocalDateTime.toInstant(): Instant { + return this.atZone(utcZoneId).toInstant() + } +} \ No newline at end of file diff --git a/shared/domain/src/main/java/com/ivy/domain/usecase/csv/ExportCsvUseCase.kt b/shared/domain/src/main/java/com/ivy/domain/usecase/csv/ExportCsvUseCase.kt index 23a56f6a00..98191461e9 100644 --- a/shared/domain/src/main/java/com/ivy/domain/usecase/csv/ExportCsvUseCase.kt +++ b/shared/domain/src/main/java/com/ivy/domain/usecase/csv/ExportCsvUseCase.kt @@ -75,7 +75,7 @@ class ExportCsvUseCase @Inject constructor( categoriesMap: Map, ): String = csvRow { // Date - csvAppend(date?.csvFormat()) + csvAppend(date?.csvFormat(timeConverter)) // Title csvAppend(title?.value) // Category @@ -101,7 +101,7 @@ class ExportCsvUseCase @Inject constructor( // Description csvAppend(description?.value) // Due Date - csvAppend(dueData?.csvFormat()) + csvAppend(dueData?.csvFormat(timeConverter)) // ID csvAppend(id.value.toString()) } @@ -188,7 +188,7 @@ class ExportCsvUseCase @Inject constructor( id = id ) - private fun Instant.csvFormat(): String { + private fun Instant.csvFormat(timeConverter: TimeConverter): String { return with(timeConverter) { this@csvFormat.toLocalDateTime() }.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME) diff --git a/shared/domain/src/test/java/com/ivy/domain/usecase/csv/ExportCsvUseCasePropertyTest.kt b/shared/domain/src/test/java/com/ivy/domain/usecase/csv/ExportCsvUseCasePropertyTest.kt index 02b4860b76..5f7071ddff 100644 --- a/shared/domain/src/test/java/com/ivy/domain/usecase/csv/ExportCsvUseCasePropertyTest.kt +++ b/shared/domain/src/test/java/com/ivy/domain/usecase/csv/ExportCsvUseCasePropertyTest.kt @@ -2,6 +2,7 @@ package com.ivy.domain.usecase.csv import arrow.core.Some import com.ivy.base.TestDispatchersProvider +import com.ivy.base.time.impl.TestTimeConverter import com.ivy.data.file.FileSystem import com.ivy.data.model.Transaction import com.ivy.data.model.getFromAccount @@ -30,6 +31,7 @@ class ExportCsvUseCasePropertyTest { private val categoryRepository = mockk(relaxed = true) private val transactionRepository = mockk() private val fileSystem = mockk() + private val timeConverter = TestTimeConverter() private lateinit var useCase: ExportCsvUseCase @@ -41,6 +43,7 @@ class ExportCsvUseCasePropertyTest { transactionRepository = transactionRepository, dispatchers = TestDispatchersProvider, fileSystem = fileSystem, + timeConverter = timeConverter, ) }