diff --git a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/TestDatabaseSetup.kt b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/DatabaseTest.kt similarity index 54% rename from core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/TestDatabaseSetup.kt rename to core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/DatabaseTest.kt index 7c0d2f1e7..4bdc32606 100644 --- a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/TestDatabaseSetup.kt +++ b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/DatabaseTest.kt @@ -1,5 +1,5 @@ /* - * Copyright 2024 The Android Open Source Project + * Copyright 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,32 +14,39 @@ * limitations under the License. */ -package com.google.samples.apps.nowinandroid.core.database +package com.google.samples.apps.nowinandroid.core.database.dao import android.content.Context import androidx.room.Room import androidx.test.core.app.ApplicationProvider -import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceDao -import com.google.samples.apps.nowinandroid.core.database.dao.TopicDao +import com.google.samples.apps.nowinandroid.core.database.NiaDatabase import org.junit.After import org.junit.Before -abstract class TestDatabaseSetup { - protected lateinit var newsResourceDao: NewsResourceDao - protected lateinit var topicDao: TopicDao - private lateinit var db: NiaDatabase + +internal abstract class DatabaseTest { + + private lateinit var db : NiaDatabase + protected lateinit var newsResourceDao : NewsResourceDao + protected lateinit var topicDao : TopicDao @Before - fun createDb() { - val context = ApplicationProvider.getApplicationContext() - db = Room.inMemoryDatabaseBuilder( - context, - NiaDatabase::class.java, - ).build() + fun setup() { + db = run { + val context = ApplicationProvider.getApplicationContext() + Room.inMemoryDatabaseBuilder( + context, + NiaDatabase::class.java, + ).build() + } newsResourceDao = db.newsResourceDao() topicDao = db.topicDao() } @After - fun closeDb() = db.close() + fun closeDb(){ + db.close() + } } + + diff --git a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt index 86af0fa21..3564e2eea 100644 --- a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt +++ b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt @@ -16,7 +16,6 @@ package com.google.samples.apps.nowinandroid.core.database.dao -import com.google.samples.apps.nowinandroid.core.database.TestDatabaseSetup import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceEntity import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceTopicCrossRef import com.google.samples.apps.nowinandroid.core.database.model.TopicEntity @@ -27,9 +26,10 @@ import kotlinx.datetime.Instant import org.junit.Test import kotlin.test.assertEquals -class NewsResourceDaoTest : TestDatabaseSetup() { +internal class NewsResourceDaoTest : DatabaseTest() { + @Test - fun newsResourceDao_fetches_items_by_descending_publish_date() = runTest { + fun getNewsResources_allEntries_areOrderedByPublishDateDesc() = runTest { val newsResourceEntities = listOf( testNewsResource( id = "0", @@ -64,7 +64,7 @@ class NewsResourceDaoTest : TestDatabaseSetup() { } @Test - fun newsResourceDao_filters_items_by_news_ids_by_descending_publish_date() = runTest { + fun getNewsResources_filteredById_areOrderedByDescendingPublishDate() = runTest { val newsResourceEntities = listOf( testNewsResource( id = "0", @@ -102,7 +102,7 @@ class NewsResourceDaoTest : TestDatabaseSetup() { } @Test - fun newsResourceDao_filters_items_by_topic_ids_by_descending_publish_date() = runTest { + fun getNewsResources_filteredByTopicId_areOrderedByDescendingPublishDate() = runTest { val topicEntities = listOf( testTopicEntity( id = "1", @@ -162,7 +162,7 @@ class NewsResourceDaoTest : TestDatabaseSetup() { } @Test - fun newsResourceDao_filters_items_by_news_and_topic_ids_by_descending_publish_date() = runTest { + fun getNewsResources_filteredByIdAndTopicId_areOrderedByDescendingPublishDate() = runTest { val topicEntities = listOf( testTopicEntity( id = "1", @@ -224,7 +224,7 @@ class NewsResourceDaoTest : TestDatabaseSetup() { } @Test - fun newsResourceDao_deletes_items_by_ids() = + fun deleteNewsResources_byId() = runTest { val newsResourceEntities = listOf( testNewsResource( diff --git a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/TopicDaoTest.kt b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/TopicDaoTest.kt index 4d78ade5d..5fdae3df3 100644 --- a/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/TopicDaoTest.kt +++ b/core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/TopicDaoTest.kt @@ -16,16 +16,16 @@ package com.google.samples.apps.nowinandroid.core.database.dao -import com.google.samples.apps.nowinandroid.core.database.TestDatabaseSetup import com.google.samples.apps.nowinandroid.core.database.model.TopicEntity import kotlinx.coroutines.flow.first import kotlinx.coroutines.test.runTest import org.junit.Test import kotlin.test.assertEquals -class TopicDaoTest : TestDatabaseSetup() { +internal class TopicDaoTest : DatabaseTest() { + @Test - fun topicDao_fetchTopics() = runTest { + fun getTopics() = runTest { insertTopics() val savedTopics = topicDao.getTopicEntities().first() @@ -37,7 +37,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_getSingleTopicEntity() = runTest { + fun getTopic() = runTest { insertTopics() val savedTopicEntity = topicDao.getTopicEntity("2").first() @@ -46,7 +46,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_getOneOffTopicEntity() = runTest { + fun getTopics_oneOff() = runTest { insertTopics() val savedTopics = topicDao.getOneOffTopicEntities() @@ -58,7 +58,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_getTopicEntities_ByIds() = runTest { + fun getTopics_byId() = runTest { insertTopics() val savedTopics = topicDao.getTopicEntities(setOf("1", "2")) @@ -68,7 +68,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_IgnoreNewEntry_If_EntityExists() = runTest { + fun insertTopic_newEntryIsIgnoredIfAlreadyExists() = runTest { insertTopics() topicDao.insertOrIgnoreTopics( listOf(testTopicEntity("1", "compose")), @@ -80,7 +80,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_Upsert_Entities() = runTest { + fun upsertTopic_existingEntryIsUpdated() = runTest { insertTopics() topicDao.upsertTopics( listOf(testTopicEntity("1", "newName")), @@ -93,7 +93,7 @@ class TopicDaoTest : TestDatabaseSetup() { } @Test - fun topicDao_Delete_Entities() = runTest { + fun deleteTopics_byId_existingEntriesAreDeleted() = runTest { insertTopics() topicDao.deleteTopics(listOf("1", "2"))