Skip to content

Commit 00a22b8

Browse files
committed
shared-tests #1
1 parent 954f6ee commit 00a22b8

39 files changed

+331
-678
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
plugins {
2+
id 'com.android.library'
3+
id 'kotlin-android'
4+
id 'kotlin-kapt'
5+
id 'kotlinx-serialization'
6+
id 'kotlin-allopen'
7+
}
8+
9+
apply from: "${project.rootDir}/core/main/android_dependencies.gradle"
10+
apply from: "${project.rootDir}/core/main/android_module_dependencies.gradle"
11+
apply from: "${project.rootDir}/core/main/allopen_dependencies.gradle"
12+
apply from: "${project.rootDir}/core/main/test_dependencies.gradle"
13+
apply from: "${project.rootDir}/core/main/jacoco_global.gradle"
14+
15+
android {
16+
namespace 'info.nightscout.sharedtests'
17+
}
18+
19+
dependencies {
20+
implementation project(':database:entities')
21+
implementation project(':app-wear-shared:shared')
22+
implementation project(':core:interfaces')
23+
implementation project(':core:main')
24+
implementation project(':core:utils')
25+
implementation project(':implementation')
26+
27+
api "org.mockito:mockito-junit-jupiter:$mockito_version"
28+
api "org.mockito.kotlin:mockito-kotlin:4.1.0"
29+
api "org.junit.jupiter:junit-jupiter-api:$junit_jupiter_version"
30+
31+
api "com.google.dagger:dagger:$dagger_version"
32+
api "com.google.dagger:dagger-android:$dagger_version"
33+
api "com.google.dagger:dagger-android-support:$dagger_version"
34+
}

app-wear-shared/shared-tests/consumer-rules.pro

Whitespace-only changes.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Add project specific ProGuard rules here.
2+
# You can control the set of applied configuration files using the
3+
# proguardFiles setting in build.gradle.
4+
#
5+
# For more details, see
6+
# http://developer.android.com/guide/developing/tools/proguard.html
7+
8+
# If your project uses WebView with JS, uncomment the following
9+
# and specify the fully qualified class name to the JavaScript interface
10+
# class:
11+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12+
# public *;
13+
#}
14+
15+
# Uncomment this to preserve the line number information for
16+
# debugging stack traces.
17+
#-keepattributes SourceFile,LineNumberTable
18+
19+
# If you keep the line number information, uncomment this to
20+
# hide the original source file name.
21+
#-renamesourcefileattribute SourceFile
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest>
3+
4+
</manifest>

implementation/src/test/java/info/nightscout/androidaps/HardLimitsMock.kt renamed to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/HardLimitsMock.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package info.nightscout.androidaps
1+
package info.nightscout.sharedtests
22

33
import info.nightscout.interfaces.utils.HardLimits
44
import info.nightscout.shared.interfaces.ResourceHelper
@@ -7,7 +7,7 @@ import javax.inject.Inject
77
import kotlin.math.max
88
import kotlin.math.min
99

10-
class HardLimitsMock @Inject constructor(
10+
@Suppress("unused") class HardLimitsMock @Inject constructor(
1111
private val sp: SP,
1212
private val rh: ResourceHelper
1313
) : HardLimits {

plugins/main/src/test/java/info/nightscout/androidaps/TestBase.kt renamed to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBase.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package info.nightscout.androidaps
1+
package info.nightscout.sharedtests
22

3+
import android.annotation.SuppressLint
34
import info.nightscout.rx.AapsSchedulers
45
import info.nightscout.rx.TestAapsSchedulers
56
import info.nightscout.rx.logging.AAPSLoggerTest
@@ -11,6 +12,7 @@ import org.mockito.junit.jupiter.MockitoSettings
1112
import org.mockito.quality.Strictness
1213
import java.util.Locale
1314

15+
@Suppress("SpellCheckingInspection")
1416
@ExtendWith(MockitoExtension::class)
1517
@MockitoSettings(strictness = Strictness.LENIENT)
1618
open class TestBase {
@@ -27,11 +29,12 @@ open class TestBase {
2729
// Workaround for Kotlin nullability.
2830
// https://medium.com/@elye.project/befriending-kotlin-and-mockito-1c2e7b0ef791
2931
// https://stackoverflow.com/questions/30305217/is-it-possible-to-use-mockito-in-kotlin
32+
@SuppressLint("CheckResult")
3033
fun <T> anyObject(): T {
3134
Mockito.any<T>()
3235
return uninitialized()
3336
}
3437

3538
@Suppress("Unchecked_Cast")
36-
fun <T> uninitialized(): T = null as T
39+
private fun <T> uninitialized(): T = null as T
3740
}

implementation/src/test/java/info/nightscout/androidaps/TestBaseWithProfile.kt renamed to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestBaseWithProfile.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package info.nightscout.androidaps
1+
package info.nightscout.sharedtests
22

33
import android.content.Context
44
import dagger.android.AndroidInjector
@@ -26,13 +26,12 @@ import org.mockito.ArgumentMatchers.anyInt
2626
import org.mockito.ArgumentMatchers.anyString
2727
import org.mockito.Mock
2828
import org.mockito.Mockito
29-
import org.mockito.Mockito.`when`
3029
import org.mockito.invocation.InvocationOnMock
3130

3231
@Suppress("SpellCheckingInspection")
3332
open class TestBaseWithProfile : TestBase() {
3433

35-
@Mock lateinit var activePluginProvider: ActivePlugin
34+
@Mock lateinit var activePlugin: ActivePlugin
3635
@Mock lateinit var rh: ResourceHelper
3736
@Mock lateinit var iobCobCalculator: IobCobCalculator
3837
@Mock lateinit var fabricPrivacy: FabricPrivacy
@@ -41,15 +40,15 @@ open class TestBaseWithProfile : TestBase() {
4140
@Mock lateinit var context: Context
4241
@Mock lateinit var sp: SP
4342

44-
private lateinit var hardLimits: HardLimits
4543
lateinit var dateUtil: DateUtil
44+
lateinit var hardLimits: HardLimits
4645
val rxBus = RxBus(aapsSchedulers, aapsLogger)
4746

4847
val profileInjector = HasAndroidInjector {
4948
AndroidInjector {
5049
if (it is ProfileStoreObject) {
5150
it.aapsLogger = aapsLogger
52-
it.activePlugin = activePluginProvider
51+
it.activePlugin = activePlugin
5352
it.config = config
5453
it.rh = rh
5554
it.rxBus = rxBus
@@ -64,20 +63,22 @@ open class TestBaseWithProfile : TestBase() {
6463
lateinit var effectiveProfileSwitch: EffectiveProfileSwitch
6564
lateinit var testPumpPlugin: TestPumpPlugin
6665

66+
val now = 1656358822000L
67+
6768
@Suppress("PropertyName") val TESTPROFILENAME = "someProfile"
6869

6970
@BeforeEach
7071
fun prepareMock() {
71-
invalidProfileJSON = "{\"dia\":\"1\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
72+
validProfileJSON = "{\"dia\":\"5\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
7273
"{\"time\":\"2:00\",\"value\":\"3.4\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4.5\"}]," +
7374
"\"target_high\":[{\"time\":\"00:00\",\"value\":\"7\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
74-
validProfileJSON = "{\"dia\":\"5\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
75+
invalidProfileJSON = "{\"dia\":\"1\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
7576
"{\"time\":\"2:00\",\"value\":\"3.4\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4.5\"}]," +
7677
"\"target_high\":[{\"time\":\"00:00\",\"value\":\"7\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
77-
testPumpPlugin = TestPumpPlugin(profileInjector)
78-
`when`(activePluginProvider.activePump).thenReturn(testPumpPlugin)
7978
dateUtil = Mockito.spy(DateUtil(context))
80-
`when`(dateUtil.now()).thenReturn(1656358822000)
79+
testPumpPlugin = TestPumpPlugin(profileInjector)
80+
Mockito.`when`(dateUtil.now()).thenReturn(now)
81+
Mockito.`when`(activePlugin.activePump).thenReturn(testPumpPlugin)
8182
hardLimits = HardLimitsMock(sp, rh)
8283
validProfile = ProfileSealed.Pure(pureProfileFromJson(JSONObject(validProfileJSON), dateUtil)!!)
8384
effectiveProfileSwitch = EffectiveProfileSwitch(

implementation/src/test/java/info/nightscout/androidaps/TestPumpPlugin.kt renamed to app-wear-shared/shared-tests/src/main/java/info/nightscout/sharedtests/TestPumpPlugin.kt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package info.nightscout.androidaps
1+
package info.nightscout.sharedtests
22

33
import dagger.android.HasAndroidInjector
44
import info.nightscout.androidaps.annotations.OpenForTesting
@@ -19,6 +19,7 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
1919

2020
var connected = false
2121
var isProfileSet = true
22+
var pumpSuspended = false
2223

2324
override fun isConnected() = connected
2425
override fun isConnecting() = false
@@ -29,7 +30,7 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
2930
override var pumpDescription = PumpDescription()
3031

3132
override fun isInitialized(): Boolean = true
32-
override fun isSuspended(): Boolean = false
33+
override fun isSuspended(): Boolean = pumpSuspended
3334
override fun isBusy(): Boolean = false
3435
override fun connect(reason: String) {
3536
connected = true
@@ -44,15 +45,19 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
4445
}
4546

4647
override fun waitForDisconnectionInSeconds(): Int = 0
47-
override fun getPumpStatus(reason: String) {}
48+
override fun getPumpStatus(reason: String) { /* not needed */
49+
}
50+
4851
override fun setNewBasalProfile(profile: Profile): PumpEnactResult = PumpEnactResult(injector)
4952
override fun isThisProfileSet(profile: Profile): Boolean = isProfileSet
5053
override fun lastDataTime(): Long = lastData
51-
override val baseBasalRate: Double = baseBasal
54+
override val baseBasalRate: Double get() = baseBasal
5255
override val reservoirLevel: Double = 0.0
5356
override val batteryLevel: Int = 0
5457
override fun deliverTreatment(detailedBolusInfo: DetailedBolusInfo): PumpEnactResult = PumpEnactResult(injector).success(true)
55-
override fun stopBolusDelivering() {}
58+
override fun stopBolusDelivering() { /* not needed */
59+
}
60+
5661
override fun setTempBasalAbsolute(absoluteRate: Double, durationInMinutes: Int, profile: Profile, enforceNew: Boolean, tbrType: PumpSync.TemporaryBasalType): PumpEnactResult =
5762
PumpEnactResult(injector).success(true)
5863

@@ -66,9 +71,10 @@ class TestPumpPlugin(val injector: HasAndroidInjector) : Pump {
6671
override fun manufacturer(): ManufacturerType = ManufacturerType.AAPS
6772
override fun model(): PumpType = PumpType.GENERIC_AAPS
6873
override fun serialNumber(): String = "1"
69-
override fun shortStatus(veryShort: Boolean): String = ""
74+
override fun shortStatus(veryShort: Boolean): String = "Virtual Pump"
7075
override val isFakingTempsByExtendedBoluses: Boolean = false
7176
override fun loadTDDs(): PumpEnactResult = PumpEnactResult(injector).success(true)
7277
override fun canHandleDST(): Boolean = true
73-
override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType) {}
78+
override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType) { /* not needed */
79+
}
7480
}

app-wear-shared/shared/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ dependencies {
2424
api "androidx.preference:preference-ktx:$preferencektx_version"
2525
api "net.danlew:android.joda:$joda_version"
2626

27-
// for old fashioned support-app version (wear)
2827
api "com.google.dagger:dagger:$dagger_version"
2928
api "com.google.dagger:dagger-android:$dagger_version"
3029
api "com.google.dagger:dagger-android-support:$dagger_version"

0 commit comments

Comments
 (0)