Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
accountId = user.id,
Expand Down Expand Up @@ -126,7 +126,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -252,7 +252,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -331,7 +331,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -421,7 +421,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -484,7 +484,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -532,7 +532,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down Expand Up @@ -575,7 +575,7 @@ class ChatBlocksDaoTest {
runTest {
val user = createUserEntity("account1", "Account 1")
usersDao.saveUser(user)
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!

conversationsDao.upsertConversations(
account1.id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ class ChatMessagesDaoTest {
usersDao.saveUser(createUserEntity("account1", "Account 1"))
usersDao.saveUser(createUserEntity("account2", "Account 2"))

val account1 = usersDao.getUserWithUserId("account1").blockingGet()
val account2 = usersDao.getUserWithUserId("account2").blockingGet()
val account1 = usersDao.getUserWithUserId("account1")!!
val account2 = usersDao.getUserWithUserId("account2")!!

// Problem: lets say we want to update the conv list -> We don#t know the primary keys!
// with account@token that would be easier!
Expand Down
240 changes: 128 additions & 112 deletions app/src/androidTest/java/com/nextcloud/talk/data/user/UsersDaoTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import com.nextcloud.talk.data.source.local.TalkDatabase
import com.nextcloud.talk.data.user.model.UserEntity
import com.nextcloud.talk.models.json.push.PushConfigurationState
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNotNull
Expand Down Expand Up @@ -43,154 +45,168 @@ class UsersDaoTest {
}

@Test
fun saveAndGetUser() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
fun saveAndGetUser() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)

val retrieved = usersDao.getUserWithId(id).blockingGet()
assertNotNull(retrieved)
assertEquals("user1", retrieved.userId)
}
val retrieved = usersDao.getUserWithId(id)
assertNotNull(retrieved)
assertEquals("user1", retrieved?.userId)
}

@Test
fun saveUsersAndGetAll() {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com")
val user2 = createUserEntity("user2", "Account 2", "https://server1.com")
usersDao.saveUsers(user1, user2)
fun saveUsersAndGetAll() =
runTest {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com")
val user2 = createUserEntity("user2", "Account 2", "https://server1.com")
usersDao.saveUsers(user1, user2)

val users = usersDao.getUsers().blockingGet()
assertEquals(2, users.size)
}
val users = usersDao.getUsers()
assertEquals(2, users.size)
}

@Test
fun getActiveUser() {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com").apply { current = false }
usersDao.saveUsers(user1, user2)
fun getActiveUser() =
runTest {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com").apply { current = false }
usersDao.saveUsers(user1, user2)

val active = usersDao.getActiveUser().blockingGet()
assertNotNull(active)
assertEquals("user1", active.userId)
val active = usersDao.getActiveUser()
assertNotNull(active)
assertEquals("user1", active?.userId)

assertEquals("user1", usersDao.getActiveUserSynchronously()?.userId)
assertEquals("user1", usersDao.getActiveUserSynchronously()?.userId)

val activeObs = usersDao.getActiveUserObservable().blockingFirst()
assertEquals("user1", activeObs.userId)
}
val activeFlow = usersDao.getActiveUserFlow().first()
assertEquals("user1", activeFlow?.userId)
}

@Test
fun setUserAsActiveWithId() {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com").apply { current = false }
val id1 = usersDao.saveUser(user1)
val id2 = usersDao.saveUser(user2)

usersDao.setUserAsActiveWithId(id2)

val retrieved1 = usersDao.getUserWithId(id1).blockingGet()
val retrieved2 = usersDao.getUserWithId(id2).blockingGet()
assertEquals(false, retrieved1.current)
assertEquals(true, retrieved2.current)
}
fun setUserAsActiveWithId() =
runTest {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com").apply { current = false }
val id1 = usersDao.saveUser(user1)
val id2 = usersDao.saveUser(user2)

usersDao.setUserAsActiveWithId(id2)

val retrieved1 = usersDao.getUserWithId(id1)
val retrieved2 = usersDao.getUserWithId(id2)
assertEquals(false, retrieved1?.current)
assertEquals(true, retrieved2?.current)
}

@Test
fun deleteUser() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id).blockingGet()
fun deleteUser() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id)

usersDao.deleteUser(savedUser)
usersDao.deleteUser(savedUser!!)

val users = usersDao.getUsers().blockingGet()
assertTrue(users.isEmpty())
}
val users = usersDao.getUsers()
assertTrue(users.isEmpty())
}

@Test
fun updateUser() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id).blockingGet()
fun updateUser() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id)!!

savedUser.displayName = "New Display Name"
usersDao.updateUser(savedUser)
savedUser.displayName = "New Display Name"
usersDao.updateUser(savedUser)

val retrieved = usersDao.getUserWithId(id).blockingGet()
assertEquals("New Display Name", retrieved.displayName)
}
val retrieved = usersDao.getUserWithId(id)
assertEquals("New Display Name", retrieved?.displayName)
}

@Test
fun getScheduledForDeletion() {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com").apply { scheduledForDeletion = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com").apply { scheduledForDeletion = false }
usersDao.saveUsers(user1, user2)

val scheduled = usersDao.getUsersScheduledForDeletion().blockingGet()
assertEquals(1, scheduled.size)
assertEquals("user1", scheduled[0].userId)

val notScheduled = usersDao.getUsersNotScheduledForDeletion().blockingGet()
assertEquals(1, notScheduled.size)
assertEquals("user2", notScheduled[0].userId)

val all = usersDao.getUsers().blockingGet()
assertEquals(1, all.size)
assertEquals("user2", all[0].userId)
}
fun getScheduledForDeletion() =
runTest {
val user1 = createUserEntity("user1", "Account 1", "https://server1.com")
.apply { scheduledForDeletion = true }
val user2 = createUserEntity("user2", "Account 2", "https://server1.com")
.apply { scheduledForDeletion = false }
usersDao.saveUsers(user1, user2)

val scheduled = usersDao.getUsersScheduledForDeletion()
assertEquals(1, scheduled.size)
assertEquals("user1", scheduled[0].userId)

val notScheduled = usersDao.getUsersNotScheduledForDeletion()
assertEquals(1, notScheduled.size)
assertEquals("user2", notScheduled[0].userId)

val all = usersDao.getUsers()
assertEquals(1, all.size)
assertEquals("user2", all[0].userId)
}

@Test
fun getUserWithUserId() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
usersDao.saveUser(user)
fun getUserWithUserId() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
usersDao.saveUser(user)

val retrieved = usersDao.getUserWithUserId("user1").blockingGet()
assertNotNull(retrieved)
assertEquals("Account 1", retrieved.username)
val retrieved = usersDao.getUserWithUserId("user1")
assertNotNull(retrieved)
assertEquals("Account 1", retrieved?.username)

val nonexistent = usersDao.getUserWithUserId("nonexistent").blockingGet()
assertNull(nonexistent)
}
val nonexistent = usersDao.getUserWithUserId("nonexistent")
assertNull(nonexistent)
}

@Test
fun getUserWithUsernameAndServer() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
usersDao.saveUser(user)
fun getUserWithUsernameAndServer() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
usersDao.saveUser(user)

val retrieved = usersDao.getUserWithUsernameAndServer("Account 1", "https://server1.com").blockingGet()
assertNotNull(retrieved)
assertEquals("user1", retrieved.userId)
}
val retrieved = usersDao.getUserWithUsernameAndServer("Account 1", "https://server1.com")
assertNotNull(retrieved)
assertEquals("user1", retrieved?.userId)
}

@Test
fun updatePushState() {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)
fun updatePushState() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com")
val id = usersDao.saveUser(user)

val newState = PushConfigurationState("token", "id", "sig", "key", true)
val updatedCount = usersDao.updatePushState(id, newState).blockingGet()
assertEquals(1, updatedCount)
val newState = PushConfigurationState("token", "id", "sig", "key", true)
val updatedCount = usersDao.updatePushState(id, newState)
assertEquals(1, updatedCount)

val retrieved = usersDao.getUserWithId(id).blockingGet()
assertEquals(newState, retrieved.pushConfigurationState)
}
val retrieved = usersDao.getUserWithId(id)
assertEquals(newState, retrieved?.pushConfigurationState)
}

@Test
fun setActiveNonExistentUser() {
val count = usersDao.setUserAsActiveWithId(9999)
assertEquals(0, count)
}
fun setActiveNonExistentUser() =
runTest {
val count = usersDao.setUserAsActiveWithId(9999)
assertEquals(0, count)
}

@Test
fun deleteActiveUser() {
val user = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id).blockingGet()

usersDao.deleteUser(savedUser)

val active = usersDao.getActiveUser().blockingGet()
assertNull(active)
assertNull(usersDao.getActiveUserSynchronously())
}
fun deleteActiveUser() =
runTest {
val user = createUserEntity("user1", "Account 1", "https://server1.com").apply { current = true }
val id = usersDao.saveUser(user)
val savedUser = usersDao.getUserWithId(id)!!

usersDao.deleteUser(savedUser)

val active = usersDao.getActiveUser()
assertNull(active)
assertNull(usersDao.getActiveUserSynchronously())
}

private fun createUserEntity(userId: String, userName: String, server: String) =
UserEntity(
Expand Down
Loading
Loading