Skip to content

Commit fbfe6ac

Browse files
authored
Up Next History - Add db, dao, manager classes (#3795)
1 parent 6ec4aa9 commit fbfe6ac

File tree

12 files changed

+2295
-2
lines changed

12 files changed

+2295
-2
lines changed

app/src/androidTest/java/au/com/shiftyjelly/pocketcasts/models/db/AppDatabaseTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ class AppDatabaseTest {
180180
AppDatabase.MIGRATION_108_109,
181181
AppDatabase.MIGRATION_109_110,
182182
AppDatabase.MIGRATION_110_111,
183+
AppDatabase.MIGRATION_111_112,
183184
)
184185
.build()
185186
// close the database and release any stream resources when the test finishes
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package au.com.shiftyjelly.pocketcasts.models.db
2+
3+
import androidx.room.Room
4+
import androidx.test.ext.junit.runners.AndroidJUnit4
5+
import androidx.test.platform.app.InstrumentationRegistry
6+
import au.com.shiftyjelly.pocketcasts.models.db.dao.UpNextDao
7+
import au.com.shiftyjelly.pocketcasts.models.db.dao.UpNextHistoryDao
8+
import au.com.shiftyjelly.pocketcasts.models.di.ModelModule
9+
import au.com.shiftyjelly.pocketcasts.models.di.addTypeConverters
10+
import au.com.shiftyjelly.pocketcasts.models.entity.PodcastEpisode
11+
import au.com.shiftyjelly.pocketcasts.models.entity.toUpNextEpisode
12+
import com.squareup.moshi.Moshi
13+
import java.util.Date
14+
import junit.framework.TestCase.assertEquals
15+
import kotlinx.coroutines.test.runTest
16+
import org.junit.After
17+
import org.junit.Before
18+
import org.junit.Test
19+
import org.junit.runner.RunWith
20+
21+
@RunWith(AndroidJUnit4::class)
22+
class UpNextHistoryDaoTest {
23+
private lateinit var testDb: AppDatabase
24+
private lateinit var upNextHistoryDao: UpNextHistoryDao
25+
private lateinit var upNextDao: UpNextDao
26+
private val episodeUuid = "episode_uuid"
27+
28+
@Before
29+
fun setup() {
30+
val context = InstrumentationRegistry.getInstrumentation().targetContext
31+
testDb = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java)
32+
.addTypeConverters(ModelModule.provideRoomConverters(Moshi.Builder().build()))
33+
.build()
34+
upNextHistoryDao = testDb.upNextHistoryDao()
35+
upNextDao = testDb.upNextDao()
36+
val episode = PodcastEpisode(uuid = episodeUuid, publishedDate = Date())
37+
upNextDao.insertBlocking(episode.toUpNextEpisode())
38+
}
39+
40+
@After
41+
fun closeDb() {
42+
upNextDao.deleteAllBlocking()
43+
testDb.close()
44+
}
45+
46+
@Test
47+
fun insertHistoryForDate() = runTest {
48+
val date = Date()
49+
50+
upNextHistoryDao.insertHistoryForDate(date)
51+
52+
val entries = upNextHistoryDao.findAllHistoryEntries()
53+
assertEquals(1, entries.size)
54+
assertEquals(date, entries[0].date)
55+
}
56+
57+
@Test
58+
fun doNotInsertHistoryForExistingDate() = runTest {
59+
val date = Date()
60+
61+
upNextHistoryDao.insertHistoryForDate(date)
62+
upNextHistoryDao.insertHistoryForDate(date)
63+
64+
val entries = upNextHistoryDao.findAllHistoryEntries()
65+
assertEquals(1, entries.size)
66+
assertEquals(date, entries[0].date)
67+
}
68+
69+
@Test
70+
fun findAllHistoryEntriesShouldReturnEntriesByDateDescending() = runTest {
71+
val date1 = Date()
72+
val date2 = Date(date1.time + 1000)
73+
74+
upNextHistoryDao.insertHistoryForDate(date1)
75+
upNextHistoryDao.insertHistoryForDate(date2)
76+
77+
val entries = upNextHistoryDao.findAllHistoryEntries()
78+
assertEquals(listOf<Date>(date2, date1), entries.map { it.date })
79+
}
80+
81+
@Test
82+
fun findEpisodeUuidsForDateReturnCorrectUuids() = runTest {
83+
val date = Date()
84+
upNextHistoryDao.insertHistoryForDate(date)
85+
86+
val uuids = upNextHistoryDao.findEpisodeUuidsForDate(date)
87+
88+
assertEquals(1, uuids.size)
89+
assertEquals(listOf<String>(episodeUuid), uuids)
90+
}
91+
92+
@Test
93+
fun deleteHistoryOnOrBeforeDateShouldDeleteEntriesCorrectly() = runTest {
94+
val date1 = Date()
95+
val date2 = Date(date1.time + 1000)
96+
val date3 = Date(date1.time + 2000)
97+
upNextHistoryDao.insertHistoryForDate(date1)
98+
upNextHistoryDao.insertHistoryForDate(date2)
99+
upNextHistoryDao.insertHistoryForDate(date3)
100+
101+
upNextHistoryDao.deleteHistoryOnOrBeforeDate(date2)
102+
103+
val entries = upNextHistoryDao.findAllHistoryEntries()
104+
assertEquals(1, entries.size)
105+
assertEquals(date3, entries[0].date)
106+
}
107+
}

0 commit comments

Comments
 (0)