Skip to content
This repository has been archived by the owner on Nov 5, 2024. It is now read-only.

Commit

Permalink
fix csv export (#3444)
Browse files Browse the repository at this point in the history
* fix csv export

* use timeconverter API

* fix detekt

* implement TestTimeConverter and fix ExportCsvUseCasePropertyTest

* fix TestTimeConverter

* WIP : fix gradle error
  • Loading branch information
akashs056 authored Sep 1, 2024
1 parent 207974c commit 607f6b2
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
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.LocalTime
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 Instant.toLocalTime(): LocalTime {
return this.atZone(utcZoneId).toLocalTime()
}

override fun LocalDateTime.toUTC(): Instant {
return this.atZone(utcZoneId).toInstant()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.net.Uri
import arrow.core.Either
import com.ivy.base.model.TransactionType
import com.ivy.base.threading.DispatchersProvider
import com.ivy.base.time.TimeConverter
import com.ivy.data.file.FileSystem
import com.ivy.data.model.Account
import com.ivy.data.model.AccountId
Expand All @@ -23,7 +24,6 @@ import org.apache.commons.text.StringEscapeUtils
import java.text.DecimalFormat
import java.text.DecimalFormatSymbols
import java.time.Instant
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.util.Locale
import javax.inject.Inject
Expand All @@ -34,7 +34,8 @@ class ExportCsvUseCase @Inject constructor(
private val categoryRepository: CategoryRepository,
private val transactionRepository: TransactionRepository,
private val dispatchers: DispatchersProvider,
private val fileSystem: FileSystem
private val fileSystem: FileSystem,
private val timeConverter: TimeConverter
) {

suspend fun exportToFile(
Expand Down Expand Up @@ -74,7 +75,7 @@ class ExportCsvUseCase @Inject constructor(
categoriesMap: Map<CategoryId, Category>,
): String = csvRow {
// Date
csvAppend(date?.csvFormat())
csvAppend(date?.csvFormat(timeConverter))
// Title
csvAppend(title?.value)
// Category
Expand All @@ -100,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())
}
Expand Down Expand Up @@ -187,8 +188,10 @@ class ExportCsvUseCase @Inject constructor(
id = id
)

private fun Instant.csvFormat(): String {
return this.atZone(ZoneId.of("UTC")).toLocalDateTime().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
private fun Instant.csvFormat(timeConverter: TimeConverter): String {
return with(timeConverter) {
this@csvFormat.toLocalDateTime()
}.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
}

private fun Double.csvFormat(): String = DecimalFormat(NUMBER_FORMAT).apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -30,6 +31,7 @@ class ExportCsvUseCasePropertyTest {
private val categoryRepository = mockk<CategoryRepository>(relaxed = true)
private val transactionRepository = mockk<TransactionRepository>()
private val fileSystem = mockk<FileSystem>()
private val timeConverter = TestTimeConverter()

private lateinit var useCase: ExportCsvUseCase

Expand All @@ -41,6 +43,7 @@ class ExportCsvUseCasePropertyTest {
transactionRepository = transactionRepository,
dispatchers = TestDispatchersProvider,
fileSystem = fileSystem,
timeConverter = timeConverter
)
}

Expand Down

0 comments on commit 607f6b2

Please sign in to comment.