parent
a0e29574a2
commit
658ad81d70
@ -0,0 +1,14 @@
|
||||
/*
|
||||
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.ext
|
||||
|
||||
import android.content.SharedPreferences
|
||||
|
||||
/**
|
||||
* Clear everything in shared preferences and commit changes immediately.
|
||||
*/
|
||||
fun SharedPreferences.clearAndCommit() = this.edit().clear().commit()
|
@ -0,0 +1,354 @@
|
||||
/*
|
||||
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.utils
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules
|
||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.ASK_TO_ALLOW
|
||||
import mozilla.components.feature.sitepermissions.SitePermissionsRules.Action.BLOCKED
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.TestApplication
|
||||
import org.mozilla.fenix.ext.clearAndCommit
|
||||
import org.robolectric.annotation.Config
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
@Config(application = TestApplication::class)
|
||||
class SettingsTest {
|
||||
|
||||
lateinit var settings: Settings
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
settings = Settings.getInstance(testContext)
|
||||
.apply(Settings::clear)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun usePrivateMode() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.usePrivateMode)
|
||||
|
||||
// When
|
||||
settings.setPrivateMode(true)
|
||||
|
||||
// Then
|
||||
assertTrue(settings.usePrivateMode)
|
||||
|
||||
// When
|
||||
settings.setPrivateMode(false)
|
||||
|
||||
// Then
|
||||
assertFalse(settings.usePrivateMode)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun defaultSearchEngineName() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals("", settings.defaultSearchEngineName)
|
||||
|
||||
// When
|
||||
settings.setDefaultSearchEngineByName("Mozilla")
|
||||
|
||||
// Then
|
||||
assertEquals("Mozilla", settings.defaultSearchEngineName)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isCrashReportingEnabled_enabledInBuild() {
|
||||
// When
|
||||
clearExistingInstance()
|
||||
val settings = Settings.getInstance(testContext, isCrashReportEnabledInBuild = true)
|
||||
.apply(Settings::clear)
|
||||
|
||||
// Then
|
||||
assertTrue(settings.isCrashReportingEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isCrashReportingEnabled_disabledInBuild() {
|
||||
// When
|
||||
clearExistingInstance()
|
||||
val settings = Settings.getInstance(testContext, isCrashReportEnabledInBuild = false)
|
||||
.apply(Settings::clear)
|
||||
|
||||
// Then
|
||||
assertFalse(settings.isCrashReportingEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isRemoteDebuggingEnabled() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.isRemoteDebuggingEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun isTelemetryEnabled() {
|
||||
// When just created
|
||||
// Then
|
||||
assertTrue(settings.isTelemetryEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun autoBounceQuickActionSheetCount() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(0, settings.autoBounceQuickActionSheetCount)
|
||||
|
||||
// When
|
||||
settings.incrementAutomaticBounceQuickActionSheetCount()
|
||||
settings.incrementAutomaticBounceQuickActionSheetCount()
|
||||
|
||||
// Then
|
||||
assertEquals(2, settings.autoBounceQuickActionSheetCount)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldAutoBounceQuickActionSheet() {
|
||||
// When just created
|
||||
// Then
|
||||
assertTrue(settings.shouldAutoBounceQuickActionSheet)
|
||||
|
||||
// When
|
||||
settings.incrementAutomaticBounceQuickActionSheetCount()
|
||||
|
||||
// Then
|
||||
assertTrue(settings.shouldAutoBounceQuickActionSheet)
|
||||
|
||||
// When
|
||||
settings.incrementAutomaticBounceQuickActionSheetCount()
|
||||
|
||||
// Then
|
||||
assertFalse(settings.shouldAutoBounceQuickActionSheet)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldUseLightTheme() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.shouldUseLightTheme)
|
||||
|
||||
// When
|
||||
settings.setLightTheme(true)
|
||||
|
||||
// Then
|
||||
assertTrue(settings.shouldUseLightTheme)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldUseAutoSize() {
|
||||
// When just created
|
||||
// Then
|
||||
assertTrue(settings.shouldUseAutoSize)
|
||||
|
||||
// When
|
||||
settings.setAutoSize(false)
|
||||
|
||||
// Then
|
||||
assertFalse(settings.shouldUseAutoSize)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun fontSizeFactor() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(1f, settings.fontSizeFactor)
|
||||
|
||||
// When
|
||||
settings.setFontSizeFactor(2f)
|
||||
|
||||
// Then
|
||||
assertEquals(2f, settings.fontSizeFactor)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldShowVisitedSitesBookmarks() {
|
||||
// When just created
|
||||
// Then
|
||||
assertTrue(settings.shouldShowVisitedSitesBookmarks)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldUseDarkTheme() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.shouldUseDarkTheme)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldFollowDeviceTheme() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.shouldFollowDeviceTheme)
|
||||
|
||||
// When
|
||||
settings.setFollowDeviceTheme(true)
|
||||
|
||||
// Then
|
||||
assertTrue(settings.shouldFollowDeviceTheme)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldUseTrackingProtection() {
|
||||
// When
|
||||
// Then
|
||||
assertTrue(settings.shouldUseTrackingProtection)
|
||||
|
||||
// When
|
||||
settings.setTrackingProtection(false)
|
||||
|
||||
// Then
|
||||
assertFalse(settings.shouldUseTrackingProtection)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldUseAutoBatteryTheme() {
|
||||
// When just created
|
||||
// Then
|
||||
assertFalse(settings.shouldUseAutoBatteryTheme)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun showSearchSuggestions() {
|
||||
// When just created
|
||||
// Then
|
||||
assertTrue(settings.showSearchSuggestions())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun sitePermissionsPhoneFeatureCameraAction() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(ASK_TO_ALLOW, settings.getSitePermissionsPhoneFeatureCameraAction())
|
||||
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureCameraAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(BLOCKED, settings.getSitePermissionsPhoneFeatureCameraAction())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun sitePermissionsPhoneFeatureMicrophoneAction() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(ASK_TO_ALLOW, settings.getSitePermissionsPhoneFeatureMicrophoneAction())
|
||||
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureMicrophoneAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(BLOCKED, settings.getSitePermissionsPhoneFeatureMicrophoneAction())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun sitePermissionsPhoneFeatureNotificationAction() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(ASK_TO_ALLOW, settings.getSitePermissionsPhoneFeatureNotificationAction())
|
||||
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureNotificationAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(BLOCKED, settings.getSitePermissionsPhoneFeatureNotificationAction())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun sitePermissionsPhoneFeatureLocation() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(ASK_TO_ALLOW, settings.getSitePermissionsPhoneFeatureLocation())
|
||||
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureLocation(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(BLOCKED, settings.getSitePermissionsPhoneFeatureLocation())
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSitePermissionsCustomSettingsRules_default() {
|
||||
// When just created
|
||||
// Then
|
||||
assertEquals(
|
||||
allAskToAllow(),
|
||||
settings.getSitePermissionsCustomSettingsRules()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSitePermissionsCustomSettingsRules_camera() {
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureCameraAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(
|
||||
allAskToAllow().copy(camera = BLOCKED),
|
||||
settings.getSitePermissionsCustomSettingsRules()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSitePermissionsCustomSettingsRules_notification() {
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureNotificationAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(
|
||||
allAskToAllow().copy(notification = BLOCKED),
|
||||
settings.getSitePermissionsCustomSettingsRules()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSitePermissionsCustomSettingsRules_location() {
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureLocation(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(
|
||||
allAskToAllow().copy(location = BLOCKED),
|
||||
settings.getSitePermissionsCustomSettingsRules()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getSitePermissionsCustomSettingsRules_microphone() {
|
||||
// When
|
||||
settings.setSitePermissionsPhoneFeatureMicrophoneAction(BLOCKED)
|
||||
|
||||
// Then
|
||||
assertEquals(
|
||||
allAskToAllow().copy(microphone = BLOCKED),
|
||||
settings.getSitePermissionsCustomSettingsRules()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearExistingInstance() {
|
||||
Settings.instance = null
|
||||
}
|
||||
|
||||
private fun Settings.clear() {
|
||||
preferences.clearAndCommit()
|
||||
}
|
||||
|
||||
private fun allAskToAllow() = SitePermissionsRules(
|
||||
camera = ASK_TO_ALLOW,
|
||||
location = ASK_TO_ALLOW,
|
||||
microphone = ASK_TO_ALLOW,
|
||||
notification = ASK_TO_ALLOW
|
||||
)
|
Loading…
Reference in New Issue