diff --git a/library/src/test/java/jp/alessandro/android/iab/GetItemDetailsTest.java b/library/src/test/java/jp/alessandro/android/iab/GetItemDetailsTest.java index c836960..ddf2d0d 100644 --- a/library/src/test/java/jp/alessandro/android/iab/GetItemDetailsTest.java +++ b/library/src/test/java/jp/alessandro/android/iab/GetItemDetailsTest.java @@ -216,7 +216,7 @@ private void getItemDetails(final PurchaseType type) throws InterruptedException ArrayList itemIds = new ArrayList<>(); itemIds.add(DataConverter.TEST_PRODUCT_ID); - ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size); + ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size, type); Bundle responseBundle = new Bundle(); responseBundle.putLong(Constants.RESPONSE_CODE, 0L); responseBundle.putStringArrayList(Constants.RESPONSE_DETAILS_LIST, items); @@ -233,8 +233,7 @@ public void onSuccess(ItemDetails itemDetails) { List purchaseList = itemDetails.getAll(); for (Item item : purchaseList) { - assertThat(itemDetails.hasItemId(item.getSku())).isTrue(); - assertThat(itemDetails.getByItemId(item.getSku())).isNotNull(); + checkGetItemDetailsCallback(itemDetails, item, type); } mProcessor.release(); latch.countDown(); @@ -283,4 +282,25 @@ public void onError(BillingException e) { latch.await(15, TimeUnit.SECONDS); } + + private void checkGetItemDetailsCallback(ItemDetails itemDetails, Item item, PurchaseType type) { + assertThat(itemDetails.hasItemId(item.getSku())).isTrue(); + assertThat(itemDetails.getByItemId(item.getSku())).isNotNull(); + + if (type == PurchaseType.IN_APP) { + assertThat(itemDetails.getByItemId(item.getSku()).getSubscriptionPeriod()).isEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getFreeTrialPeriod()).isEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPrice()).isEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPriceAmountMicros()).isZero(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPricePeriod()).isEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPriceCycles()).isZero(); + } else { + assertThat(itemDetails.getByItemId(item.getSku()).getSubscriptionPeriod()).isNotEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getFreeTrialPeriod()).isNotEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPrice()).isNotEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPriceAmountMicros()).isNotZero(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPricePeriod()).isNotEmpty(); + assertThat(itemDetails.getByItemId(item.getSku()).getIntroductoryPriceCycles()).isNotZero(); + } + } } \ No newline at end of file diff --git a/library/src/test/java/jp/alessandro/android/iab/ItemGetterTest.java b/library/src/test/java/jp/alessandro/android/iab/ItemGetterTest.java index 4554b1f..207860b 100644 --- a/library/src/test/java/jp/alessandro/android/iab/ItemGetterTest.java +++ b/library/src/test/java/jp/alessandro/android/iab/ItemGetterTest.java @@ -103,7 +103,7 @@ public void remoteException() throws RemoteException { public void get20ItemDetails() throws RemoteException, BillingException { int size = 20; ArrayList itemIds = mDataConverter.convertToItemIdArrayList(size); - ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size); + ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size, PurchaseType.IN_APP); Bundle responseBundle = new Bundle(); responseBundle.putLong(Constants.RESPONSE_CODE, 0L); responseBundle.putStringArrayList(Constants.RESPONSE_DETAILS_LIST, items); @@ -141,7 +141,7 @@ public void get20ItemDetails() throws RemoteException, BillingException { public void get70ItemDetails() throws RemoteException, BillingException { int size = 70; ArrayList itemIds = mDataConverter.convertToItemIdArrayList(size); - ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size); + ArrayList items = mDataConverter.convertToSkuItemDetailsJsonArrayList(size, PurchaseType.IN_APP); List splitBundleList = new ArrayList<>(); for (int i = 0; i < itemIds.size(); i += ItemGetter.MAX_SKU_PER_REQUEST) { diff --git a/library/src/test/java/jp/alessandro/android/iab/ItemParcelableTest.java b/library/src/test/java/jp/alessandro/android/iab/ItemParcelableTest.java index 26a275d..debe7bd 100644 --- a/library/src/test/java/jp/alessandro/android/iab/ItemParcelableTest.java +++ b/library/src/test/java/jp/alessandro/android/iab/ItemParcelableTest.java @@ -42,7 +42,7 @@ public class ItemParcelableTest { @Test public void writeToParcel() throws JSONException { - Item item = Item.parseJson(String.format(Locale.ENGLISH, DataConverter.SKU_DETAIL_JSON, 0)); + Item item = Item.parseJson(String.format(Locale.ENGLISH, DataConverter.SKU_SUBSCRIPTION_DETAILS_JSON, 0)); // Obtain a Parcel object and write the parcelable object to it Parcel parcel = Parcel.obtain(); @@ -61,6 +61,12 @@ public void writeToParcel() throws JSONException { assertThat(item.getCurrency()).isEqualTo(fromParcel.getCurrency()); assertThat(item.getPrice()).isEqualTo(fromParcel.getPrice()); assertThat(item.getPriceMicros()).isEqualTo(fromParcel.getPriceMicros()); + assertThat(item.getSubscriptionPeriod()).isEqualTo(fromParcel.getSubscriptionPeriod()); + assertThat(item.getFreeTrialPeriod()).isEqualTo(fromParcel.getFreeTrialPeriod()); + assertThat(item.getIntroductoryPrice()).isEqualTo(fromParcel.getIntroductoryPrice()); + assertThat(item.getIntroductoryPriceAmountMicros()).isEqualTo(fromParcel.getIntroductoryPriceAmountMicros()); + assertThat(item.getIntroductoryPricePeriod()).isEqualTo(fromParcel.getIntroductoryPricePeriod()); + assertThat(item.getIntroductoryPriceCycles()).isEqualTo(fromParcel.getIntroductoryPriceCycles()); } @Test diff --git a/library/src/test/java/jp/alessandro/android/iab/util/DataConverter.java b/library/src/test/java/jp/alessandro/android/iab/util/DataConverter.java index 6881289..cc9f423 100644 --- a/library/src/test/java/jp/alessandro/android/iab/util/DataConverter.java +++ b/library/src/test/java/jp/alessandro/android/iab/util/DataConverter.java @@ -29,6 +29,7 @@ import jp.alessandro.android.iab.BillingApi; import jp.alessandro.android.iab.BillingContext; import jp.alessandro.android.iab.Constants; +import jp.alessandro.android.iab.PurchaseType; /** * Created by Alessandro Yuichi Okimoto on 2017/02/26. @@ -76,15 +77,30 @@ public class DataConverter { public static final String TEST_JSON_BROKEN = "{\"productId\":\"\""; - public static final String SKU_DETAIL_JSON = "{" + + public static final String SKU_DETAILS_JSON = "{" + "\"productId\": \"" + TEST_PRODUCT_ID + "_%d\"," + - "\"type\": \"subs\"," + + "\"type\": \"inapp\"," + "\"price\": \"¥1080\"," + "\"price_amount_micros\": \"10800000\"," + "\"price_currency_code\": \"JPY\"," + "\"title\": \"Test Product\"," + "\"description\": \"Fast and easy use Android In-App Billing\"}"; + public static final String SKU_SUBSCRIPTION_DETAILS_JSON = "{" + + "\"productId\": \"" + TEST_PRODUCT_ID + "_%d\"," + + "\"type\": \"subs\"," + + "\"price\": \"¥1080\"," + + "\"price_amount_micros\": \"10800000\"," + + "\"price_currency_code\": \"JPY\"," + + "\"title\": \"Test Product\"," + + "\"description\": \"Fast and easy use Android In-App Billing\"," + + "\"subscriptionPeriod\": \"P1M\"," + + "\"freeTrialPeriod\": \"P7D\"," + + "\"introductoryPrice\": \"¥1080\"," + + "\"introductoryPriceAmountMicros\": \"10800000\"," + + "\"introductoryPricePeriod\": \"P1M\"," + + "\"introductoryPriceCycles\": 3}"; + private final DataSigner mDataSigner; private String mKeyFactoryAlgorithm; @@ -204,10 +220,11 @@ public ArrayList convertToPurchaseJsonBrokenArrayList() { return data; } - public ArrayList convertToSkuItemDetailsJsonArrayList(int size) { + public ArrayList convertToSkuItemDetailsJsonArrayList(int size, PurchaseType type) { ArrayList purchases = new ArrayList<>(); for (int i = 0; i < size; i++) { - String json = String.format(Locale.ENGLISH, SKU_DETAIL_JSON, i); + String targetSku = type == PurchaseType.IN_APP ? SKU_DETAILS_JSON : SKU_SUBSCRIPTION_DETAILS_JSON; + String json = String.format(Locale.ENGLISH, targetSku, i); purchases.add(json); } return purchases; @@ -215,9 +232,9 @@ public ArrayList convertToSkuItemDetailsJsonArrayList(int size) { public ArrayList convertToSkuDetailsJsonBrokenArrayList() { ArrayList data = new ArrayList<>(); - data.add(String.format(Locale.ENGLISH, SKU_DETAIL_JSON, 0)); + data.add(String.format(Locale.ENGLISH, SKU_DETAILS_JSON, 0)); data.add(TEST_JSON_BROKEN); - data.add(String.format(Locale.ENGLISH, SKU_DETAIL_JSON, 2)); + data.add(String.format(Locale.ENGLISH, SKU_DETAILS_JSON, 2)); return data; }