From 7579950a2960cf743cc3d0baceb427c32afcdc3c Mon Sep 17 00:00:00 2001
From: apopovsap <66370584+apopovsap@users.noreply.github.com>
Date: Thu, 11 Jun 2020 22:01:11 +0300
Subject: [PATCH] Tests/general (#396)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* add SettingsNavigationHelperTest.kt and TimeAndDateExtensionsTest.kt unitTests

* afterMerge

* after Merge with current dev. Functions from SettingsNavigationHelper moved to ExternalActionHelper

Co-authored-by: Jakob Möller <jakob.moeller@sap.com>
---
 .../util/ExternalActionHelperTest.kt          | 78 ++++++++++++++++---
 .../util/TimeAndDateExtensionsTest.kt         | 50 ++++++++++++
 2 files changed, 119 insertions(+), 9 deletions(-)
 create mode 100644 Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt

diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/ExternalActionHelperTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/ExternalActionHelperTest.kt
index bfe5717ab..9c3bc0449 100644
--- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/ExternalActionHelperTest.kt
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/ExternalActionHelperTest.kt
@@ -1,26 +1,86 @@
 package de.rki.coronawarnapp.util
 
+import android.content.Context
+import android.content.pm.ApplicationInfo
 import androidx.fragment.app.Fragment
+import de.rki.coronawarnapp.CoronaWarnApplication
+import io.mockk.MockKAnnotations
 import io.mockk.Runs
 import io.mockk.every
+import io.mockk.impl.annotations.MockK
 import io.mockk.just
 import io.mockk.mockk
+import io.mockk.mockkObject
+import io.mockk.unmockkAll
 import io.mockk.verify
+import org.junit.After
+import org.junit.Before
 import org.junit.Test
 
-/**
- * ExternalActionHelper test.
- */
 class ExternalActionHelperTest {
 
-    /**
-     * Test activity called.
-     */
+    @MockK
+    private lateinit var context: Context
+
+    @MockK
+    private lateinit var applicationInfo: ApplicationInfo
+
+    @Before
+    fun setUp() {
+        MockKAnnotations.init(this)
+        mockkObject(CoronaWarnApplication)
+    }
+
+    @Test
+    fun toConnectionsTest() {
+        every { context.startActivity(any()) } just Runs
+        ExternalActionHelper.toConnections(context = context)
+        verify(exactly = 1) { context.startActivity(any()) }
+    }
+
+    @Test
+    fun toNotificationsTest() {
+        every { context.startActivity(any()) } just Runs
+        every { context.packageName } returns "package_name"
+        every { context.applicationInfo } returns applicationInfo
+
+        ExternalActionHelper.toNotifications(context = context)
+        verify(exactly = 1) { context.startActivity(any()) }
+    }
+
+    @Test
+    fun toMainSettingsTest() {
+        every { context.startActivity(any()) } just Runs
+        ExternalActionHelper.toConnections(context = context)
+        verify(exactly = 1) { context.startActivity(any()) }
+    }
+
     @Test
-    fun testCall() {
+    fun openUrlTest() {
         val fragment = mockk<Fragment>()
         every { fragment.startActivity(any()) } just Runs
-        ExternalActionHelper.call(fragment, "+77777777777")
+        ExternalActionHelper.openUrl(fragment = fragment, url = "url_path")
         verify(exactly = 1) { fragment.startActivity(any()) }
     }
-}
+
+    @Test
+    fun callTest() {
+        val fragment = mockk<Fragment>()
+        every { fragment.startActivity(any()) } just Runs
+        ExternalActionHelper.call(fragment = fragment, uri = "call_path")
+        verify(exactly = 1) { fragment.startActivity(any()) }
+    }
+
+    @Test
+    fun shareTextTest() {
+        val fragment = mockk<Fragment>()
+        every { fragment.startActivity(any()) } just Runs
+        ExternalActionHelper.shareText(fragment = fragment, text = "text", title = "title")
+        verify(exactly = 1) { fragment.startActivity(any()) }
+    }
+
+    @After
+    fun cleanUp() {
+        unmockkAll()
+    }
+}
\ No newline at end of file
diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt
new file mode 100644
index 000000000..644cb3379
--- /dev/null
+++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/TimeAndDateExtensionsTest.kt
@@ -0,0 +1,50 @@
+package de.rki.coronawarnapp.util
+
+import de.rki.coronawarnapp.CoronaWarnApplication
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.calculateDays
+import de.rki.coronawarnapp.util.TimeAndDateExtensions.getCurrentHourUTC
+import io.mockk.MockKAnnotations
+import io.mockk.mockkObject
+import io.mockk.unmockkAll
+import org.hamcrest.CoreMatchers
+import org.hamcrest.MatcherAssert
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import org.joda.time.Instant
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import java.util.concurrent.TimeUnit
+
+/**
+ * TimeAndDateExtensions test.
+ */
+
+class TimeAndDateExtensionsTest {
+
+    @Before
+    fun setUp() {
+        MockKAnnotations.init(this)
+        mockkObject(CoronaWarnApplication)
+    }
+
+    @Test
+    fun getCurrentHourUTCTest() {
+        val result = getCurrentHourUTC()
+        MatcherAssert.assertThat(result, CoreMatchers.`is`(DateTime(Instant.now(), DateTimeZone.UTC).hourOfDay().get()))
+    }
+
+    @Test
+    fun calculateDaysTest() {
+        val lFirstDate = DateTime(2019, 1, 1, 1, 1).millis
+        val lSecondDate = DateTime(2020, 1, 1, 1, 1).millis
+
+        val result = calculateDays(firstDate = lFirstDate, secondDate = lSecondDate)
+        MatcherAssert.assertThat(result, CoreMatchers.`is`(TimeUnit.MILLISECONDS.toDays(lSecondDate - lFirstDate)))
+    }
+
+    @After
+    fun cleanUp() {
+        unmockkAll()
+    }
+}
\ No newline at end of file
-- 
GitLab