Add UnitTestsAppCoordinator.

This commit is contained in:
Doug
2023-04-25 17:12:56 +01:00
committed by Stefan Ceriu
parent 1782f3058b
commit 2146c71232
7 changed files with 50 additions and 48 deletions
+10 -12
View File
@@ -19,15 +19,13 @@ import AnalyticsEvents
import XCTest
class AnalyticsTests: XCTestCase {
private var applicationSettings: AppSettings!
private var appSettings: AppSettings { ServiceLocator.shared.settings }
private var analyticsClient: AnalyticsClientMock!
private var bugReportService: BugReportServiceMock!
override func setUp() {
AppSettings.configureWithSuiteName("io.element.elementx.unitests")
AppSettings.reset()
applicationSettings = AppSettings()
ServiceLocator.shared.register(appSettings: applicationSettings)
bugReportService = BugReportServiceMock()
bugReportService.isRunning = false
ServiceLocator.shared.register(bugReportService: bugReportService)
@@ -47,7 +45,7 @@ class AnalyticsTests: XCTestCase {
func testAnalyticsPromptUserDeclinedPostHog() {
// Given an existing install of the app where the user previously declined PostHog
applicationSettings.analyticsConsentState = .optedOut
appSettings.analyticsConsentState = .optedOut
// When the user is prompted for analytics
let showPrompt = ServiceLocator.shared.analytics.shouldShowAnalyticsPrompt
@@ -58,7 +56,7 @@ class AnalyticsTests: XCTestCase {
func testAnalyticsPromptUserAcceptedPostHog() {
// Given an existing install of the app where the user previously accepted PostHog
applicationSettings.analyticsConsentState = .optedIn
appSettings.analyticsConsentState = .optedIn
// When the user is prompted for analytics
let showPrompt = ServiceLocator.shared.analytics.shouldShowAnalyticsPrompt
@@ -81,7 +79,7 @@ class AnalyticsTests: XCTestCase {
// When analytics is opt-out
ServiceLocator.shared.analytics.optOut()
// Then analytics should be disabled
XCTAssertEqual(applicationSettings.analyticsConsentState, .optedOut)
XCTAssertEqual(appSettings.analyticsConsentState, .optedOut)
XCTAssertFalse(ServiceLocator.shared.analytics.isEnabled)
XCTAssertFalse(ServiceLocator.shared.analytics.isRunning)
XCTAssertFalse(analyticsClient.isRunning)
@@ -96,7 +94,7 @@ class AnalyticsTests: XCTestCase {
// When analytics is opt-in
ServiceLocator.shared.analytics.optIn()
// The analytics should be enabled
XCTAssertEqual(applicationSettings.analyticsConsentState, .optedIn)
XCTAssertEqual(appSettings.analyticsConsentState, .optedIn)
XCTAssertTrue(ServiceLocator.shared.analytics.isEnabled)
// Analytics client and the bug report service should have been started
XCTAssertTrue(analyticsClient.startCalled)
@@ -105,7 +103,7 @@ class AnalyticsTests: XCTestCase {
func testAnalyticsStartIfNotEnabled() {
// Given an existing install of the app where the user previously declined the tracking
applicationSettings.analyticsConsentState = .optedOut
appSettings.analyticsConsentState = .optedOut
// Analytics should not start
XCTAssertFalse(ServiceLocator.shared.analytics.isEnabled)
ServiceLocator.shared.analytics.startIfEnabled()
@@ -115,7 +113,7 @@ class AnalyticsTests: XCTestCase {
func testAnalyticsStartIfEnabled() {
// Given an existing install of the app where the user previously accpeted the tracking
applicationSettings.analyticsConsentState = .optedIn
appSettings.analyticsConsentState = .optedIn
// Analytics should start
XCTAssertTrue(ServiceLocator.shared.analytics.isEnabled)
ServiceLocator.shared.analytics.startIfEnabled()
@@ -188,14 +186,14 @@ class AnalyticsTests: XCTestCase {
func testResetConsentState() {
// Given an existing install of the app where the user previously accpeted the tracking
applicationSettings.analyticsConsentState = .optedIn
appSettings.analyticsConsentState = .optedIn
XCTAssertFalse(ServiceLocator.shared.analytics.shouldShowAnalyticsPrompt)
// When forgetting analytics consents
ServiceLocator.shared.analytics.resetConsentState()
// Then the analytics prompt should be presented again
XCTAssertEqual(applicationSettings.analyticsConsentState, .unknown)
XCTAssertEqual(appSettings.analyticsConsentState, .unknown)
XCTAssertTrue(ServiceLocator.shared.analytics.shouldShowAnalyticsPrompt)
}
}