DBTest.kt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.sduduzog.slimlauncher
  2. import androidx.arch.core.executor.testing.InstantTaskExecutorRule
  3. import androidx.lifecycle.Observer
  4. import androidx.room.Room
  5. import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner
  6. import androidx.test.platform.app.InstrumentationRegistry
  7. import com.sduduzog.slimlauncher.data.App
  8. import com.sduduzog.slimlauncher.data.AppDao
  9. import com.sduduzog.slimlauncher.data.DataRoomDatabase
  10. import org.hamcrest.CoreMatchers.equalTo
  11. import org.junit.After
  12. import org.junit.Assert.assertThat
  13. import org.junit.Before
  14. import org.junit.Rule
  15. import org.junit.Test
  16. import org.junit.runner.RunWith
  17. import java.util.concurrent.CountDownLatch
  18. import java.util.concurrent.TimeUnit
  19. @RunWith(AndroidJUnit4ClassRunner::class)
  20. class DBTest {
  21. private var mAppDao: AppDao? = null
  22. private var mDb: DataRoomDatabase? = null
  23. @get:Rule
  24. var instantTaskExecutorRule = InstantTaskExecutorRule()
  25. @Before
  26. fun createDb() {
  27. val context = InstrumentationRegistry.getInstrumentation().targetContext
  28. mDb = Room.inMemoryDatabaseBuilder(context, DataRoomDatabase::class.java).build()
  29. mAppDao = mDb!!.appDao()
  30. }
  31. @After
  32. fun closeDb() {
  33. mDb?.close()
  34. }
  35. @Test
  36. @Throws(InterruptedException::class)
  37. fun testInsertLiveDataApps() {
  38. val app = App("TestApp", "com.test.test.app", "TestMainActivity")
  39. mAppDao!!.insert(app)
  40. var appsInstalled: List<App> = listOf()
  41. val latch = CountDownLatch(1)
  42. val appsLiveData = mAppDao!!.apps
  43. val observer = Observer<List<App>> {
  44. appsInstalled = it
  45. latch.countDown()
  46. }
  47. appsLiveData.observeForever(observer)
  48. latch.await(2, TimeUnit.SECONDS)
  49. appsLiveData.removeObserver(observer)
  50. assertThat(appsInstalled.size, equalTo(1))
  51. }
  52. }