Files
purchases-ios/Tests/UnitTests/StoreKitExtensions/StoreKitErrorTests.swift
T

85 lines
2.5 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
//
// StoreKitErrorTests.swift
//
// Created by Nacho Soto on 4/8/22.
import Nimble
@testable import RevenueCat
import StoreKit
import XCTest
@available(iOS 15.0, tvOS 15.0, watchOS 8.0, macOS 12.0, *)
class StoreKitErrorTests: BaseErrorTests {
override func setUpWithError() throws {
try super.setUpWithError()
try AvailabilityChecks.iOS15APIAvailableOrSkipTest()
}
func testUserCancelledError() {
let error: StoreKitError = .userCancelled
verifyPurchasesError(error,
expectedCode: .purchaseCancelledError,
underlyingError: error)
}
func testNetworkError() {
let underlyingError: URLError = .init(.badServerResponse)
let error: StoreKitError = .networkError(underlyingError)
verifyPurchasesError(error,
expectedCode: .networkError,
underlyingError: underlyingError)
}
func testSystemError() {
let underlyingError: URLError = .init(.cannotCreateFile)
let error: StoreKitError = .systemError(underlyingError)
verifyPurchasesError(error,
expectedCode: .storeProblemError,
underlyingError: underlyingError)
}
func testNotAvailableInStorefrontError() {
let error: StoreKitError = .notAvailableInStorefront
verifyPurchasesError(error,
expectedCode: .productNotAvailableForPurchaseError,
underlyingError: error)
}
#if swift(>=5.6)
func testNotEntitledError() throws {
guard #available(iOS 15.4, tvOS 15.4, *) else {
throw XCTSkip("Required API is not available for this test.")
}
let error: StoreKitError = .notEntitled
verifyPurchasesError(error,
expectedCode: .storeProblemError,
underlyingError: error)
}
#endif
func testUnknownError() {
let error: StoreKitError = .unknown
verifyPurchasesError(error,
expectedCode: .storeProblemError,
underlyingError: error)
}
}