Files
purchases-ios/Tests/UnitTests/Purchasing/ErrorCodeTests.swift
T

214 lines
7.9 KiB
Swift

//
// Copyright RevenueCat Inc. All Rights Reserved.
//
// Licensed under the MIT License (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://opensource.org/licenses/MIT
//
// ErrorCodeTests.swift
//
// Created by Joshua Liebowitz on 9/16/21.
import Foundation
import Nimble
import XCTest
@testable import RevenueCat
class ErrorCodeTests: TestCase {
func testUnknownError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .unknownError, expectedRawValue: 0)
}
func testPurchaseCancelledError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .purchaseCancelledError, expectedRawValue: 1)
}
func testStoreProblemError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .storeProblemError, expectedRawValue: 2)
}
func testPurchaseNotAllowedError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .purchaseNotAllowedError, expectedRawValue: 3)
}
func testPurchaseInvalidError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .purchaseInvalidError, expectedRawValue: 4)
}
func testProductNotAvailableForPurchaseError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .productNotAvailableForPurchaseError, expectedRawValue: 5)
}
func testProductAlreadyPurchasedError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .productAlreadyPurchasedError, expectedRawValue: 6)
}
func testReceiptAlreadyInUseError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .receiptAlreadyInUseError, expectedRawValue: 7)
}
func testInvalidReceiptError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidReceiptError, expectedRawValue: 8)
}
func testMissingReceiptFileError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .missingReceiptFileError, expectedRawValue: 9)
}
func testNetworkError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .networkError, expectedRawValue: 10)
}
func testInvalidCredentialsError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidCredentialsError, expectedRawValue: 11)
}
func testUnexpectedBackendResponseError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .unexpectedBackendResponseError, expectedRawValue: 12)
}
func testReceiptInUseByOtherSubscriberError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .receiptInUseByOtherSubscriberError, expectedRawValue: 13)
}
func testInvalidAppUserIdError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidAppUserIdError, expectedRawValue: 14)
}
func testOperationAlreadyInProgressForProductError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .operationAlreadyInProgressForProductError,
expectedRawValue: 15)
}
func testUnknownBackendError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .unknownBackendError, expectedRawValue: 16)
}
func testInvalidAppleSubscriptionKeyError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidAppleSubscriptionKeyError, expectedRawValue: 17)
}
func testIneligibleError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .ineligibleError, expectedRawValue: 18)
}
func testInsufficientPermissionsError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .insufficientPermissionsError, expectedRawValue: 19)
}
func testPaymentPendingError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .paymentPendingError, expectedRawValue: 20)
}
func testInvalidSubscriberAttributesError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidSubscriberAttributesError, expectedRawValue: 21)
}
func testLogOutAnonymousUserError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .logOutAnonymousUserError, expectedRawValue: 22)
}
func testConfigurationError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .configurationError, expectedRawValue: 23)
}
func testUnsupportedError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .unsupportedError, expectedRawValue: 24)
}
func testEmptySubscriberAttributes() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .emptySubscriberAttributes, expectedRawValue: 25)
}
func testProductDiscountMissingIdentifierError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .productDiscountMissingIdentifierError, expectedRawValue: 26)
}
func testProductDiscountMissingSubscriptionGroupIdentifierError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .productDiscountMissingSubscriptionGroupIdentifierError,
expectedRawValue: 28)
}
func testCustomerInfoError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .customerInfoError,
expectedRawValue: 29)
}
func testSystemInfoError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .systemInfoError,
expectedRawValue: 30)
}
func testBeginRefundRequestError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .beginRefundRequestError,
expectedRawValue: 31)
}
func testProductRequestTimedOut() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .productRequestTimedOut,
expectedRawValue: 32)
}
func testAPIEndpointBlockedError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .apiEndpointBlockedError,
expectedRawValue: 33)
}
func testInvalidPromotionalOffer() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidPromotionalOfferError,
expectedRawValue: 34)
}
func testOfflineConnectionError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .offlineConnectionError,
expectedRawValue: 35)
}
func testFeatureNotAvailableInCustomEntitlementsComputationMode() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .featureNotAvailableInCustomEntitlementsComputationMode,
expectedRawValue: 36)
}
func testSignatureVerificationFailedError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .signatureVerificationFailed,
expectedRawValue: 37)
}
func testFeatureNotSupportedWithStoreKit1Error() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .featureNotSupportedWithStoreKit1,
expectedRawValue: 38)
}
func testInvalidWebPurchaseTokenError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .invalidWebPurchaseToken,
expectedRawValue: 39)
}
func testPurchaseBelongsToOtherUserError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .purchaseBelongsToOtherUser,
expectedRawValue: 40)
}
func testExpiredWebPurchaseTokenError() {
ensureEnumCaseMatchesExpectedRawValue(errorCode: .expiredWebPurchaseToken,
expectedRawValue: 41)
}
func testErrorCodeEnumCasesAreCoveredInTests() {
expect(ErrorCode.allCases).to(haveCount(41))
}
func ensureEnumCaseMatchesExpectedRawValue(errorCode: ErrorCode, expectedRawValue: Int) {
expect(errorCode.rawValue).to(equal(expectedRawValue))
}
func testRemovedErrorCodesAreNotReAdded() {
expect(ErrorCode.reservedRawValues).toNot(contain(ErrorCode.allCases.map { $0.rawValue }))
}
}