From 4d5049616ddee7789e0fddf64fab28d40941fefc Mon Sep 17 00:00:00 2001 From: Jacob Bosco Date: Sat, 29 Oct 2022 13:19:00 +0530 Subject: [PATCH] WTA #44: Moved RecalculateLatestStreakService to use-cases package. --- .idea/runConfigurations/Home_Unit_Tests.xml | 23 +++++++++++++++++++ .../usecases/CalculateCurrentStreakUC.kt | 5 ++-- .../RecalculateLatestStreakUC.kt} | 5 ++-- .../usecases/CalculateCurrentStreakUCRobot.kt | 5 ++-- .../RecalculateLatestStreakUCRobot.kt} | 10 ++++---- .../RecalculateLatestStreakUCTest.kt} | 8 +++---- 6 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 .idea/runConfigurations/Home_Unit_Tests.xml rename home/src/main/java/com/jacob/wakatimeapp/home/domain/{RecalculateLatestStreakService.kt => usecases/RecalculateLatestStreakUC.kt} (90%) rename home/src/test/java/com/jacob/wakatimeapp/home/domain/{RecalculateLatestStreakServiceRobot.kt => usecases/RecalculateLatestStreakUCRobot.kt} (88%) rename home/src/test/java/com/jacob/wakatimeapp/home/domain/{RecalculateLatestStreakServiceTest.kt => usecases/RecalculateLatestStreakUCTest.kt} (98%) diff --git a/.idea/runConfigurations/Home_Unit_Tests.xml b/.idea/runConfigurations/Home_Unit_Tests.xml new file mode 100644 index 00000000..fc4c95c2 --- /dev/null +++ b/.idea/runConfigurations/Home_Unit_Tests.xml @@ -0,0 +1,23 @@ + + + + + + + false + true + false + + + \ No newline at end of file diff --git a/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUC.kt b/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUC.kt index a9e32989..99d965dc 100644 --- a/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUC.kt +++ b/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUC.kt @@ -8,7 +8,6 @@ import com.jacob.wakatimeapp.core.models.Error import com.jacob.wakatimeapp.core.models.Time import com.jacob.wakatimeapp.home.data.local.HomePageCache import com.jacob.wakatimeapp.home.domain.InstantProvider -import com.jacob.wakatimeapp.home.domain.RecalculateLatestStreakService import com.jacob.wakatimeapp.home.domain.getLatestStreakInRange import com.jacob.wakatimeapp.home.domain.models.StreakRange import javax.inject.Inject @@ -21,7 +20,7 @@ import kotlinx.datetime.minus class CalculateCurrentStreakUC @Inject constructor( private val homePageCache: HomePageCache, private val instantProvider: InstantProvider, - private val recalculateLatestStreakService: RecalculateLatestStreakService, + private val recalculateLatestStreakUC: RecalculateLatestStreakUC, ) { suspend operator fun invoke(): Either = either { @@ -61,7 +60,7 @@ class CalculateCurrentStreakUC @Inject constructor( private suspend fun whenFailedToCombine( recalculatedStreakForLast7Days: StreakRange, ) = when (recalculatedStreakForLast7Days.days) { - 7 -> recalculateLatestStreakService.calculate( + 7 -> recalculateLatestStreakUC.calculate( start = instantProvider.now().toDate().minus(7, DateTimeUnit.DAY), value = 1, unit = DateTimeUnit.MONTH diff --git a/home/src/main/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakService.kt b/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUC.kt similarity index 90% rename from home/src/main/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakService.kt rename to home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUC.kt index ccb2832b..2894da92 100644 --- a/home/src/main/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakService.kt +++ b/home/src/main/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUC.kt @@ -1,9 +1,10 @@ -package com.jacob.wakatimeapp.home.domain +package com.jacob.wakatimeapp.home.domain.usecases import arrow.core.Either import arrow.core.computations.either import com.jacob.wakatimeapp.core.models.Error import com.jacob.wakatimeapp.home.data.network.HomePageNetworkData +import com.jacob.wakatimeapp.home.domain.getLatestStreakInRange import com.jacob.wakatimeapp.home.domain.models.StreakRange import javax.inject.Inject import javax.inject.Singleton @@ -14,7 +15,7 @@ import kotlinx.datetime.daysUntil import kotlinx.datetime.minus @Singleton -class RecalculateLatestStreakService @Inject constructor( +class RecalculateLatestStreakUC @Inject constructor( private val homePageNetworkData: HomePageNetworkData, ) { suspend fun calculate( diff --git a/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUCRobot.kt b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUCRobot.kt index 2130bb52..7dad6afb 100644 --- a/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUCRobot.kt +++ b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/CalculateCurrentStreakUCRobot.kt @@ -5,7 +5,6 @@ import com.jacob.wakatimeapp.core.models.Error import com.jacob.wakatimeapp.core.models.Time import com.jacob.wakatimeapp.home.data.local.HomePageCache import com.jacob.wakatimeapp.home.domain.InstantProvider -import com.jacob.wakatimeapp.home.domain.RecalculateLatestStreakService import com.jacob.wakatimeapp.home.domain.models.Last7DaysStats import com.jacob.wakatimeapp.home.domain.models.StreakRange import io.kotest.assertions.asClue @@ -29,7 +28,7 @@ internal class CalculateCurrentStreakUCRobot { private var result: Either? = null private val mockCache: HomePageCache = mockk(relaxUnitFun = true) - private val mockRecalculateStreak: RecalculateLatestStreakService = mockk() + private val mockRecalculateStreak: RecalculateLatestStreakUC = mockk() fun buildUseCase() = apply { clearMocks(mockCache, mockRecalculateStreak) @@ -42,7 +41,7 @@ internal class CalculateCurrentStreakUCRobot { override fun now() = currentDayInstant }, homePageCache = mockCache, - recalculateLatestStreakService = mockRecalculateStreak, + recalculateLatestStreakUC = mockRecalculateStreak, ) } diff --git a/home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceRobot.kt b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCRobot.kt similarity index 88% rename from home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceRobot.kt rename to home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCRobot.kt index bf3a289b..ab42edcd 100644 --- a/home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceRobot.kt +++ b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCRobot.kt @@ -1,4 +1,4 @@ -package com.jacob.wakatimeapp.home.domain +package com.jacob.wakatimeapp.home.domain.usecases import arrow.core.Either import com.jacob.wakatimeapp.core.models.DailyStats @@ -17,8 +17,8 @@ import kotlinx.datetime.DateTimeUnit import kotlinx.datetime.LocalDate import kotlinx.datetime.plus -internal class RecalculateLatestStreakServiceRobot { - private lateinit var service: RecalculateLatestStreakService +internal class RecalculateLatestStreakUCRobot { + private lateinit var useCase: RecalculateLatestStreakUC private val mockHomePageNetworkData: HomePageNetworkData = mockk() @@ -28,11 +28,11 @@ internal class RecalculateLatestStreakServiceRobot { clearMocks(mockHomePageNetworkData) result = null - service = RecalculateLatestStreakService(mockHomePageNetworkData) + useCase = RecalculateLatestStreakUC(mockHomePageNetworkData) } suspend fun calculate(start: LocalDate, value: Int, unit: DateTimeUnit.DateBased) = apply { - result = service.calculate( + result = useCase.calculate( start, value, unit, diff --git a/home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceTest.kt b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCTest.kt similarity index 98% rename from home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceTest.kt rename to home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCTest.kt index 2d0b5312..01bff848 100644 --- a/home/src/test/java/com/jacob/wakatimeapp/home/domain/RecalculateLatestStreakServiceTest.kt +++ b/home/src/test/java/com/jacob/wakatimeapp/home/domain/usecases/RecalculateLatestStreakUCTest.kt @@ -1,11 +1,11 @@ -package com.jacob.wakatimeapp.home.domain +package com.jacob.wakatimeapp.home.domain.usecases import arrow.core.right import com.jacob.wakatimeapp.core.models.Stats import com.jacob.wakatimeapp.core.models.StatsRange import com.jacob.wakatimeapp.core.models.Time -import com.jacob.wakatimeapp.home.domain.RecalculateLatestStreakServiceRobot.Companion.createDailyStats import com.jacob.wakatimeapp.home.domain.models.StreakRange +import com.jacob.wakatimeapp.home.domain.usecases.RecalculateLatestStreakUCRobot.Companion.createDailyStats import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest import kotlinx.datetime.DateTimeUnit @@ -16,8 +16,8 @@ import kotlinx.datetime.toLocalDate import org.junit.jupiter.api.Test @OptIn(ExperimentalCoroutinesApi::class) -internal class RecalculateLatestStreakServiceTest { - private val robot = RecalculateLatestStreakServiceRobot() +internal class RecalculateLatestStreakUCTest { + private val robot = RecalculateLatestStreakUCRobot() @Test internal fun `when called with duration and there is no valid streak, then return empty streak`() =