PurchasingRuntimeTest.cs
4.89 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#if UNITY_PURCHASING || UNITY_UNIFIED_IAP
using System;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEngine.Purchasing;
using UnityEditor.Purchasing;
using UnityEngine.Purchasing.Extension;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
namespace Test
{
public class PurchasingRuntimeTest
{
private IList<ProductDefinition> products;
private int transactionID;
private TransactionLog transactionLog;
private List<ProductDescription> GetProductDescriptions(IEnumerable<ProductDefinition> products) {
return (from product in products
let receipt = "fakeReceipt"
let tranID = (transactionID++).ToString()
let metadata = new ProductMetadata ("Fake", "Fake", "Fake", "GBP", 1.23m)
select new ProductDescription (product.storeSpecificId, metadata, receipt, tranID)).ToList();
}
private ProductMetadata metadata;
private bool _isPurchasingEnabled;
[OneTimeSetUpAttribute]
public void BeforeAll()
{
_isPurchasingEnabled = PurchasingSettings.enabled;
if (!_isPurchasingEnabled)
{
Debug.Log("Temporarily Enabling Purchasing for tests");
}
PurchasingSettings.enabled = true;
}
[OneTimeSetUpAttribute]
public void AfterAll()
{
if (!_isPurchasingEnabled)
{
Debug.Log("Purchasing tests complete. Purchasing will now be disabled");
}
PurchasingSettings.enabled = _isPurchasingEnabled;
}
[SetUp]
public void Init()
{
metadata = new ProductMetadata("£1.23", "Fake title", "Fake desc", "GBP", 1.23m);
products = new List<ProductDefinition> ();
products.Add (new ProductDefinition ("ammo", "ammo.ios", ProductType.Consumable));
products.Add (new ProductDefinition ("bomb", "bomb.ios", ProductType.Consumable));
products.Add (new ProductDefinition ("sword", "sword.ios", ProductType.NonConsumable));
products.Add (new ProductDefinition ("nanogenes", "nanogenes.ios", ProductType.Subscription));
}
[Test]
public void TestProductMetaData()
{
Assert.AreEqual(metadata.localizedPriceString, "£1.23");
Assert.AreEqual(metadata.localizedTitle, "Fake title");
Assert.AreEqual(metadata.localizedDescription, "Fake desc");
Assert.AreEqual(metadata.isoCurrencyCode, "GBP");
Assert.AreEqual(metadata.localizedPrice, 1.23m);
}
[Test]
public void TestProductDescription()
{
var prod1 = new ProductDescription("testID", metadata);
Assert.AreEqual(prod1.storeSpecificId, "testID");
Assert.AreEqual(prod1.type, ProductType.Consumable);
Assert.AreEqual(prod1.metadata, metadata);
Assert.That(prod1.receipt, Is.Null);
Assert.That(prod1.transactionId, Is.Null);
}
[Test]
public void TestProductConsumables()
{
Assert.IsNotEmpty(products);
Assert.AreEqual(products.Count, 4);
var product = products[0];
Assert.AreEqual(product.id, "ammo");
Assert.AreEqual(product.storeSpecificId, "ammo.ios");
Assert.AreEqual(product.type, ProductType.Consumable);
}
private static string GetTempFolder() {
var path = Path.Combine (Directory.GetCurrentDirectory (), "Test/tmp");
if (Directory.Exists (path)) {
Directory.Delete (path, true);
}
Directory.CreateDirectory(path);
return path;
}
class DummyProducts
{
public static ProductDefinition Consumable =
new ProductDefinition ("coins", "com.brainDeadDesign.DepletedUraniumBullets", ProductType.Consumable, true, new List<PayoutDefinition> { new PayoutDefinition (PayoutType.Currency, "gold", 123), new PayoutDefinition (PayoutType.Resource, "health", 100) });
public static ProductDefinition NonConsumable =
new ProductDefinition("Rotary Cannon", "com.brainDeadDesign.GAU-12Equalizer", ProductType.NonConsumable, true, new PayoutDefinition(PayoutType.Item, "Cannon", 1, "anti-materiel cannon"));
public static ProductDefinition Subscription =
new ProductDefinition("subscription", "com.brainDeadDesign.subscription", ProductType.Subscription);
public static HashSet<ProductDefinition> Products = new HashSet<ProductDefinition>
{
Consumable,
NonConsumable,
Subscription
};
public static ReadOnlyCollection<ProductDefinition> ProductCollection =
new ReadOnlyCollection<ProductDefinition> (Products.ToList());
public static ProductMetadata DummyMetadata =
new ProductMetadata("£1.99", "Dummy product title", "Dummy product description", "GBP", 1.99m);
}
}
}
#endif