@Override public void run() { boolean consumed = false; final Purchase purchase = cache.load(); if (purchase != null && purchase.purchaseToken != null) { consumed = billing.consumeSku(purchase.purchaseToken); } final int message; if (consumed) { cache.clear(); message = PremiumerHandler.ON_SKU_CONSUMED; } else { message = PremiumerHandler.ON_FAILED_TO_CONSUME_SKU; } handler.obtainMessage(message, purchase).sendToTarget(); } });
@Override public void onServiceConnected(ComponentName name, IBinder iBinder) { final IInAppBillingService s = binder.service(iBinder); final Billing b = binder.billing(context.getPackageName(), s); if (b.isBillingSupported()) { billing = b; listener.onBillingAvailable(); } else { binder.unbind(); listener.onBillingUnavailable(); } }
@Override public void run() { final boolean owns = billing.ownsSku(sku); final int id = owns ? PremiumerHandler.ON_HIDE_ADS : PremiumerHandler.ON_SHOW_ADS; handler.obtainMessage(id).sendToTarget(); } });
@Override public void run() { final SkuDetails details = billing.skuDetails(sku); handler.obtainMessage(PremiumerHandler.ON_SKU_DETAILS, details).sendToTarget(); } });
@Override public boolean purchase(@Nullable Activity activity) { if (billing == null || activity == null) { return false; } final String payload = payloadGenerator.generate(); if (billing.purchase(activity, sku, requestCode, payload)) { listener.onPurchaseRequested(payload); return true; } return false; }
@Test public void skuDetails() { final SkuDetails details = billing().skuDetails(SKU); assertThat(details).isNull(); }
@Test public void purchaseNullPendingIntent() { final IInAppBillingService service = new BillingServiceStub() { @Override public Bundle getBuyIntent(int apiVersion, String packageName, String sku, String type, String developerPayload) throws RemoteException { final Bundle bundle = new Bundle(2); bundle.putInt(RESPONSE_CODE, BILLING_RESPONSE_RESULT_OK); bundle.putParcelable(RESPONSE_BUY_INTENT, null); return bundle; } }; final Billing billing = billing(service); final Activity activity = mock(Activity.class); final boolean response = billing.purchase(activity, SKU, 0, null); assertThat(response).isFalse(); assertNoInteraction(activity); }
@Test public void ownsSku() { final boolean owned = billing().ownsSku(SKU); assertThat(owned).isFalse(); }
@Test public void skuDetailsNull() { final IInAppBillingService service = withJsonSkus(null); final Billing billing = billing(service); final SkuDetails details = billing.skuDetails(SKU); assertThat(details).isNull(); }
@Test public void purchase() { final boolean purchased = billing().purchase(new Activity(), SKU, 0, null); assertThat(purchased).isFalse(); }
@Test public void isBillingSupported() { final boolean supported = billing().isBillingSupported(); assertThat(supported).isFalse(); }
@Test public void consumeSku() { final boolean consumed = billing().consumeSku(SKU); assertThat(consumed).isFalse(); }
@Test public void ownsSkuOk() { final IInAppBillingService service = withOwnedSkus(SKU); final Billing billing = billing(service); final boolean result = billing.ownsSku(SKU); assertThat(result).isTrue(); }
@Test public void skuDetailsEmpty() { final IInAppBillingService service = withJsonSkus(); final Billing billing = billing(service); final SkuDetails details = billing.skuDetails(SKU); assertThat(details).isNull(); }
@Test public void purchaseOk() throws Exception { final IInAppBillingService service = new SuccessfulBillingService(); final Activity activity = mock(Activity.class); final Billing billing = billing(service); final boolean response = billing.purchase(activity, SKU, 0, null); assertInvokedOnce(activity).startIntentSenderForResult(null, 0, null, 0, 0, 0); assertThat(response).isTrue(); }
@Test public void billingSupportedOk() { final IInAppBillingService service = new SuccessfulBillingService(); final Billing billing = billing(service); final boolean result = billing.isBillingSupported(); assertThat(result).isTrue(); }
@Test public void consumeSkuOk() { final IInAppBillingService service = new SuccessfulBillingService(); final Billing billing = billing(service); final boolean result = billing.consumeSku(SKU); assertThat(result).isTrue(); }
@Test public void ownsSkuNullResponseList() { final IInAppBillingService service = withOwnedSkus(null); final Billing billing = billing(service); final boolean result = billing.ownsSku(SKU); assertThat(result).isFalse(); }
@Test public void skuDetailsOk() throws Exception { final String json = JSON_SKU; final IInAppBillingService service = withJsonSkus(json); final Billing billing = billing(service); final SkuDetails details = billing.skuDetails(SKU); assertThat(details).isNotNull(); final SkuDetails actual = new SkuDetails(json); assertThat(details).isEqualTo(actual); }
@Test public void ownsSkuEmptyResponseList() { final IInAppBillingService service = withOwnedSkus(); final Billing billing = billing(service); final boolean result = billing.ownsSku(SKU); assertThat(result).isFalse(); }