Expand onboarding and adaptive keyboard intelligence
Add resilient usage analytics, OOBE gateway flows, clipboard semantic ranking, purchase recovery, style learning, and managed current-information search.
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// AnalyticsAttributionTests.swift
|
||||
// OSGKeyboardTests
|
||||
//
|
||||
// FIRST_OPEN attribution accepts only trusted, structured launch signals.
|
||||
|
||||
import Foundation
|
||||
@testable import OSGKeyboard
|
||||
import OSGKeyboardShared
|
||||
import XCTest
|
||||
|
||||
final class AnalyticsAttributionTests: XCTestCase {
|
||||
private let validCode = "Abcdefghij_1234567890-"
|
||||
|
||||
func testOrdinaryColdLaunchIsAppStoreOrganic() {
|
||||
XCTAssertEqual(
|
||||
AnalyticsFirstOpenAttribution.ordinaryLaunch,
|
||||
.appStoreOrganic
|
||||
)
|
||||
}
|
||||
|
||||
func testTrustedReferralColdLaunchIsReferral() {
|
||||
let url = URL(string: "https://osglab.com/i/\(validCode)")!
|
||||
|
||||
XCTAssertEqual(
|
||||
AnalyticsFirstOpenAttribution.trustedChannel(for: url),
|
||||
.referral
|
||||
)
|
||||
}
|
||||
|
||||
func testUntrustedQueryCannotCreateSocialAttribution() {
|
||||
let untrusted = URL(
|
||||
string: "https://osglab.com/campaign?source=SOCIAL_CONTENT"
|
||||
)!
|
||||
let referralWithFreeText = URL(
|
||||
string: "https://osglab.com/i/\(validCode)?source=anything"
|
||||
)!
|
||||
|
||||
XCTAssertNil(AnalyticsFirstOpenAttribution.trustedChannel(for: untrusted))
|
||||
XCTAssertEqual(
|
||||
AnalyticsFirstOpenAttribution.trustedChannel(for: referralWithFreeText),
|
||||
.referral
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user