/** Returns a list of all owned product IDs of a given type */ List<String> getAllOwnedSkus(String itemType) { List<String> result = new ArrayList<String>(); for (Purchase p : mPurchaseMap.values()) { if (p.getItemType().equals(itemType)) result.add(p.getSku()); } return result; }
@Test public void testGetAllOwnedSkusForItemType() throws Exception { Inventory inventory = new Inventory(); Purchase p1 = mock(Purchase.class); when(p1.getItemType()).thenReturn(ItemType.INAPP); when(p1.getSku()).thenReturn("sku_inapp"); Purchase p2 = mock(Purchase.class); when(p2.getItemType()).thenReturn(ItemType.SUBS); when(p2.getSku()).thenReturn("sku_sub"); inventory.addPurchase(p1); inventory.addPurchase(p2); assertThat(inventory.getAllOwnedSkus(ItemType.SUBS)).containsExactly("sku_sub"); }
/** * Serialize purchase data to json * * @param purchase purchase data * @return json string * @throws JSONException */ private String purchaseToJson(Purchase purchase) throws JSONException { return new JSONStringer() .object() .key("itemType") .value(purchase.getItemType()) .key("orderId") .value(purchase.getOrderId()) .key("packageName") .value(purchase.getPackageName()) .key("sku") .value(purchase.getSku()) .key("purchaseTime") .value(purchase.getPurchaseTime()) .key("purchaseState") .value(purchase.getPurchaseState()) .key("developerPayload") .value(purchase.getDeveloperPayload()) .key("token") .value(purchase.getToken()) .key("originalJson") .value(purchase.getOriginalJson()) .key("signature") .value(purchase.getSignature()) .key("appstoreName") .value(purchase.getAppstoreName()) .endObject() .toString(); }