Files
Termind/TFMTests/ProAccessTests.swift
T
Kaede Akino 3708a7c54f refactor: remove obsolete code and redundant tests
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.
2026-10-02 17:50:47 +08:00

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)
}
}