Billing billing() { return TestFactory.billing(service()); }
private void assertBillingCapabilities(@NonNull Context context, boolean expected) { final Binder binder = binder(context); final Intent intent = new Intent(); assertThat(binder.hasBillingCapabilities(intent)).isEqualTo(expected); }
@Before public void setUp() { final Context context = RuntimeEnvironment.application; cache = TestFactory.cache(context); }
private static Premiumer premiumer(@NonNull PremiumerListener listener, @NonNull Binder binder) { final Builder builder = PremiumerBuilder.with(RuntimeEnvironment.application) .sku("dummy.sku") .listener(listener) .autoNotifyAds(false); return TestFactory.premiumer(builder, binder); }
@Test public void messages() { for (int message : MESSAGES) { final PremiumerListener listener = mock(PremiumerListener.class); final Handler handler = TestFactory.premiumerHandler(listener); handler.obtainMessage(message).sendToTarget(); assertInvoked(listener, message); } }
@Before public void setUp() { verifier = mock(PurchaseVerifier.class); cache = mock(PurchaseCache.class); generator = mock(PayloadGenerator.class); listener = mock(PremiumerListener.class); final Builder builder = PremiumerBuilder.with(RuntimeEnvironment.application) .sku(SKU) .listener(listener) .executor(EAGER_EXECUTOR) .payloadGenerator(generator) .purchaseVerifier(verifier) .purchaseCache(cache) .autoNotifyAds(false) .requestCode(REQUEST_CODE) .signatureBase64(SIGNATURE); binder = new BinderMock(); premiumer = TestFactory.premiumer(builder, binder); }
@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 bindFailure() { final Context context = new ContextStub() { @Override public boolean bindService(Intent service, ServiceConnection conn, int flags) { return false; } }; final Intent intent = new Intent(); final ServiceConnection connection = mock(ServiceConnection.class); final Binder binder = binder(context); binder.bind(intent, connection, 0); assertThat(binder.isBound()).isFalse(); }
@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 bind() { final SimpleBinderContext context = new SimpleBinderContext(); final Intent intent = new Intent(); final ServiceConnection connection = mock(ServiceConnection.class); final Binder binder = binder(context); binder.bind(intent, connection, 0); assertThat(context.service).isEqualTo(intent); assertThat(context.connection).isEqualTo(connection); assertThat(context.flags).isEqualTo(0); assertThat(binder.isBound()).isTrue(); }
@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 unbind() { final SimpleBinderContext context = new SimpleBinderContext(); final Intent intent = new Intent(); final ServiceConnection connection = mock(ServiceConnection.class); final Binder binder = binder(context); binder.bind(intent, connection, 0); binder.unbind(); assertThat(context.service).isNull(); assertThat(context.connection).isNull(); assertThat(context.flags).isEqualTo(0); assertThat(binder.isBound()).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 skuDetailsEmpty() { final IInAppBillingService service = withJsonSkus(); final Billing billing = billing(service); final SkuDetails details = billing.skuDetails(SKU); assertThat(details).isNull(); }
@Test public void ownsSkuEmptyResponseList() { final IInAppBillingService service = withOwnedSkus(); final Billing billing = billing(service); final boolean result = billing.ownsSku(SKU); assertThat(result).isFalse(); }
@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 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 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); }