Skip to content

Commit

Permalink
add tests for MainDataHandler
Browse files Browse the repository at this point in the history
  • Loading branch information
wuan committed Jan 19, 2025
1 parent 45e60e9 commit 0686a68
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,6 @@ class MainDataHandler @Inject constructor(
if (updatesEnabled) {
sendEvent(REQUEST_STARTED_EVENT)

var updateParticipants = false
if (updateTargets.contains(DataChannel.PARTICIPANTS)) {
if (dataProvider!!.type == DataProviderType.HTTP || !dataMode.grid) {
updateParticipants = true
}
}
updateUsingCache()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,30 @@
package org.blitzortung.android.data

import android.content.Context
import android.content.SharedPreferences
import android.os.Handler
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
import io.mockk.mockk
import io.mockk.verify
import org.assertj.core.api.Assertions.assertThat
import org.blitzortung.android.app.view.PreferenceKey
import org.blitzortung.android.data.MainDataHandler.Companion.REQUEST_STARTED_EVENT
import org.blitzortung.android.data.cache.DataCache
import org.blitzortung.android.data.provider.DataProviderFactory
import org.blitzortung.android.data.provider.DataProviderType
import org.blitzortung.android.data.provider.LocalData
import org.blitzortung.android.data.provider.result.DataEvent
import org.blitzortung.android.data.provider.result.StatusEvent
import org.blitzortung.android.map.OwnMapView
import org.blitzortung.android.util.Period
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.osmdroid.events.ScrollEvent
import org.osmdroid.util.BoundingBox
import org.osmdroid.views.MapView
import org.robolectric.RobolectricTestRunner
import org.robolectric.RuntimeEnvironment
import org.robolectric.annotation.Config
Expand All @@ -20,6 +33,8 @@ import org.robolectric.annotation.Config
@Config(manifest = Config.NONE)
class MainDataHandlerTest {

private lateinit var preferences: SharedPreferences

@MockK
private lateinit var dataProviderFactory: DataProviderFactory

Expand All @@ -32,6 +47,9 @@ class MainDataHandlerTest {
@MockK
private lateinit var period: Period

private lateinit var receivedEvents: MutableList<DataEvent>;


private lateinit var uut: MainDataHandler

@Before
Expand All @@ -41,11 +59,81 @@ class MainDataHandlerTest {
val context = RuntimeEnvironment.getApplication()
val preferences = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)

this.preferences = preferences
uut = MainDataHandler(context, dataProviderFactory, preferences, handler, DataCache(), localData, period)

receivedEvents = mutableListOf<DataEvent>()
val eventConsumer: (DataEvent) -> Unit = { event -> receivedEvents.add(event) }
uut.requestUpdates(eventConsumer)
}

@Test
fun updateGridSize() {
val result = uut.updateAutoGridSize(5.0)

assertThat(result).isTrue
assertThat(uut.parameters.gridSize).isEqualTo(25000)
}

@Test
fun blabla() {
assertThat(uut.isRealtime).isTrue
fun SharedPreferencesChangedForDataSource() {
preferences.edit()
.putString(PreferenceKey.DATA_SOURCE.toString(), DataProviderType.HTTP.toString())
.commit()

uut.onSharedPreferenceChanged(preferences, PreferenceKey.DATA_SOURCE)

verify { dataProviderFactory.getDataProviderForType(DataProviderType.HTTP) }
assertThat(receivedEvents).contains(REQUEST_STARTED_EVENT)
}

@Test
fun SharedPreferencesChangedForGridSize() {
preferences.edit()
.putString(PreferenceKey.GRID_SIZE.toString(), "5000")
.commit()

uut.onSharedPreferenceChanged(preferences, PreferenceKey.GRID_SIZE)

assertThat(uut.parameters.gridSize).isEqualTo(5000)
assertThat(receivedEvents).contains(REQUEST_STARTED_EVENT)
}
}

@Test
fun tryDataModeRun() {
uut.run()

assertThat(receivedEvents).contains(StatusEvent("0/60"))
verify {handler.postDelayed(uut, 1000)}
}

@Test
fun reactOnScrollWithinDataArea() {
val mapView = mockk<OwnMapView>();
// every { mapView.isAnimating } returns false
val boundingBox = BoundingBox(45.0, 15.0, 40.0, 10.0)
every { mapView.boundingBox } returns boundingBox
every { localData.update(boundingBox, false) } returns false

val event = ScrollEvent(mapView, 100, 100)

val result = uut.onScroll(event)

assertThat(result).isFalse
}

@Test
fun reactOnScrollLeavingDataArea() {
val mapView = mockk<OwnMapView>();
every { mapView.isAnimating } returns false
val boundingBox = BoundingBox(45.0, 15.0, 40.0, 10.0)
every { mapView.boundingBox } returns boundingBox
every { localData.update(boundingBox, false) } returns true
val event = ScrollEvent(mapView, 100, 100)

val result = uut.onScroll(event)

assertThat(result).isTrue
}
}

0 comments on commit 0686a68

Please sign in to comment.