Skip to content

Instantly share code, notes, and snippets.

@graffiti75
Created November 23, 2018 20:58
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save graffiti75/2f4c7d81728ec7fc297f242cc137fb51 to your computer and use it in GitHub Desktop.
Save graffiti75/2f4c7d81728ec7fc297f242cc137fb51 to your computer and use it in GitHub Desktop.
From project "GithubTrending", module "Cache"
package br.cericatto.cache
import android.arch.core.executor.testing.InstantTaskExecutorRule
import android.arch.persistence.room.Room
import br.cericatto.cache.db.ProjectsDatabase
import br.cericatto.cache.mapper.CachedProjectMapper
import br.cericatto.cache.test.factory.ProjectDataFactory
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
@RunWith(RobolectricTestRunner::class)
class ProjectsCacheImplTest {
@get:Rule
var instantTaskExecutorRule = InstantTaskExecutorRule()
private val database = Room.inMemoryDatabaseBuilder(RuntimeEnvironment.application.applicationContext,
ProjectsDatabase::class.java)
.allowMainThreadQueries()
.build()
private val entityMapper = CachedProjectMapper()
private val cache = ProjectsCacheImpl(database, entityMapper)
@Test
fun clearTablesCompletes() {
val testObserver = cache.clearProjects().test()
testObserver.assertComplete()
}
@Test
fun saveProjectsCompletes() {
val projects = listOf(ProjectDataFactory.makeProjectEntity())
val testObserver = cache.saveProjects(projects).test()
testObserver.assertComplete()
}
@Test
fun getProjectsReturnsData() {
val projects = listOf(ProjectDataFactory.makeProjectEntity())
cache.saveProjects(projects).test()
val testObserver = cache.getProjects().test()
testObserver.assertValue(projects)
}
@Test
fun getBookmarkedProjectsReturnsData() {
val bookmarkedProject = ProjectDataFactory.makeBookmarkedProjectEntity()
val projects = listOf(ProjectDataFactory.makeProjectEntity(),
bookmarkedProject)
cache.saveProjects(projects).test()
val testObserver = cache.getBookmarkedProjects().test()
testObserver.assertValue(listOf(bookmarkedProject))
}
@Test
fun setProjectAsBookmarkedCompletes() {
val projects = listOf(ProjectDataFactory.makeProjectEntity())
cache.saveProjects(projects).test()
val testObserver = cache.setProjectAsBookmarked(projects[0].id).test()
testObserver.assertComplete()
}
@Test
fun setProjectAsNotBookmarkedCompletes() {
val projects = listOf(ProjectDataFactory.makeBookmarkedProjectEntity())
cache.saveProjects(projects).test()
val testObserver = cache.setProjectAsNotBookmarked(projects[0].id).test()
testObserver.assertComplete()
}
@Test
fun areProjectsCacheReturnsData() {
val projects = listOf(ProjectDataFactory.makeProjectEntity())
cache.saveProjects(projects).test()
val testObserver = cache.areProjectsCached().test()
testObserver.assertValue(true)
}
@Test
fun setLastCacheTimeCompletes() {
val testObserver = cache.setLastCacheTime(1000L).test()
testObserver.assertComplete()
}
@Test
fun isProjectsCacheExpiredReturnsExpired() {
val testObserver = cache.isProjectsCacheExpired().test()
testObserver.assertValue(true)
}
@Test
fun isProjectsCacheExpiredReturnsNotExpired() {
cache.setLastCacheTime(System.currentTimeMillis() - 1000).test()
val testObserver = cache.isProjectsCacheExpired().test()
testObserver.assertValue(false)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment