PurchasingRuntimeTest.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #if UNITY_PURCHASING || UNITY_UNIFIED_IAP
  2. using System;
  3. using System.IO;
  4. using System.Linq;
  5. using UnityEngine;
  6. using UnityEditor;
  7. using UnityEngine.Purchasing;
  8. using UnityEditor.Purchasing;
  9. using UnityEngine.Purchasing.Extension;
  10. using UnityEngine.TestTools;
  11. using NUnit.Framework;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Collections.ObjectModel;
  15. using System.Runtime.Serialization;
  16. namespace Test
  17. {
  18. public class PurchasingRuntimeTest
  19. {
  20. private IList<ProductDefinition> products;
  21. private int transactionID;
  22. private TransactionLog transactionLog;
  23. private List<ProductDescription> GetProductDescriptions(IEnumerable<ProductDefinition> products) {
  24. return (from product in products
  25. let receipt = "fakeReceipt"
  26. let tranID = (transactionID++).ToString()
  27. let metadata = new ProductMetadata ("Fake", "Fake", "Fake", "GBP", 1.23m)
  28. select new ProductDescription (product.storeSpecificId, metadata, receipt, tranID)).ToList();
  29. }
  30. private ProductMetadata metadata;
  31. private bool _isPurchasingEnabled;
  32. [OneTimeSetUpAttribute]
  33. public void BeforeAll()
  34. {
  35. _isPurchasingEnabled = PurchasingSettings.enabled;
  36. if (!_isPurchasingEnabled)
  37. {
  38. Debug.Log("Temporarily Enabling Purchasing for tests");
  39. }
  40. PurchasingSettings.enabled = true;
  41. }
  42. [OneTimeSetUpAttribute]
  43. public void AfterAll()
  44. {
  45. if (!_isPurchasingEnabled)
  46. {
  47. Debug.Log("Purchasing tests complete. Purchasing will now be disabled");
  48. }
  49. PurchasingSettings.enabled = _isPurchasingEnabled;
  50. }
  51. [SetUp]
  52. public void Init()
  53. {
  54. metadata = new ProductMetadata("£1.23", "Fake title", "Fake desc", "GBP", 1.23m);
  55. products = new List<ProductDefinition> ();
  56. products.Add (new ProductDefinition ("ammo", "ammo.ios", ProductType.Consumable));
  57. products.Add (new ProductDefinition ("bomb", "bomb.ios", ProductType.Consumable));
  58. products.Add (new ProductDefinition ("sword", "sword.ios", ProductType.NonConsumable));
  59. products.Add (new ProductDefinition ("nanogenes", "nanogenes.ios", ProductType.Subscription));
  60. }
  61. [Test]
  62. public void TestProductMetaData()
  63. {
  64. Assert.AreEqual(metadata.localizedPriceString, "£1.23");
  65. Assert.AreEqual(metadata.localizedTitle, "Fake title");
  66. Assert.AreEqual(metadata.localizedDescription, "Fake desc");
  67. Assert.AreEqual(metadata.isoCurrencyCode, "GBP");
  68. Assert.AreEqual(metadata.localizedPrice, 1.23m);
  69. }
  70. [Test]
  71. public void TestProductDescription()
  72. {
  73. var prod1 = new ProductDescription("testID", metadata);
  74. Assert.AreEqual(prod1.storeSpecificId, "testID");
  75. Assert.AreEqual(prod1.type, ProductType.Consumable);
  76. Assert.AreEqual(prod1.metadata, metadata);
  77. Assert.That(prod1.receipt, Is.Null);
  78. Assert.That(prod1.transactionId, Is.Null);
  79. }
  80. [Test]
  81. public void TestProductConsumables()
  82. {
  83. Assert.IsNotEmpty(products);
  84. Assert.AreEqual(products.Count, 4);
  85. var product = products[0];
  86. Assert.AreEqual(product.id, "ammo");
  87. Assert.AreEqual(product.storeSpecificId, "ammo.ios");
  88. Assert.AreEqual(product.type, ProductType.Consumable);
  89. }
  90. private static string GetTempFolder() {
  91. var path = Path.Combine (Directory.GetCurrentDirectory (), "Test/tmp");
  92. if (Directory.Exists (path)) {
  93. Directory.Delete (path, true);
  94. }
  95. Directory.CreateDirectory(path);
  96. return path;
  97. }
  98. class DummyProducts
  99. {
  100. public static ProductDefinition Consumable =
  101. new ProductDefinition ("coins", "com.brainDeadDesign.DepletedUraniumBullets", ProductType.Consumable, true, new List<PayoutDefinition> { new PayoutDefinition (PayoutType.Currency, "gold", 123), new PayoutDefinition (PayoutType.Resource, "health", 100) });
  102. public static ProductDefinition NonConsumable =
  103. new ProductDefinition("Rotary Cannon", "com.brainDeadDesign.GAU-12Equalizer", ProductType.NonConsumable, true, new PayoutDefinition(PayoutType.Item, "Cannon", 1, "anti-materiel cannon"));
  104. public static ProductDefinition Subscription =
  105. new ProductDefinition("subscription", "com.brainDeadDesign.subscription", ProductType.Subscription);
  106. public static HashSet<ProductDefinition> Products = new HashSet<ProductDefinition>
  107. {
  108. Consumable,
  109. NonConsumable,
  110. Subscription
  111. };
  112. public static ReadOnlyCollection<ProductDefinition> ProductCollection =
  113. new ReadOnlyCollection<ProductDefinition> (Products.ToList());
  114. public static ProductMetadata DummyMetadata =
  115. new ProductMetadata("£1.99", "Dummy product title", "Dummy product description", "GBP", 1.99m);
  116. }
  117. }
  118. }
  119. #endif