Skip to content

Commit 6414c4d

Browse files
committed
extract common db setup
1 parent 2515867 commit 6414c4d

File tree

3 files changed

+49
-49
lines changed

3 files changed

+49
-49
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright 2024 The Android Open Source Project
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.google.samples.apps.nowinandroid.core.database
18+
19+
import android.content.Context
20+
import androidx.room.Room
21+
import androidx.test.core.app.ApplicationProvider
22+
import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceDao
23+
import com.google.samples.apps.nowinandroid.core.database.dao.TopicDao
24+
import org.junit.After
25+
import org.junit.Before
26+
27+
abstract class TestDatabaseSetup {
28+
protected lateinit var newsResourceDao: NewsResourceDao
29+
protected lateinit var topicDao: TopicDao
30+
private lateinit var db: NiaDatabase
31+
32+
@Before
33+
fun createDb() {
34+
val context = ApplicationProvider.getApplicationContext<Context>()
35+
db = Room.inMemoryDatabaseBuilder(
36+
context,
37+
NiaDatabase::class.java,
38+
).build()
39+
newsResourceDao = db.newsResourceDao()
40+
topicDao = db.topicDao()
41+
}
42+
43+
@After
44+
fun closeDb() = db.close()
45+
}

core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,42 +16,18 @@
1616

1717
package com.google.samples.apps.nowinandroid.core.database.dao
1818

19-
import android.content.Context
20-
import androidx.room.Room
21-
import androidx.test.core.app.ApplicationProvider
22-
import com.google.samples.apps.nowinandroid.core.database.NiaDatabase
19+
import com.google.samples.apps.nowinandroid.core.database.TestDatabaseSetup
2320
import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceEntity
2421
import com.google.samples.apps.nowinandroid.core.database.model.NewsResourceTopicCrossRef
2522
import com.google.samples.apps.nowinandroid.core.database.model.TopicEntity
2623
import com.google.samples.apps.nowinandroid.core.database.model.asExternalModel
2724
import kotlinx.coroutines.flow.first
2825
import kotlinx.coroutines.test.runTest
2926
import kotlinx.datetime.Instant
30-
import org.junit.After
31-
import org.junit.Before
3227
import org.junit.Test
3328
import kotlin.test.assertEquals
3429

35-
class NewsResourceDaoTest {
36-
37-
private lateinit var newsResourceDao: NewsResourceDao
38-
private lateinit var topicDao: TopicDao
39-
private lateinit var db: NiaDatabase
40-
41-
@Before
42-
fun createDb() {
43-
val context = ApplicationProvider.getApplicationContext<Context>()
44-
db = Room.inMemoryDatabaseBuilder(
45-
context,
46-
NiaDatabase::class.java,
47-
).build()
48-
newsResourceDao = db.newsResourceDao()
49-
topicDao = db.topicDao()
50-
}
51-
52-
@After
53-
fun closeDb() = db.close()
54-
30+
class NewsResourceDaoTest : TestDatabaseSetup() {
5531
@Test
5632
fun newsResourceDao_fetches_items_by_descending_publish_date() = runTest {
5733
val newsResourceEntities = listOf(

core/database/src/androidTest/kotlin/com/google/samples/apps/nowinandroid/core/database/dao/TopicDaoTest.kt

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,14 @@
1616

1717
package com.google.samples.apps.nowinandroid.core.database.dao
1818

19-
import android.content.Context
20-
import androidx.room.Room
21-
import androidx.test.core.app.ApplicationProvider
22-
import com.google.samples.apps.nowinandroid.core.database.NiaDatabase
19+
import com.google.samples.apps.nowinandroid.core.database.TestDatabaseSetup
2320
import com.google.samples.apps.nowinandroid.core.database.model.TopicEntity
2421
import kotlinx.coroutines.flow.first
2522
import kotlinx.coroutines.test.runTest
26-
import org.junit.After
27-
import org.junit.Before
2823
import org.junit.Test
2924
import kotlin.test.assertEquals
3025

31-
class TopicDaoTest {
32-
private lateinit var topicDao: TopicDao
33-
private lateinit var db: NiaDatabase
34-
35-
@Before
36-
fun createDb() {
37-
val context = ApplicationProvider.getApplicationContext<Context>()
38-
db = Room.inMemoryDatabaseBuilder(
39-
context,
40-
NiaDatabase::class.java,
41-
).build()
42-
topicDao = db.topicDao()
43-
}
44-
45-
@After
46-
fun closeDb() = db.close()
47-
26+
class TopicDaoTest : TestDatabaseSetup() {
4827
@Test
4928
fun topicDao_fetchTopics() = runTest {
5029
insertTopics()

0 commit comments

Comments
 (0)