From fc7f63d21933bc72e11aa8dd629d06132819f383 Mon Sep 17 00:00:00 2001 From: AdrianLxM Date: Mon, 1 Mar 2021 16:28:08 +0100 Subject: [PATCH] mocking with argThat --- .../plugins/general/automation/TestBase.kt | 12 ++++++ .../actions/ActionStartTempTargetTest.kt | 39 +++++++++++++++++++ ...poraryTargetAndCancelCurrentTransaction.kt | 2 +- 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/TestBase.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/TestBase.kt index 573c9dcbcc..a85bc45764 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/TestBase.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/TestBase.kt @@ -5,6 +5,7 @@ import info.nightscout.androidaps.utils.rx.AapsSchedulers import info.nightscout.androidaps.utils.rx.TestAapsSchedulers import org.junit.Before import org.junit.Rule +import org.mockito.ArgumentMatcher import org.mockito.Mockito import org.mockito.junit.MockitoJUnit import org.mockito.junit.MockitoRule @@ -35,6 +36,17 @@ open class TestBase { return uninitialized() } + fun argThatKotlin(matcher: ArgumentMatcher): T { + Mockito.argThat(matcher) + return uninitialized() + } + + + fun eqObject(expected: T): T { + Mockito.eq(expected) + return uninitialized() + } + @Suppress("Unchecked_Cast") fun uninitialized(): T = null as T } \ No newline at end of file diff --git a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt index 61911e78eb..3c608f0613 100644 --- a/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt +++ b/automation/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt @@ -2,13 +2,17 @@ package info.nightscout.androidaps.plugins.general.automation.actions import info.nightscout.androidaps.Constants import info.nightscout.androidaps.automation.R +import info.nightscout.androidaps.database.entities.TemporaryTarget +import info.nightscout.androidaps.database.transactions.InsertTemporaryTargetAndCancelCurrentTransaction import info.nightscout.androidaps.plugins.general.automation.elements.InputDuration import info.nightscout.androidaps.plugins.general.automation.elements.InputTempTarget import info.nightscout.androidaps.queue.Callback +import io.reactivex.Single import org.junit.Assert import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mockito.ArgumentMatcher import org.mockito.Mockito.`when` import org.powermock.modules.junit4.PowerMockRunner @@ -41,6 +45,41 @@ class ActionStartTempTargetTest : ActionsTestBase() { @Test fun doActionTest() { //`when`(activePlugin.activeTreatments).thenReturn(treatmentsInterface) + + val expectedTarget = TemporaryTarget( + id = 0, + version = 0, + dateCreated = -1, + isValid = true, + referenceId = null, + interfaceIDs_backing = null, + timestamp = 0, + utcOffset = 0, + reason = TemporaryTarget.Reason.AUTOMATION, + highTarget = 110.0, + lowTarget = 110.0, + duration = 1800000 + ) + + val inserted = mutableListOf().apply { + add(expectedTarget) + } + + val updated = mutableListOf().apply { + // TODO insert all updated TTs + } + + `when`( + repository.runTransactionForResult(argThatKotlin { + it.temporaryTarget + .copy(timestamp = expectedTarget.timestamp, utcOffset = expectedTarget.utcOffset) // those can be different + .contentEqualsTo(expectedTarget) + }) + ).thenReturn(Single.just(InsertTemporaryTargetAndCancelCurrentTransaction.TransactionResult().apply { + inserted.addAll(inserted) + updated.addAll(updated) + })) + sut.doAction(object : Callback() { override fun run() { Assert.assertTrue(result.success) diff --git a/database/src/main/java/info/nightscout/androidaps/database/transactions/InsertTemporaryTargetAndCancelCurrentTransaction.kt b/database/src/main/java/info/nightscout/androidaps/database/transactions/InsertTemporaryTargetAndCancelCurrentTransaction.kt index 3fad55f196..c100d0c358 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/transactions/InsertTemporaryTargetAndCancelCurrentTransaction.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/transactions/InsertTemporaryTargetAndCancelCurrentTransaction.kt @@ -4,7 +4,7 @@ import info.nightscout.androidaps.database.entities.TemporaryTarget import info.nightscout.androidaps.database.interfaces.end class InsertTemporaryTargetAndCancelCurrentTransaction( - private val temporaryTarget: TemporaryTarget + val temporaryTarget: TemporaryTarget ) : Transaction() { constructor(timestamp: Long, duration: Long, reason: TemporaryTarget.Reason, lowTarget: Double, highTarget: Double) :