Skip to content

Commit

Permalink
Fixed unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
acristescu committed Mar 22, 2023
1 parent cb85312 commit ef0cdfd
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 15 deletions.
41 changes: 35 additions & 6 deletions app/src/main/java/io/zenandroid/onlinego/di/Modules.kt
Original file line number Diff line number Diff line change
@@ -1,25 +1,54 @@
package io.zenandroid.onlinego.di

import androidx.preference.PreferenceManager
import androidx.room.Room
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import io.reactivex.schedulers.Schedulers
import io.zenandroid.onlinego.OnlineGoApplication
import io.zenandroid.onlinego.data.db.Database
import io.zenandroid.onlinego.data.ogs.*
import io.zenandroid.onlinego.data.repositories.*
import io.zenandroid.onlinego.data.ogs.HTTPConnectionFactory
import io.zenandroid.onlinego.data.ogs.OGSBooleanJsonAdapter
import io.zenandroid.onlinego.data.ogs.OGSInstantJsonAdapter
import io.zenandroid.onlinego.data.ogs.OGSRestAPI
import io.zenandroid.onlinego.data.ogs.OGSRestService
import io.zenandroid.onlinego.data.ogs.OGSWebSocketService
import io.zenandroid.onlinego.data.repositories.ActiveGamesRepository
import io.zenandroid.onlinego.data.repositories.AutomatchRepository
import io.zenandroid.onlinego.data.repositories.BotsRepository
import io.zenandroid.onlinego.data.repositories.ChallengesRepository
import io.zenandroid.onlinego.data.repositories.ChatRepository
import io.zenandroid.onlinego.data.repositories.ClockDriftRepository
import io.zenandroid.onlinego.data.repositories.FinishedGamesRepository
import io.zenandroid.onlinego.data.repositories.JosekiRepository
import io.zenandroid.onlinego.data.repositories.PlayersRepository
import io.zenandroid.onlinego.data.repositories.ServerNotificationsRepository
import io.zenandroid.onlinego.data.repositories.SettingsRepository
import io.zenandroid.onlinego.data.repositories.TutorialsRepository
import io.zenandroid.onlinego.data.repositories.UserSessionRepository
import io.zenandroid.onlinego.mvi.Store
import io.zenandroid.onlinego.playstore.PlayStoreService
import io.zenandroid.onlinego.ui.screens.face2face.FaceToFaceScreen
import io.zenandroid.onlinego.ui.screens.face2face.FaceToFaceViewModel
import io.zenandroid.onlinego.ui.screens.game.GameViewModel
import io.zenandroid.onlinego.ui.screens.joseki.*
import io.zenandroid.onlinego.ui.screens.joseki.HotTrackMiddleware
import io.zenandroid.onlinego.ui.screens.joseki.JosekiExplorerReducer
import io.zenandroid.onlinego.ui.screens.joseki.JosekiExplorerState
import io.zenandroid.onlinego.ui.screens.joseki.JosekiExplorerViewModel
import io.zenandroid.onlinego.ui.screens.joseki.LoadPositionMiddleware
import io.zenandroid.onlinego.ui.screens.joseki.TriggerLoadingMiddleware
import io.zenandroid.onlinego.ui.screens.learn.LearnViewModel
import io.zenandroid.onlinego.ui.screens.localai.AiGameReducer
import io.zenandroid.onlinego.ui.screens.localai.AiGameState
import io.zenandroid.onlinego.ui.screens.localai.AiGameViewModel
import io.zenandroid.onlinego.ui.screens.localai.middlewares.*
import io.zenandroid.onlinego.ui.screens.localai.middlewares.AIMoveMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.AnalyticsMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.EngineLifecycleMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.GameTurnMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.HintMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.OwnershipMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.StatePersistenceMiddleware
import io.zenandroid.onlinego.ui.screens.localai.middlewares.UserMoveMiddleware
import io.zenandroid.onlinego.ui.screens.mygames.MyGamesViewModel
import io.zenandroid.onlinego.ui.screens.newchallenge.selectopponent.searchplayer.SearchMiddleware
import io.zenandroid.onlinego.ui.screens.newchallenge.selectopponent.searchplayer.SearchPlayerReducer
Expand Down Expand Up @@ -180,7 +209,7 @@ private val viewModelsModule = module {
}

viewModel {
FaceToFaceViewModel(get())
FaceToFaceViewModel(get(), PreferenceManager.getDefaultSharedPreferences(OnlineGoApplication.instance.baseContext), OnlineGoApplication.instance.analytics, FirebaseCrashlytics.getInstance())
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,11 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.preference.PreferenceManager
import app.cash.molecule.AndroidUiDispatcher
import app.cash.molecule.RecompositionClock.ContextClock
import app.cash.molecule.launchMolecule
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import io.zenandroid.onlinego.OnlineGoApplication
import io.zenandroid.onlinego.data.model.BoardTheme
import io.zenandroid.onlinego.data.model.BoardTheme.WOOD
import io.zenandroid.onlinego.data.model.Cell
Expand Down Expand Up @@ -62,7 +60,9 @@ private const val HANDICAP_KEY = "FACE_TO_FACE_HANDICAP_KEY"

class FaceToFaceViewModel(
private val settingsRepository: SettingsRepository,
private val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(OnlineGoApplication.instance.baseContext),
private val prefs: SharedPreferences,
private val analytics: FirebaseAnalytics,
private val crashlytics: FirebaseCrashlytics,
testing: Boolean = false
) : ViewModel() {

Expand All @@ -82,7 +82,7 @@ class FaceToFaceViewModel(
private var newGameParameters by mutableStateOf(GameParameters(BoardSize.LARGE, 0))

init {
FirebaseAnalytics.getInstance(OnlineGoApplication.instance).logEvent("face_to_face_opened", null)
analytics.logEvent("face_to_face_opened", null)
viewModelScope.launch {
loadSavedData()
}
Expand Down Expand Up @@ -154,7 +154,7 @@ class FaceToFaceViewModel(

private suspend fun loadSavedData() {
if(prefs.contains(HISTORY_KEY) && prefs.contains(BOARD_SIZE_KEY) && prefs.contains(HANDICAP_KEY)) {
FirebaseAnalytics.getInstance(OnlineGoApplication.instance).logEvent("face_to_face_loading", null)
analytics.logEvent("face_to_face_loading", null)
var historyString: String
var sizeString: String
var handicap: Int
Expand All @@ -177,12 +177,12 @@ class FaceToFaceViewModel(
currentPosition = try {
historyPosition(history.lastIndex)
} catch (e: Exception) {
FirebaseCrashlytics.getInstance().log("FaceToFaceViewModel Cannot load history $history")
crashlytics.log("FaceToFaceViewModel Cannot load history $history")
recordException(e)
historyPosition(0)
}
loading = false
FirebaseAnalytics.getInstance(OnlineGoApplication.instance).logEvent("face_to_face_loaded", null)
analytics.logEvent("face_to_face_loaded", null)
}

override fun onCleared() {
Expand Down Expand Up @@ -279,7 +279,7 @@ class FaceToFaceViewModel(
handicap = currentGameParameters.handicap
) ?: run {
val historyString = history.fold("") { acc, cell -> "$acc ${cell.x},${cell.y}}" }
FirebaseCrashlytics.getInstance().log("FaceToFaceViewModel Cannot replay history $historyString")
crashlytics.log("FaceToFaceViewModel Cannot replay history $historyString")
recordException(IllegalStateException("Cannot replay history history=$historyString idx=$index historyIndex=$historyIndex"))
Position(
boardWidth = currentGameParameters.size.width,
Expand All @@ -293,7 +293,7 @@ class FaceToFaceViewModel(
}

private fun onCellTapUp(cell: Cell) {
FirebaseCrashlytics.getInstance().log("onCellTapUp $cell")
crashlytics.log("onCellTapUp $cell")
val pos = currentPosition
val newPosition = RulesManager.makeMove(pos, pos.nextToMove, cell)
if (newPosition != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import app.cash.molecule.RecompositionClock
import app.cash.molecule.moleculeFlow
import app.cash.turbine.test
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.crashlytics.FirebaseCrashlytics
import com.nhaarman.mockito_kotlin.any
import com.nhaarman.mockito_kotlin.mock
import com.nhaarman.mockito_kotlin.whenever
Expand Down Expand Up @@ -45,6 +47,8 @@ class FaceToFaceViewModelTest {
}

private val prefs: SharedPreferences = mock {}
private val analytics: FirebaseAnalytics = mock {}
private val crashlytics: FirebaseCrashlytics = mock {}

private lateinit var viewModel: FaceToFaceViewModel

Expand All @@ -53,6 +57,8 @@ class FaceToFaceViewModelTest {
Dispatchers.setMain(StandardTestDispatcher())
viewModel = FaceToFaceViewModel(
settingsRepository = settingsRepository,
analytics = analytics,
crashlytics = crashlytics,
prefs = prefs,
testing = true
)
Expand Down

0 comments on commit ef0cdfd

Please sign in to comment.