Remove legacy Commerce types, unused helpers, duplicate SFTP progress code, and 28 unreferenced strings. Drop fixture-only tests and arbitrary screenshot size assertions while retaining behavioral coverage. Validation: 2,592 macOS tests, 40 focused macOS tests, and 53 iOS tests passed. Swift formatting, AppStrings, and Chinese localization checks passed.
49 lines
1.8 KiB
Swift
49 lines
1.8 KiB
Swift
import Foundation
|
|
import TermindApplication
|
|
import TermindDomain
|
|
import TermindInfrastructure
|
|
import TermindPersistence
|
|
import TermindPresentation
|
|
import TermindRemoteInfrastructure
|
|
import Testing
|
|
|
|
@testable import Termind
|
|
|
|
struct ProAccessTests {
|
|
@Test
|
|
func entitlementStatesExposeOnlyRealAccess() {
|
|
#expect(!EntitlementStatus.loading.hasProAccess)
|
|
#expect(!EntitlementStatus.free.hasProAccess)
|
|
#expect(!EntitlementStatus.verificationFailed.hasProAccess)
|
|
#expect(EntitlementStatus.purchased(.purchased).hasProAccess)
|
|
#expect(EntitlementStatus.purchased(.familyShared).hasProAccess)
|
|
#expect(
|
|
EntitlementStatus.subscription(
|
|
ProSubscriptionStatus(
|
|
phase: .introductoryTrial, expiresAt: .distantFuture, willAutoRenew: true,
|
|
ownership: .purchased)
|
|
).hasProAccess)
|
|
#expect(
|
|
EntitlementStatus.subscription(
|
|
ProSubscriptionStatus(
|
|
phase: .gracePeriod, expiresAt: .distantFuture, willAutoRenew: true,
|
|
ownership: .purchased)
|
|
).hasProAccess)
|
|
#expect(
|
|
!EntitlementStatus.subscription(
|
|
ProSubscriptionStatus(
|
|
phase: .billingRetry, expiresAt: .now, willAutoRenew: true,
|
|
ownership: .purchased)
|
|
).hasProAccess)
|
|
#expect(EntitlementStatus.unrestrictedForTesting.hasProAccess)
|
|
}
|
|
|
|
@Test(arguments: ProFeature.allCases) @MainActor
|
|
func freeAccessRefusesEveryPaidFeatureBeforeAnyCallerCanProceed(feature: ProFeature) {
|
|
let access = ProAccessController.testing(status: .free)
|
|
#expect(!access.canUse(feature))
|
|
#expect(!access.require(feature))
|
|
#expect(access.isPaywallPresented)
|
|
}
|
|
}
|