static void setService(@Nonnull final Billing billing, @Nonnull final IInAppBillingService service) { if (billing.getState() != Billing.State.INITIAL) { billing.disconnect(); } billing.setConnector(new TestServiceConnector(billing, service)); }
@Test public void testShouldAutoDisconnect() throws Exception { final Billing billing = Tests.newBilling(true, true); assertTrue(billing.getState() == Billing.State.INITIAL); billing.onCheckoutStarted(); assertTrue(billing.getState() == Billing.State.CONNECTED); billing.onCheckoutStarted(); assertTrue(billing.getState() == Billing.State.CONNECTED); billing.onCheckoutStopped(); assertTrue(billing.getState() == Billing.State.CONNECTED); billing.onCheckoutStopped(); assertTrue(billing.getState() == Billing.State.DISCONNECTED); }
@Test public void testStates() throws Exception { final Billing.ServiceConnector connector = mock(Billing.ServiceConnector.class); when(connector.connect()).thenReturn(true); mBilling.setConnector(connector); mBilling.connect(); assertEquals(Billing.State.CONNECTING, mBilling.getState()); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.CONNECTED, mBilling.getState()); mBilling.disconnect(); assertEquals(Billing.State.DISCONNECTING, mBilling.getState()); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); }
@Test public void testShouldConnectOnlyIfConnecting() throws Exception { mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.FAILED); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.FAILED, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.CONNECTED, mBilling.getState()); }
@Test public void testShouldDisconnectServiceIfBillingIsInactive() throws Exception { final Billing.ServiceConnector connector = mock(Billing.ServiceConnector.class); mBilling.setConnector(connector); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.DISCONNECTED); mBilling.setService(mock(IInAppBillingService.class), true); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); verify(connector, times(1)).disconnect(); }
@Test public void testShouldJumpToDisconnectedStateIfWasConnecting() throws Exception { mBilling.setState(Billing.State.CONNECTING); mBilling.setService(null, false); assertEquals(Billing.State.FAILED, mBilling.getState()); }
@Test public void testShouldGoToDisconnectedStateFromConnectingIfBillingDies() throws Exception { mBilling.setState(Billing.State.CONNECTING); mBilling.disconnect(); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); }
@Test public void testShouldDisconnectOnlyIfNotInInitialState() throws Exception { mBilling.setState(Billing.State.INITIAL); mBilling.setService(null, false); assertEquals(Billing.State.INITIAL, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.CONNECTED); mBilling.setState(Billing.State.DISCONNECTING); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); mBilling.setState(Billing.State.CONNECTING); mBilling.setState(Billing.State.CONNECTED); mBilling.setService(null, false); assertEquals(Billing.State.DISCONNECTED, mBilling.getState()); }