Skip to content

Commit

Permalink
Fixed tests
Browse files Browse the repository at this point in the history
  • Loading branch information
diareuse committed Nov 18, 2023
1 parent 0dd4d2f commit b18e638
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class FavoriteFeatureFromDatabase(

override suspend fun get(movie: Movie): Result<MovieFavorite> {
return favoriteDao.runCatching { select(movie.id).let(::requireNotNull) }.mapCatching {
println("$movieDao, ${it.movie}")
val movie = movieDao.select(it.movie)?.let(::MovieFromDatabase).let(::requireNotNull)
MovieFavoriteFromDatabase(it, movie)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ class FavoriteFeatureScheduleNotification(
.setDate(movie.screeningFrom)
.setData(ExactPulseNotificationMovie.getData(movie))
.build()
when (isFavorite && get(movie).map { !it.isNotified }.getOrDefault(false)) {
println("isfav: $isFavorite")
when (isFavorite && get(movie).onFailure { it.printStackTrace() }
.map { println("notified:${it.isNotified}"); !it.isNotified }
.getOrDefault(false)) {
true -> scheduler.schedule(request)
else -> scheduler.cancel(request)
}
Expand Down
1 change: 1 addition & 0 deletions feature-core/src/test/java/movie/core/DataPool.kt
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ interface DataPool<T> {
releasedAt = Date(0),
durationMillis = 0,
poster = "",
screeningFrom = Date(0),
video = null
)
}.map(modifier)
Expand Down
23 changes: 15 additions & 8 deletions feature-core/src/test/java/movie/core/FavoriteFeatureTest.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package movie.core

import kotlinx.coroutines.test.runTest
import movie.core.db.dao.MovieDao
import movie.core.db.dao.MovieFavoriteDao
import movie.core.db.dao.MovieMediaDao
import movie.core.di.FavoriteFeatureModule
import movie.core.mock.MoviePreviewView
import movie.core.mock.MovieFavoriteStored
import movie.core.mock.MovieStored
import movie.core.model.Movie
import movie.core.model.MoviePreview
import movie.pulse.ExactPulseScheduler
Expand All @@ -23,18 +24,18 @@ class FavoriteFeatureTest {

private lateinit var scheduler: ExactPulseScheduler
private lateinit var feature: FavoriteFeature
private lateinit var media: MovieMediaDao
private lateinit var movieDao: MovieDao
private lateinit var favorite: MovieFavoriteDao

@Before
fun prepare() {
favorite = mock()
media = mock()
movieDao = mock()
scheduler = mock {
on { schedule(any()) }.then { }
on { cancel(any()) }.then { }
}
feature = FavoriteFeatureModule().feature(favorite, media, scheduler)
feature = FavoriteFeatureModule().feature(favorite, movieDao, scheduler)
}

@Test
Expand Down Expand Up @@ -71,6 +72,7 @@ class FavoriteFeatureTest {
val movie = mock<MoviePreview> {
on { id }.thenReturn("id")
on { screeningFrom }.thenReturn(Date(0))
on { releasedAt }.thenReturn(Date(0))
}
whenever(favorite.isFavorite(movie.id)).thenReturn(false)
feature.toggle(movie).getOrThrow()
Expand All @@ -82,6 +84,7 @@ class FavoriteFeatureTest {
val movie = mock<MoviePreview> {
on { id }.thenReturn("id")
on { screeningFrom }.thenReturn(Date(0))
on { releasedAt }.thenReturn(Date(0))
}
whenever(favorite.isFavorite(movie.id)).thenReturn(true)
feature.toggle(movie).getOrThrow()
Expand Down Expand Up @@ -131,6 +134,7 @@ class FavoriteFeatureTest {
val movie = mock<MoviePreview> {
on { id }.thenReturn("id")
on { screeningFrom }.thenReturn(Date(0))
on { releasedAt }.thenReturn(Date(0))
}
whenever(favorite.isFavorite(any())).thenReturn(true)
feature.toggle(movie).getOrThrow()
Expand All @@ -141,18 +145,21 @@ class FavoriteFeatureTest {
fun toggle_schedulesAlarm() = runTest {
val movie = mock<MoviePreview> {
on { id }.thenReturn("id")
on { screeningFrom }.thenReturn(Date(0))
on { screeningFrom }.thenReturn(Date(System.currentTimeMillis() + 10000))
on { releasedAt }.thenReturn(Date(System.currentTimeMillis() + 10000))
}
whenever(favorite.isFavorite(any())).thenReturn(false)
whenever(favorite.select(movie.id)).thenReturn(MovieFavoriteStored(false))
whenever(movieDao.select(movie.id)).thenReturn(MovieStored())
feature.toggle(movie).getOrThrow()
verify(scheduler).schedule(any())
}

@Test
fun getAll_returnsValue() = runTest {
val previews = List(1) { MoviePreviewView() }
val previews = List(1) { MovieFavoriteStored() }
whenever(favorite.selectAll()).thenReturn(previews)
whenever(media.select(any())).thenReturn(emptyList())
whenever(movieDao.select(any())).thenReturn(MovieStored())
assertTrue("Values should not be empty") { feature.getAll().getOrThrow().isNotEmpty() }
}

Expand Down
12 changes: 9 additions & 3 deletions feature-core/src/test/java/movie/core/mock/MoviePreviewView.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
package movie.core.mock

import movie.core.db.model.MoviePreviewView
import movie.core.db.model.MovieFavoriteStored
import movie.core.db.model.MovieStored
import java.util.Date

fun MoviePreviewView() = mockFinal<MoviePreviewView> {
fun MovieFavoriteStored(notified: Boolean = false) = mockFinal<MovieFavoriteStored> {
override { Date(0) }
set(MovieFavoriteStored::movie, "id")
set(MovieFavoriteStored::notified, notified)
}

fun MovieStored() = mockFinal<MovieStored> {
override { Date(0) }
set(MoviePreviewView::id, "id")
}

0 comments on commit b18e638

Please sign in to comment.