@@ -19,12 +19,11 @@ package com.vrem.wifianalyzer.navigation.items
1919
2020import android.content.ComponentName
2121import android.content.Intent
22- import android.content.pm.PackageManager
2322import android.os.Build
2423import android.view.View
2524import androidx.test.ext.junit.runners.AndroidJUnit4
26- import com.vrem.wifianalyzer.MainActivity
2725import com.vrem.wifianalyzer.MainContextHelper
26+ import com.vrem.wifianalyzer.RobolectricUtil
2827import com.vrem.wifianalyzer.export.Export
2928import com.vrem.wifianalyzer.navigation.NavigationMenu
3029import com.vrem.wifianalyzer.wifi.model.WiFiConnection
@@ -36,14 +35,14 @@ import org.junit.Test
3635import org.junit.runner.RunWith
3736import org.mockito.kotlin.*
3837import org.robolectric.annotation.Config
38+ import org.robolectric.shadows.ShadowToast
3939
4040@RunWith(AndroidJUnit4 ::class )
4141@Config(sdk = [Build .VERSION_CODES .VANILLA_ICE_CREAM ])
4242class ExportItemTest {
43+ private val mainActivity = RobolectricUtil .INSTANCE .activity
4344 private val export: Export = mock()
44- private val mainActivity: MainActivity = mock()
4545 private val intent: Intent = mock()
46- private val packageManager: PackageManager = mock()
4746 private val componentName: ComponentName = mock()
4847 private val scanner = MainContextHelper .INSTANCE .scannerService
4948
@@ -52,43 +51,83 @@ class ExportItemTest {
5251 @After
5352 fun tearDown () {
5453 verifyNoMoreInteractions(export)
55- verifyNoMoreInteractions(mainActivity)
56- verifyNoMoreInteractions(intent)
57- verifyNoMoreInteractions(packageManager)
5854 verifyNoMoreInteractions(componentName)
5955 verifyNoMoreInteractions(scanner)
6056 MainContextHelper .INSTANCE .restore()
6157 }
6258
59+ @Test
60+ fun registered () {
61+ // execute & validate
62+ assertThat(fixture.registered).isFalse
63+ }
64+
65+ @Test
66+ fun visibility () {
67+ // execute & validate
68+ assertThat(fixture.visibility).isEqualTo(View .GONE )
69+ }
70+
6371 @Test
6472 fun activate () {
6573 // setup
6674 val wiFiData: WiFiData = withWiFiData()
6775 doReturn(wiFiData).whenever(scanner).wiFiData()
6876 doReturn(intent).whenever(export).export(mainActivity, wiFiData.wiFiDetails)
69- doNothing().whenever(mainActivity).startActivity(intent)
70- doReturn(packageManager).whenever(mainActivity).packageManager
71- doReturn(componentName).whenever(intent).resolveActivity(packageManager)
77+ doReturn(componentName).whenever(intent).resolveActivity(any())
7278 // execute
7379 fixture.activate(mainActivity, NavigationMenu .EXPORT )
7480 // validate
7581 verify(scanner).wiFiData()
76- verify(mainActivity).packageManager
77- verify(intent).resolveActivity(packageManager)
78- verify(mainActivity).startActivity(intent)
7982 verify(export).export(mainActivity, wiFiData.wiFiDetails)
83+ verify(intent).resolveActivity(mainActivity.packageManager)
8084 }
8185
8286 @Test
83- fun registered () {
84- // execute & validate
85- assertThat(fixture.registered).isFalse
87+ fun activateWithNoWiFiData () {
88+ // setup
89+ val wiFiData = WiFiData (listOf (), WiFiConnection .EMPTY )
90+ doReturn(wiFiData).whenever(scanner).wiFiData()
91+ // execute
92+ fixture.activate(mainActivity, NavigationMenu .EXPORT )
93+ // validate
94+ verify(scanner).wiFiData()
95+ assertThat(ShadowToast .getTextOfLatestToast()).isEqualTo(" No Data" )
8696 }
8797
8898 @Test
89- fun visibility () {
90- // execute & validate
91- assertThat(fixture.visibility).isEqualTo(View .GONE )
99+ fun activateWithNoExportAvailable () {
100+ // setup
101+ val wiFiData: WiFiData = withWiFiData()
102+ doReturn(wiFiData).whenever(scanner).wiFiData()
103+ doReturn(intent).whenever(export).export(mainActivity, wiFiData.wiFiDetails)
104+ doReturn(null ).whenever(intent).resolveActivity(any())
105+ // execute
106+ fixture.activate(mainActivity, NavigationMenu .EXPORT )
107+ // validate
108+ verify(scanner).wiFiData()
109+ verify(export).export(mainActivity, wiFiData.wiFiDetails)
110+ verify(intent).resolveActivity(mainActivity.packageManager)
111+ assertThat(ShadowToast .getTextOfLatestToast()).isEqualTo(" Export not available" )
112+ }
113+
114+ @Test
115+ fun activateThrowsException () {
116+ // setup
117+ val activity = spy(mainActivity)
118+ val wiFiData: WiFiData = withWiFiData()
119+ val expected = " error"
120+ doReturn(wiFiData).whenever(scanner).wiFiData()
121+ doReturn(intent).whenever(export).export(activity, wiFiData.wiFiDetails)
122+ doReturn(componentName).whenever(intent).resolveActivity(any())
123+ doThrow(RuntimeException (expected)).whenever(activity).startActivity(intent)
124+ // execute
125+ fixture.activate(activity, NavigationMenu .EXPORT )
126+ // validate
127+ verify(scanner).wiFiData()
128+ verify(export).export(activity, wiFiData.wiFiDetails)
129+ verify(intent).resolveActivity(activity.packageManager)
130+ assertThat(ShadowToast .getTextOfLatestToast()).isEqualTo(expected)
92131 }
93132
94133 private fun withWiFiData (): WiFiData {
0 commit comments