Created
November 23, 2018 20:58
-
-
Save graffiti75/2f4c7d81728ec7fc297f242cc137fb51 to your computer and use it in GitHub Desktop.
From project "GithubTrending", module "Cache"
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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