diff --git a/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.java b/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.java deleted file mode 100644 index 2a43f429..00000000 --- a/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.java +++ /dev/null @@ -1,75 +0,0 @@ -package de.qabel.qabelbox.ui; - -import android.app.Activity; - -import org.junit.Test; - -import de.qabel.qabelbox.R; -import de.qabel.qabelbox.ui.helper.UITestHelper; - -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.assertion.ViewAssertions.doesNotExist; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; -import static android.support.test.espresso.matcher.ViewMatchers.withText; - -public class OfflineUITest extends AbstractUITest{ - - private MockConnectivityManager connectivityManager; - - class MockConnectivityManager extends de.qabel.qabelbox.communication.connection.ConnectivityManager { - - private boolean connected = true; - private Activity context; - - public MockConnectivityManager(Activity context) { - super(context); - this.context = context; - } - - @Override - public boolean isConnected() { - return connected; - } - - public void setConnected(final boolean connected) { - this.connected = connected; - final ConnectivityListener listener = this.getListener(); - context.runOnUiThread(new Runnable() { - @Override - public void run() { - if (connected) { - listener.handleConnectionEstablished(); - } else { - listener.handleConnectionLost(); - } - } - }); - } - } - - - @Override - public void setUp() throws Throwable { - super.setUp(); - launchActivity(null); - connectivityManager = new MockConnectivityManager(getMActivity()); - getMActivity().installConnectivityManager(connectivityManager); - connectivityManager.setConnected(true); - } - - - @Test - public void testOfflineIndicator() throws Throwable { - onView(withText(R.string.no_connection)).check(doesNotExist()); - connectivityManager.setConnected(false); - onView(withText(R.string.no_connection)).check(matches(isDisplayed())); - UITestHelper.screenShot(getMActivity(), "offlineIndicator"); - } - - @Test - public void testOnline() { - onView(withText(R.string.no_connection)).check(doesNotExist()); - } - -} diff --git a/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.kt b/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.kt new file mode 100644 index 00000000..bfb5cb5a --- /dev/null +++ b/qabelbox/src/androidTest/java/de/qabel/qabelbox/ui/OfflineUITest.kt @@ -0,0 +1,68 @@ +package de.qabel.qabelbox.ui + +import android.app.Activity +import android.support.test.espresso.Espresso + +import org.junit.Test + +import de.qabel.qabelbox.R +import de.qabel.qabelbox.ui.helper.UITestHelper + +import android.support.test.espresso.Espresso.onView +import android.support.test.espresso.assertion.ViewAssertions.doesNotExist +import android.support.test.espresso.assertion.ViewAssertions.matches +import android.support.test.espresso.matcher.ViewMatchers.isDisplayed +import android.support.test.espresso.matcher.ViewMatchers.withText +import de.qabel.qabelbox.communication.connection.ConnectivityManager +import de.qabel.qabelbox.ui.idling.InjectedIdlingResource + +class OfflineUITest : AbstractUITest() { + + lateinit private var connectivityManager: MockConnectivityManager + val idlingResource = InjectedIdlingResource() + + internal inner class MockConnectivityManager(private val context: Activity): + ConnectivityManager(context) { + + override var isConnected = true + set(connected) { + field = connected + context.runOnUiThread { + if (connected) { + listener?.handleConnectionEstablished() + } else { + listener?.handleConnectionLost() + } + } + } + } + + + @Throws(Throwable::class) + override fun setUp() { + super.setUp() + launchActivity(null) + mActivity.idleCallback = idlingResource + Espresso.registerIdlingResources(idlingResource) + + connectivityManager = MockConnectivityManager(mActivity) + mActivity.installConnectivityManager(connectivityManager) + connectivityManager.isConnected = true + } + + + @Test + @Throws(Throwable::class) + fun testOfflineIndicator() { + onView(withText(R.string.no_connection)).check(doesNotExist()) + connectivityManager.isConnected = false + onView(withText(R.string.no_connection)).check(matches(isDisplayed())) + UITestHelper.screenShot(mActivity, "offlineIndicator") + } + + @Test + fun testOnline() { + onView(withText(R.string.no_connection)).check(doesNotExist()) + } + +} diff --git a/qabelbox/src/main/java/de/qabel/qabelbox/base/BaseFragment.kt b/qabelbox/src/main/java/de/qabel/qabelbox/base/BaseFragment.kt index 5b260470..a32dbecb 100644 --- a/qabelbox/src/main/java/de/qabel/qabelbox/base/BaseFragment.kt +++ b/qabelbox/src/main/java/de/qabel/qabelbox/base/BaseFragment.kt @@ -33,9 +33,9 @@ abstract class BaseFragment(protected val mainFragment: Boolean = false, this.idle = idle } - fun busy() = idle?.let { it.busy() } + fun busy() = idle?.busy() - fun idle() = idle?.let { it.idle() } + fun idle() = idle?.idle() @Suppress("UNCHECKED_CAST") protected fun getComponent(componentType: Class): C { diff --git a/qabelbox/src/main/java/de/qabel/qabelbox/base/CrashReportingActivity.kt b/qabelbox/src/main/java/de/qabel/qabelbox/base/CrashReportingActivity.kt index c20c63d8..3721e575 100644 --- a/qabelbox/src/main/java/de/qabel/qabelbox/base/CrashReportingActivity.kt +++ b/qabelbox/src/main/java/de/qabel/qabelbox/base/CrashReportingActivity.kt @@ -2,6 +2,7 @@ package de.qabel.qabelbox.base import android.os.Bundle import de.qabel.core.logging.QabelLog +import de.qabel.qabelbox.listeners.IdleCallback import de.qabel.qabelbox.reporter.CrashReporter import javax.inject.Inject @@ -9,6 +10,12 @@ open class CrashReportingActivity : BaseActivity(), QabelLog { @Inject lateinit var crashReporter: CrashReporter + var idleCallback: IdleCallback? = null + + fun busy() = idleCallback?.busy() + + fun idle() = idleCallback?.idle() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) applicationComponent.inject(this) diff --git a/qabelbox/src/main/java/de/qabel/qabelbox/base/MainActivity.kt b/qabelbox/src/main/java/de/qabel/qabelbox/base/MainActivity.kt index d8ee63fe..7ed4f2af 100644 --- a/qabelbox/src/main/java/de/qabel/qabelbox/base/MainActivity.kt +++ b/qabelbox/src/main/java/de/qabel/qabelbox/base/MainActivity.kt @@ -280,6 +280,7 @@ class MainActivity : CrashReportingActivity(), private var offlineIndicator: AlertDialog? = null override fun handleConnectionLost(): Unit { + busy() runOnUiThread { if (offlineIndicator == null) { val builder = AlertDialog.Builder(this@MainActivity) @@ -301,10 +302,12 @@ class MainActivity : CrashReportingActivity(), } else { offlineIndicator?.show() } + idle() } } override fun handleConnectionEstablished() { + busy() runOnUiThread { offlineIndicator?.let { if (it.isShowing) { @@ -312,6 +315,7 @@ class MainActivity : CrashReportingActivity(), offlineIndicator = null } } + idle() } } @@ -614,9 +618,7 @@ class MainActivity : CrashReportingActivity(), startActivity(i) } - override fun getComponent(): ActiveIdentityComponent { - return component - } + override fun getComponent() = component companion object {