Skip to content

Commit

Permalink
🎨 Fixed ordering of elements
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzovngl committed Jan 2, 2024
1 parent 9763fd6 commit 81e4e30
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import javax.inject.Inject
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.State
import com.lorenzovainigli.foodexpirationdates.model.entity.computeExpirationDate
import kotlinx.coroutines.async
import kotlinx.coroutines.delay

Expand All @@ -33,9 +34,17 @@ class ExpirationDatesViewModel @Inject constructor(
_isSplashScreenLoading.value = true
val deferred = async {
expirationDates = repository.getAll()
expirationDates = expirationDates.transform { list ->
val sortedList = list.sortedWith { item1, item2 ->
val expiration1 = computeExpirationDate(item1)
val expiration2 = computeExpirationDate(item2)
expiration1.compareTo(expiration2)
}
emit(sortedList)
}
}
deferred.await()
delay(1000)
deferred.await()
_isSplashScreenLoading.value = false
}
return expirationDates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,80 @@ import org.junit.Test
import org.junit.jupiter.api.Assertions.*
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date

class FoodCardKtTest {

private fun stringToCalendar(dateString: String): Calendar {
private fun String.stringToCalendar(): Calendar {
val dateFormat = SimpleDateFormat("dd/MM/yyyy")
val date = dateFormat.parse(dateString)
val date = dateFormat.parse(this)
val calendar = Calendar.getInstance()
if (date != null) {
calendar.time = date
}
return calendar
}

private fun Calendar.calendarToString(): String {
val dateFormat = SimpleDateFormat("dd/MM/yyyy")
return dateFormat.format(this.time)
}

private fun Long.timestampToString(): String {
val dateFormat = SimpleDateFormat("dd/MM/yyyy")
val date = Date(this)
return dateFormat.format(date)
}

private val dec15 = "15/12/2023"

@Test
fun computeExpirationDateTest() {
val expirationDate = stringToCalendar("15/12/2023").time.time
fun computeExpirationDateTest1() {
assertEquals(
expirationDate,
dec15,
computeExpirationDate(
expirationDate = expirationDate
))
expirationDate = dec15.stringToCalendar().time.time
).timestampToString()
)
}

@Test
fun computeExpirationDateTest2() {
assertEquals(
stringToCalendar("12/12/2023").time.time,
"12/12/2023",
computeExpirationDate(
expirationDate = expirationDate,
openingDate = stringToCalendar("10/12/2023").time.time,
expirationDate = dec15.stringToCalendar().time.time,
openingDate = "10/12/2023".stringToCalendar().time.time,
timeSpanDays = 2
)
).timestampToString()
)
}

@Test
fun computeExpirationDateTest3() {
assertEquals(
expirationDate,
dec15,
computeExpirationDate(
expirationDate = expirationDate,
openingDate = stringToCalendar("14/12/2023").time.time,
expirationDate = dec15.stringToCalendar().time.time,
openingDate = "14/12/2023".stringToCalendar().time.time,
timeSpanDays = 4
)
).timestampToString()
)
}

@Test
fun computeExpirationDateTest4() {
val dec29 = "29/12/2023"
val timeSpan = 15
assertEquals(
dec29.stringToCalendar().apply {
add(Calendar.DAY_OF_MONTH, timeSpan)
}.calendarToString(),
computeExpirationDate(
expirationDate = "31/01/2024".stringToCalendar().time.time,
openingDate = dec29.stringToCalendar().time.time,
timeSpanDays = timeSpan
).timestampToString()
)
}

Expand Down

0 comments on commit 81e4e30

Please sign in to comment.