Skip to content

Commit

Permalink
Adding integration WriteAccountsActTest
Browse files Browse the repository at this point in the history
  • Loading branch information
philipplackner committed Aug 7, 2023
1 parent 8630573 commit c25605b
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.ivy.core.domain.action.transaction
package com.ivy

import com.ivy.data.Sync
import com.ivy.data.SyncState
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.ivy.core.domain.action.account

import assertk.Assert
import assertk.assertThat
import assertk.assertions.hasSize
import assertk.assertions.isEqualTo
import com.ivy.account
import com.ivy.common.androidtest.IvyAndroidTest
import com.ivy.core.domain.action.data.Modify
import com.ivy.core.persistence.dao.account.AccountDao
import com.ivy.core.persistence.entity.account.AccountEntity
import com.ivy.data.Sync
import com.ivy.data.SyncState
import com.ivy.data.account.Account
import dagger.hilt.android.testing.HiltAndroidTest
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.temporal.ChronoUnit
import java.util.UUID
import javax.inject.Inject

@OptIn(ExperimentalCoroutinesApi::class)
@HiltAndroidTest
class WriteAccountsActTest: IvyAndroidTest() {

@Inject
lateinit var writeAccountsAct: WriteAccountsAct

@Inject
lateinit var accountDao: AccountDao

@Test
fun testSaveUpdateAccount() = runTest {
val syncTime = LocalDateTime
.now()
.plusHours(3)
.truncatedTo(ChronoUnit.SECONDS)

val accountToSave = account().copy(
sync = Sync(SyncState.Syncing, syncTime)
)
writeAccountsAct(Modify.save(accountToSave))

val createdAccountFromDb = accountDao.findAllBlocking().first()
assertThat(createdAccountFromDb)
.transformToAccount()
.isEqualTo(accountToSave)

val updatedAccount = accountToSave.copy(
name = "updated",
currency = "CAD"
)
writeAccountsAct(Modify.save(updatedAccount))

val accountsFromDb = accountDao.findAllBlocking()
assertThat(accountsFromDb).hasSize(1)

val updatedAccountFromDb = accountsFromDb.first()
assertThat(updatedAccountFromDb)
.transformToAccount()
.isEqualTo(updatedAccount)
}

private fun Assert<AccountEntity>.transformToAccount(): Assert<Account> {
return transform {
Account(
id = UUID.fromString(it.id),
name = it.name,
currency = it.currency,
color = it.color,
icon = it.icon,
excluded = it.excluded,
folderId = it.folderId?.let { UUID.fromString(it) },
orderNum = it.orderNum,
state = it.state,
sync = Sync(
state = it.sync,
lastUpdated = LocalDateTime.ofInstant(it.lastUpdated, ZoneId.systemDefault())
)
)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,15 @@ package com.ivy.core.domain.action.transaction
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.isNotNull
import com.ivy.core.domain.action.Action
import com.ivy.account
import com.ivy.attachment
import com.ivy.core.domain.algorithm.accountcache.InvalidateAccCacheAct
import com.ivy.data.Sync
import com.ivy.data.SyncState
import com.ivy.data.Value
import com.ivy.data.account.Account
import com.ivy.data.account.AccountState
import com.ivy.data.attachment.Attachment
import com.ivy.data.attachment.AttachmentSource
import com.ivy.data.attachment.AttachmentType
import com.ivy.data.tag.Tag
import com.ivy.data.tag.TagState
import com.ivy.data.transaction.Transaction
import com.ivy.data.transaction.TransactionType
import com.ivy.data.transaction.TrnMetadata
import com.ivy.data.transaction.TrnPurpose
import com.ivy.data.transaction.TrnState
import com.ivy.data.transaction.TrnTime
import com.ivy.tag
import com.ivy.transaction
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
import java.util.UUID

internal class WriteTrnsActTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,15 @@ package com.ivy.core.domain.action.transaction.transfer

import com.ivy.core.domain.action.transaction.WriteTrnsAct
import com.ivy.core.domain.action.transaction.WriteTrnsBatchAct
import com.ivy.core.domain.action.transaction.account
import com.ivy.account
import com.ivy.data.Sync
import com.ivy.data.SyncState
import com.ivy.data.Value
import com.ivy.data.account.Account
import com.ivy.data.transaction.TransactionType
import com.ivy.data.transaction.TrnTime
import io.mockk.coVerify
import io.mockk.mockk
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions.*
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
Expand Down

0 comments on commit c25605b

Please sign in to comment.