From 672462f2303a2822b67020c3d2989c147cd7d359 Mon Sep 17 00:00:00 2001 From: Sourabh Date: Wed, 21 Aug 2019 15:52:01 +0000 Subject: [PATCH] add tests for DefaultQuickActionSheetController (#4835) --- .../DefaultQuickActionSheetControllerTest.kt | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt diff --git a/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt b/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt new file mode 100644 index 000000000..e39108e44 --- /dev/null +++ b/app/src/test/java/org/mozilla/fenix/quickactionsheet/DefaultQuickActionSheetControllerTest.kt @@ -0,0 +1,80 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * * License, v. 2.0. If a copy of the MPL was not distributed with this + * * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +package org.mozilla.fenix.quickactionsheet + +import androidx.navigation.NavController +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import mozilla.components.browser.session.Session +import mozilla.components.feature.app.links.AppLinksUseCases +import org.junit.Before +import org.junit.Test +import org.mozilla.fenix.HomeActivity +import org.mozilla.fenix.R +import org.mozilla.fenix.browser.BrowserFragmentDirections +import org.mozilla.fenix.components.metrics.Event +import org.mozilla.fenix.components.metrics.MetricController +import org.mozilla.fenix.ext.metrics +import org.mozilla.fenix.ext.nav +import org.mozilla.fenix.utils.ItsNotBrokenSnack + +class DefaultQuickActionSheetControllerTest { + private val context: HomeActivity = mockk(relaxed = true) + private val navController: NavController = mockk(relaxed = true) + private val currentSession: Session = mockk(relaxed = true) + private val appLinksUseCases: AppLinksUseCases = mockk(relaxed = true) + private val bookmarkTapped: (Session) -> Unit = mockk(relaxed = true) + private val metrics: MetricController = mockk(relaxed = true) + + private lateinit var controller: DefaultQuickActionSheetController + + @Before + fun setUp() { + controller = DefaultQuickActionSheetController( + context, + navController, + currentSession, + appLinksUseCases, + bookmarkTapped + ) + + every { context.metrics } returns metrics + } + + @Test + fun handleShare() { + controller.handleShare() + + verify { metrics.track(Event.QuickActionSheetShareTapped) } + verify { navController.nav(R.id.browserFragment, BrowserFragmentDirections.actionBrowserFragmentToShareFragment(currentSession.url)) } + } + + @Test + fun handleDownload() { + controller.handleDownload() + + verify { metrics.track(Event.QuickActionSheetDownloadTapped) } + verify { ItsNotBrokenSnack(context).showSnackbar(issueNumber = "348") } + } + + @Test + fun handleBookmark() { + controller.handleBookmark() + + verify { metrics.track(Event.QuickActionSheetBookmarkTapped) } + verify { bookmarkTapped(currentSession) } + } + + @Test + fun handleOpenLink() { + controller.handleOpenLink() + + verify { metrics.track(Event.QuickActionSheetOpenInAppTapped) } + verify { appLinksUseCases.appLinkRedirect.invoke(currentSession.url) } + } +} \ No newline at end of file