Skip to content

Commit

Permalink
✅ Add PushMonitor tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mmaatttt authored and iujames committed Sep 17, 2024
1 parent dbd4a7a commit fd30c9d
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class AutoPropertyDecoratorTests: XCTestCase {
XCTAssertEqual([], Set(try XCTUnwrap(decorated.properties).keys).symmetricDifference(expectedPropertyKeys))
let expectedEventAutoPropertyKeys = ["userId", "_deviceModel", "_bundlePackageId", "_lastBrowserLanguage", "_localId", "_appName", "_lastSeenAt", "_updatedAt", "_sdkVersion", "_osVersion", "_operatingSystem", "_deviceType", "_appVersion", "_isAnonymous", "_appBuild", "_sdkName", "_appId", "_sessionPageviews", "_sessionRandomizer", "_sessionId"]
XCTAssertEqual([], Set(try XCTUnwrap(decorated.identityAutoProperties).keys).symmetricDifference(expectedEventAutoPropertyKeys))
let expectedEventDeviceAutoPropertyKeys = ["_deviceId", "_language", "_pushToken", "_deviceType", "_appBuild", "_appId", "_operatingSystem", "_bundlePackageId", "_deviceModel", "_appVersion", "_sdkVersion", "_osVersion", "_sdkName", "_appName"]
let expectedEventDeviceAutoPropertyKeys = ["_deviceId", "_language", "_pushToken", "_pushEnabledBackground", "_pushEnabled", "_deviceType", "_appBuild", "_appId", "_operatingSystem", "_bundlePackageId", "_deviceModel", "_appVersion", "_sdkVersion", "_osVersion", "_sdkName", "_appName"]
XCTAssertEqual([], Set(try XCTUnwrap(decorated.deviceAutoProperties).keys).symmetricDifference(expectedEventDeviceAutoPropertyKeys))
}

Expand Down
7 changes: 7 additions & 0 deletions Tests/AppcuesKitTests/MockAppcues.swift
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class MockAppcues: Appcues {
container.register(ActivityProcessing.self, value: activityProcessor)
container.register(ActivityStoring.self, value: activityStorage)
container.register(AnalyticsTracking.self, value: analyticsTracker)
container.register(PushMonitoring.self, value: pushMonitor)

if #available(iOS 13.0, *) {
container.register(DeepLinkHandling.self, value: deepLinkHandler)
Expand Down Expand Up @@ -62,6 +63,7 @@ class MockAppcues: Appcues {
var activityStorage = MockActivityStorage()
var networking = MockNetworking()
var analyticsTracker = MockAnalyticsTracker()
var pushMonitor = MockPushMonitor()

// must wrap in @available since MockExperienceRenderer has a stored property with
// type ExperienceData in it, which is 13+
Expand Down Expand Up @@ -365,3 +367,8 @@ class MockAnalyticsTracker: AnalyticsTracking {
onFlush?()
}
}

class MockPushMonitor: PushMonitoring {
var pushEnabled: Bool = false
var pushBackgroundEnabled: Bool = false
}
63 changes: 63 additions & 0 deletions Tests/AppcuesKitTests/PushMonitorTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
//
// PushMonitorTests.swift
// AppcuesKitTests
//
// Created by Matt on 2024-02-26.
// Copyright © 2024 Appcues. All rights reserved.
//

import XCTest
@testable import AppcuesKit

class PushMonitorTests: XCTestCase {

var pushMonitor: PushMonitor!
var appcues: MockAppcues!

override func setUp() {
let config = Appcues.Config(accountID: "00000", applicationID: "abc")
appcues = MockAppcues(config: config)
pushMonitor = PushMonitor(container: appcues.container)
}

func testNoTokenNotAuthorized() throws {
// Arrange
appcues.storage.pushToken = nil
pushMonitor.mockPushStatus(.denied)

// Assert
XCTAssertFalse(pushMonitor.pushEnabled)
XCTAssertFalse(pushMonitor.pushBackgroundEnabled)
}

func testNoTokenAuthorized() throws {
// Arrange
appcues.storage.pushToken = nil
pushMonitor.mockPushStatus(.authorized)

// Assert
XCTAssertFalse(pushMonitor.pushEnabled)
XCTAssertFalse(pushMonitor.pushBackgroundEnabled)
}

func testTokenNotAuthorized() throws {
// Arrange
appcues.storage.pushToken = "<some-token>"
pushMonitor.mockPushStatus(.denied)

// Assert
XCTAssertFalse(pushMonitor.pushEnabled)
XCTAssertTrue(pushMonitor.pushBackgroundEnabled)
}

func testTokenAuthorized() throws {
// Arrange
appcues.storage.pushToken = "<some-token>"
pushMonitor.mockPushStatus(.authorized)

// Assert
XCTAssertTrue(pushMonitor.pushEnabled)
XCTAssertTrue(pushMonitor.pushBackgroundEnabled)
}

}

0 comments on commit fd30c9d

Please sign in to comment.