blob: ac36aae5acb513302c2e797861070cd0e3bad214 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import <XCTest/XCTest.h>
#import "Stubs.h"
@import in_app_purchase_storekit;
#pragma tests start here
@interface RequestHandlerTest : XCTestCase
@end
@implementation RequestHandlerTest
- (void)testRequestHandlerWithProductRequestSuccess {
SKProductRequestStub *request =
[[SKProductRequestStub alloc] initWithProductIdentifiers:[NSSet setWithArray:@[ @"123" ]]];
FIAPRequestHandler *handler = [[FIAPRequestHandler alloc] initWithRequest:request];
XCTestExpectation *expectation =
[self expectationWithDescription:@"expect to get response with 1 product"];
__block SKProductsResponse *response;
[handler
startProductRequestWithCompletionHandler:^(SKProductsResponse *_Nullable r, NSError *error) {
response = r;
[expectation fulfill];
}];
[self waitForExpectations:@[ expectation ] timeout:5];
XCTAssertNotNil(response);
XCTAssertEqual(response.products.count, 1);
SKProduct *product = response.products.firstObject;
XCTAssertTrue([product.productIdentifier isEqualToString:@"123"]);
}
- (void)testRequestHandlerWithProductRequestFailure {
SKProductRequestStub *request = [[SKProductRequestStub alloc]
initWithFailureError:[NSError errorWithDomain:@"test" code:123 userInfo:@{}]];
FIAPRequestHandler *handler = [[FIAPRequestHandler alloc] initWithRequest:request];
XCTestExpectation *expectation =
[self expectationWithDescription:@"expect to get response with 1 product"];
__block NSError *error;
__block SKProductsResponse *response;
[handler startProductRequestWithCompletionHandler:^(SKProductsResponse *_Nullable r, NSError *e) {
error = e;
response = r;
[expectation fulfill];
}];
[self waitForExpectations:@[ expectation ] timeout:5];
XCTAssertNotNil(error);
XCTAssertEqual(error.domain, @"test");
XCTAssertNil(response);
}
- (void)testRequestHandlerWithRefreshReceiptSuccess {
SKReceiptRefreshRequestStub *request =
[[SKReceiptRefreshRequestStub alloc] initWithReceiptProperties:nil];
FIAPRequestHandler *handler = [[FIAPRequestHandler alloc] initWithRequest:request];
XCTestExpectation *expectation = [self expectationWithDescription:@"expect no error"];
__block NSError *e;
[handler
startProductRequestWithCompletionHandler:^(SKProductsResponse *_Nullable r, NSError *error) {
e = error;
[expectation fulfill];
}];
[self waitForExpectations:@[ expectation ] timeout:5];
XCTAssertNil(e);
}
- (void)testRequestHandlerWithRefreshReceiptFailure {
SKReceiptRefreshRequestStub *request = [[SKReceiptRefreshRequestStub alloc]
initWithFailureError:[NSError errorWithDomain:@"test" code:123 userInfo:@{}]];
FIAPRequestHandler *handler = [[FIAPRequestHandler alloc] initWithRequest:request];
XCTestExpectation *expectation = [self expectationWithDescription:@"expect error"];
__block NSError *error;
__block SKProductsResponse *response;
[handler startProductRequestWithCompletionHandler:^(SKProductsResponse *_Nullable r, NSError *e) {
error = e;
response = r;
[expectation fulfill];
}];
[self waitForExpectations:@[ expectation ] timeout:5];
XCTAssertNotNil(error);
XCTAssertEqual(error.domain, @"test");
XCTAssertNil(response);
}
@end