diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index 2956288..98ca487 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -41,5 +41,10 @@ <option name="name" value="maven2" /> <option name="url" value="https://s01.oss.sonatype.org/content/repositories/snapshots" /> </remote-repository> + <remote-repository> + <option name="id" value="MavenLocal" /> + <option name="name" value="MavenLocal" /> + <option name="url" value="file:$MAVEN_REPOSITORY$/" /> + </remote-repository> </component> </project> \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 8310b15..f15f2f9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -33,6 +33,7 @@ val githubToken: String? by project repositories { mavenCentral() + mavenLocal() maven("https://jitpack.io") maven("https://s01.oss.sonatype.org/content/repositories/snapshots") } @@ -41,7 +42,7 @@ dependencies { implementation(kotlin("stdlib")) implementation(kotlin("reflect")) implementation("io.github.smaugfm:monobank:0.0.2") - implementation("io.github.smaugfm:lunchmoney:1.0.2") + implementation("io.github.smaugfm:lunchmoney:1.0.3-SNAPSHOT") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor:$kotlinxCoroutines") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutines") implementation("com.github.livefront.sealed-enum:runtime:$sealedEnum") diff --git a/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreator.kt b/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreator.kt index ac891be..7be3408 100644 --- a/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreator.kt +++ b/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreator.kt @@ -15,7 +15,6 @@ import io.github.smaugfm.monobudget.common.statement.lifecycle.StatementProcessi import io.github.smaugfm.monobudget.common.statement.lifecycle.StatementProcessingScopeComponent import io.github.smaugfm.monobudget.common.transaction.TransactionFactory import kotlinx.coroutines.reactor.awaitSingle -import kotlinx.serialization.SerializationException import org.koin.core.annotation.Scope import org.koin.core.annotation.Scoped @@ -41,17 +40,10 @@ class LunchmoneyTransactionCreator( } } catch (e: LunchmoneyApiResponseException) { val template = "Текст помилки: " - if (e.cause is SerializationException) { - throw BudgetBackendException( - e, - template + (e.message?.substringBefore("JSON input:") + "HTTP Body:\n" + e.body), - ) - } else { - throw BudgetBackendException( - e, - template + e.message, - ) - } + throw BudgetBackendException( + e, + template + e.message, + ) } private suspend fun processTransfer( diff --git a/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionMessageFormatter.kt b/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionMessageFormatter.kt index 34686d9..0ff9e03 100644 --- a/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionMessageFormatter.kt +++ b/src/main/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionMessageFormatter.kt @@ -25,7 +25,6 @@ class LunchmoneyTransactionMessageFormatter( private val shouldNotifyStatuses = setOf( LunchmoneyTransactionStatus.UNCLEARED, - LunchmoneyTransactionStatus.RECURRING_SUGGESTED, LunchmoneyTransactionStatus.PENDING, ) diff --git a/src/test/kotlin/io/github/smaugfm/monobudget/TestData.kt b/src/test/kotlin/io/github/smaugfm/monobudget/TestData.kt index dcf8371..a1f2e17 100644 --- a/src/test/kotlin/io/github/smaugfm/monobudget/TestData.kt +++ b/src/test/kotlin/io/github/smaugfm/monobudget/TestData.kt @@ -1,6 +1,6 @@ package io.github.smaugfm.monobudget -import io.github.smaugfm.lunchmoney.model.LunchmoneyCategoryMultiple +import io.github.smaugfm.lunchmoney.model.LunchmoneyCategory import io.github.smaugfm.monobank.model.MonoStatementItem import io.github.smaugfm.monobank.model.MonoWebhookResponseData import io.github.smaugfm.monobudget.mono.MonobankWebhookResponseStatementItem @@ -62,7 +62,7 @@ object TestData { val categories = listOf( - LunchmoneyCategoryMultiple( + LunchmoneyCategory( id = 444443, name = "Авто", description = null, @@ -74,7 +74,7 @@ object TestData { isGroup = false, groupId = null, ), - LunchmoneyCategoryMultiple( + LunchmoneyCategory( id = 444444, name = "Перекази", description = null, @@ -86,7 +86,7 @@ object TestData { isGroup = false, groupId = null, ), - LunchmoneyCategoryMultiple( + LunchmoneyCategory( id = 444445, name = "Розваги", description = null, @@ -98,7 +98,7 @@ object TestData { isGroup = false, groupId = null, ), - LunchmoneyCategoryMultiple( + LunchmoneyCategory( id = 444446, name = "Транспорт", description = null, diff --git a/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/FailTrackerTransformation.kt b/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/FailTrackerTransformation.kt index 4a76c66..d05f5f6 100644 --- a/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/FailTrackerTransformation.kt +++ b/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/FailTrackerTransformation.kt @@ -11,5 +11,5 @@ class FailTrackerTransformation<T>(private val configs: List<IntegrationFailConf override fun apply(mono: Mono<T>): Mono<T> = mono.takeIf { configs.all { !it.attemptFailRange.contains(attempt++) } } - ?: Mono.error(LunchmoneyApiResponseException(HttpStatusCode.BadRequest.value)) + ?: Mono.error(LunchmoneyApiResponseException(HttpStatusCode.BadRequest.description)) } diff --git a/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/IntegrationTestBase.kt b/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/IntegrationTestBase.kt index b40696a..ad52fb1 100644 --- a/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/IntegrationTestBase.kt +++ b/src/test/kotlin/io/github/smaugfm/monobudget/integration/util/IntegrationTestBase.kt @@ -2,7 +2,7 @@ package io.github.smaugfm.monobudget.integration.util import io.github.oshai.kotlinlogging.KotlinLogging import io.github.smaugfm.lunchmoney.api.LunchmoneyApi -import io.github.smaugfm.lunchmoney.model.LunchmoneyCategoryMultiple +import io.github.smaugfm.lunchmoney.model.LunchmoneyCategory import io.github.smaugfm.lunchmoney.model.LunchmoneyInsertTransaction import io.github.smaugfm.lunchmoney.model.LunchmoneyTransaction import io.github.smaugfm.lunchmoney.response.LunchmoneyUpdateTransactionResponse @@ -35,6 +35,8 @@ import kotlinx.coroutines.cancel import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import kotlinx.datetime.Clock +import kotlinx.datetime.toJavaInstant import org.junit.jupiter.api.assertThrows import org.koin.core.KoinApplication import org.koin.dsl.bind @@ -65,7 +67,7 @@ abstract class IntegrationTestBase : TestBase(), CoroutineScope { @MockK lateinit var categoriesFetcherMock: - PeriodicFetcherFactory.PeriodicFetcher<List<LunchmoneyCategoryMultiple>> + PeriodicFetcherFactory.PeriodicFetcher<List<LunchmoneyCategory>> @MockK lateinit var budgetSettingsVerifier: BudgetSettingsVerifier @@ -81,7 +83,7 @@ abstract class IntegrationTestBase : TestBase(), CoroutineScope { every { lunchmoneyMock.getBudgetSummary(any(), any(), any()) } returns Mono.just(listOf()) excludeRecords { lunchmoneyMock.getBudgetSummary(any(), any(), any()) } every { - periodicFetcherFactory.create<List<LunchmoneyCategoryMultiple>>( + periodicFetcherFactory.create<List<LunchmoneyCategory>>( "Lunchmoney categories", any(), ) @@ -157,6 +159,14 @@ abstract class IntegrationTestBase : TestBase(), CoroutineScope { notes = insertTransaction?.notes, categoryId = insertTransaction?.categoryId, status = insertTransaction!!.status!!, + accountDisplayName = "", + createdAt = Clock.System.now().toJavaInstant(), + updatedAt = Clock.System.now().toJavaInstant(), + displayName = "", + excludeFromTotals = false, + excludeFromBudget = false, + isIncome = false, + isPending = false, ), ).transformDeferred(singleTransform) } @@ -173,6 +183,14 @@ abstract class IntegrationTestBase : TestBase(), CoroutineScope { notes = insertTransaction2?.notes, categoryId = insertTransaction2?.categoryId, status = insertTransaction2!!.status!!, + accountDisplayName = "", + createdAt = Clock.System.now().toJavaInstant(), + updatedAt = Clock.System.now().toJavaInstant(), + displayName = "", + excludeFromTotals = false, + excludeFromBudget = false, + isIncome = false, + isPending = false, ), ).transformDeferred(singleTransform) } @@ -243,6 +261,14 @@ abstract class IntegrationTestBase : TestBase(), CoroutineScope { notes = insertTransaction?.notes, categoryId = insertTransaction?.categoryId, status = insertTransaction!!.status!!, + accountDisplayName = "", + createdAt = Clock.System.now().toJavaInstant(), + updatedAt = Clock.System.now().toJavaInstant(), + displayName = "", + excludeFromTotals = false, + excludeFromBudget = false, + isIncome = false, + isPending = false, ), ).transformDeferred(singleTracker) } diff --git a/src/test/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreatorTest.kt b/src/test/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreatorTest.kt index daabe56..2d6ebcb 100644 --- a/src/test/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreatorTest.kt +++ b/src/test/kotlin/io/github/smaugfm/monobudget/lunchmoney/LunchmoneyTransactionCreatorTest.kt @@ -20,6 +20,8 @@ import io.mockk.coEvery import io.mockk.every import io.mockk.mockkClass import kotlinx.coroutines.runBlocking +import kotlinx.datetime.Clock +import kotlinx.datetime.toJavaInstant import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.koin.core.KoinApplication @@ -58,6 +60,14 @@ class LunchmoneyTransactionCreatorTest : TestBase() { 1.0, isGroup = false, status = LunchmoneyTransactionStatus.CLEARED, + accountDisplayName = "", + createdAt = Clock.System.now().toJavaInstant(), + updatedAt = Clock.System.now().toJavaInstant(), + displayName = "", + excludeFromTotals = false, + excludeFromBudget = false, + isIncome = false, + isPending = false, ) private val insertTransaction = LunchmoneyInsertTransaction(