diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8d4639f..20b43fe 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -121,6 +121,7 @@ dependencies { androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.test.rules) + androidTestImplementation(libs.truth) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) } diff --git a/app/src/androidTest/java/de/jeanlucmakiola/calendula/data/calendar/CalendarRepositorySmokeTest.kt b/app/src/androidTest/java/de/jeanlucmakiola/calendula/data/calendar/CalendarRepositorySmokeTest.kt new file mode 100644 index 0000000..1fd3236 --- /dev/null +++ b/app/src/androidTest/java/de/jeanlucmakiola/calendula/data/calendar/CalendarRepositorySmokeTest.kt @@ -0,0 +1,45 @@ +package de.jeanlucmakiola.calendula.data.calendar + +import android.Manifest +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.rule.GrantPermissionRule +import com.google.common.truth.Truth.assertThat +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.runBlocking +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import kotlin.time.Instant + +@RunWith(AndroidJUnit4::class) +class CalendarRepositorySmokeTest { + + @get:Rule + val permissionRule: GrantPermissionRule = + GrantPermissionRule.grant(Manifest.permission.READ_CALENDAR) + + private val context = InstrumentationRegistry.getInstrumentation().targetContext + + private fun newRepo(): CalendarRepositoryImpl { + val dataSource = AndroidCalendarDataSource(context) + return CalendarRepositoryImpl(dataSource, Dispatchers.IO) + } + + @Test + fun calendars_returnsListWithoutCrashing() = runBlocking { + val repo = newRepo() + val first = repo.calendars().first() + assertThat(first).isNotNull() + } + + @Test + fun instances_returnsListWithoutCrashing() = runBlocking { + val repo = newRepo() + val now = Instant.fromEpochMilliseconds(System.currentTimeMillis()) + val oneDayLater = Instant.fromEpochMilliseconds(System.currentTimeMillis() + 86_400_000L) + val first = repo.instances(now..oneDayLater).first() + assertThat(first).isNotNull() + } +}