forked from robotmedia/RMStore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRMStoreTransactionTests.m
More file actions
90 lines (73 loc) · 3.29 KB
/
Copy pathRMStoreTransactionTests.m
File metadata and controls
90 lines (73 loc) · 3.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//
// RMStoreTransactionTests.m
// RMStore
//
// Created by Hermes on 10/17/13.
// Copyright (c) 2013 Robot Media. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "RMStoreTransaction.h"
#import <OCMock/OCMock.h>
@interface RMStoreTransactionTests : XCTestCase
@end
@implementation RMStoreTransactionTests
- (void)setUp
{
[super setUp];
// Put setup code here; it will be run once, before the first test case.
}
- (void)testInitWithPaymentTransaction
{
SKPaymentTransaction *paymentTransaction = [self mockPaymentTransactionOfProductIdentifer:@"test"];
RMStoreTransaction *transaction = [[RMStoreTransaction alloc] initWithPaymentTransaction:paymentTransaction];
SKPayment *payment = paymentTransaction.payment;
XCTAssertNotNil(transaction, @"");
XCTAssertEqualObjects(transaction.productIdentifier, payment.productIdentifier, @"");
XCTAssertEqualObjects(transaction.transactionDate, paymentTransaction.transactionDate, @"");
XCTAssertEqualObjects(transaction.transactionIdentifier, paymentTransaction.transactionIdentifier, @"");
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 70000
XCTAssertEqualObjects(transaction.transactionReceipt, paymentTransaction.transactionReceipt, @"");
#endif
XCTAssertFalse(transaction.consumed, @"");
}
#pragma mark - NSCoding
- (void)testCoding
{
RMStoreTransaction *transaction = [[RMStoreTransaction alloc] init];
transaction.productIdentifier = @"test";
transaction.transactionDate = [NSDate date];
transaction.transactionIdentifier = @"transaction";
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 70000
transaction.transactionReceipt = [NSData data];
#endif
transaction.consumed = YES;
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:transaction];
[archiver finishEncoding];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
RMStoreTransaction *decodedTransaction = [unarchiver decodeObject];
XCTAssertNotNil(decodedTransaction, @"");
XCTAssertEqualObjects(decodedTransaction.productIdentifier, transaction.productIdentifier, @"");
XCTAssertEqualObjects(decodedTransaction.transactionDate, transaction.transactionDate, @"");
XCTAssertEqualObjects(decodedTransaction.transactionIdentifier, transaction.transactionIdentifier, @"");
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 70000
XCTAssertEqualObjects(decodedTransaction.transactionReceipt, transaction.transactionReceipt, @"");
#endif
XCTAssertEqual(decodedTransaction.consumed, transaction.consumed, @"");
}
#pragma mark - Private
- (SKPaymentTransaction*)mockPaymentTransactionOfProductIdentifer:(NSString*)productIdentifier
{
id transaction = [OCMockObject mockForClass:[SKPaymentTransaction class]];
[[[transaction stub] andReturn:[NSDate date]] transactionDate];
[[[transaction stub] andReturn:@"transaction"] transactionIdentifier];
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 70000
[[[transaction stub] andReturn:[NSData data]] transactionReceipt];
#endif
id payment = [OCMockObject mockForClass:[SKPayment class]];
[[[payment stub] andReturn:productIdentifier] productIdentifier];
[[[transaction stub] andReturn:payment] payment];
return transaction;
}
@end