Rename API and update test.

This commit is contained in:
Benoit Marty 2025-09-05 15:59:36 +02:00 committed by Benoit Marty
parent 06bcbb8bb8
commit 8e819d48ed
4 changed files with 9 additions and 7 deletions

View file

@ -11,7 +11,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
interface SessionStore { interface SessionStore {
fun isLoggedIn(): Flow<LoggedInState> fun loggedInStateFlow(): Flow<LoggedInState>
fun sessionsFlow(): Flow<List<SessionData>> fun sessionsFlow(): Flow<List<SessionData>>
suspend fun addSession(sessionData: SessionData) suspend fun addSession(sessionData: SessionData)

View file

@ -33,7 +33,7 @@ class DatabaseSessionStore(
) : SessionStore { ) : SessionStore {
private val sessionDataMutex = Mutex() private val sessionDataMutex = Mutex()
override fun isLoggedIn(): Flow<LoggedInState> { override fun loggedInStateFlow(): Flow<LoggedInState> {
return database.sessionDataQueries.selectFirst() return database.sessionDataQueries.selectFirst()
.asFlow() .asFlow()
.mapToOneOrNull(dispatchers.io) .mapToOneOrNull(dispatchers.io)

View file

@ -54,12 +54,14 @@ class DatabaseSessionStoreTest {
} }
@Test @Test
fun `isLoggedIn emits true while there are sessions in the DB`() = runTest { fun `loggedInStateFlow emits LoggedIn while there are sessions in the DB`() = runTest {
databaseSessionStore.isLoggedIn().test { databaseSessionStore.loggedInStateFlow().test {
assertThat(awaitItem()).isEqualTo(LoggedInState.NotLoggedIn) assertThat(awaitItem()).isEqualTo(LoggedInState.NotLoggedIn)
database.sessionDataQueries.insertSessionData(aSessionData) databaseSessionStore.addSession(aSessionData.toApiModel())
assertThat(awaitItem()).isEqualTo(LoggedInState.LoggedIn(sessionId = aSessionData.userId, isTokenValid = true)) assertThat(awaitItem()).isEqualTo(LoggedInState.LoggedIn(sessionId = aSessionData.userId, isTokenValid = true))
database.sessionDataQueries.removeSession(aSessionData.userId) // TODO add more sessions in multi-account PR.
// Remove the first session
databaseSessionStore.removeSession(aSessionData.userId)
assertThat(awaitItem()).isEqualTo(LoggedInState.NotLoggedIn) assertThat(awaitItem()).isEqualTo(LoggedInState.NotLoggedIn)
} }
} }

View file

@ -20,7 +20,7 @@ class InMemorySessionStore(
) : SessionStore { ) : SessionStore {
private val sessionDataListFlow = MutableStateFlow(initialList) private val sessionDataListFlow = MutableStateFlow(initialList)
override fun isLoggedIn(): Flow<LoggedInState> { override fun loggedInStateFlow(): Flow<LoggedInState> {
return sessionDataListFlow.map { return sessionDataListFlow.map {
if (it.isEmpty()) { if (it.isEmpty()) {
LoggedInState.NotLoggedIn LoggedInState.NotLoggedIn