@Test public void execute_whenUberAppInsalled_shouldPointToUberApp() throws IOException { String expectedUri = readUriResourceWithUserAgentParam( "src/test/resources/deeplinkuris/just_client_provided", USER_AGENT_DEEPLINK); Activity activity = Robolectric.setupActivity(Activity.class); ShadowActivity shadowActivity = shadowOf(activity); RobolectricPackageManager packageManager = (RobolectricPackageManager) shadowActivity.getPackageManager(); PackageInfo uberPackage = new PackageInfo(); uberPackage.packageName = UBER_PACKAGE_NAME; packageManager.addPackage(uberPackage); RideParameters rideParameters = new RideParameters.Builder().build(); RequestDeeplink requestDeeplink = new RequestDeeplink.Builder() .setClientId(CLIENT_ID) .setRideParameters(rideParameters) .build(); requestDeeplink.execute(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(expectedUri, startedIntent.getData().toString()); }
@Test public void onBuildDeeplink_whenClientIdAndDefaultRideParamsProvided_shouldHaveDefaults() throws IOException { String expectedUri = readUriResourceWithUserAgentParam( "src/test/resources/deeplinkuris/just_client_provided", USER_AGENT_DEEPLINK); RideParameters rideParameters = new RideParameters.Builder().build(); RequestDeeplink deeplink = new RequestDeeplink.Builder() .setRideParameters(rideParameters) .setClientId(CLIENT_ID) .build(); assertEquals("URI does not match.", expectedUri, deeplink.getUri().toString()); }
@Test public void onBuildDeeplink_whenPickupAndClientIdProvided_shouldNotHaveDropoffOrProduct() throws IOException { String path = "src/test/resources/deeplinkuris/pickup_and_client_provided"; String expectedUri = readUriResourceWithUserAgentParam(path, USER_AGENT_DEEPLINK); RideParameters rideParameters = new RideParameters.Builder() .setPickupLocation(PICKUP_LAT, PICKUP_LONG, PICKUP_NICK, PICKUP_ADDR) .build(); RequestDeeplink deeplink = new RequestDeeplink.Builder() .setRideParameters(rideParameters) .setClientId(CLIENT_ID) .build(); assertEquals("URI does not match.", expectedUri, deeplink.getUri().toString()); }
@Test public void onBuildDeeplink_whenFullRideParamsProvided_shouldCompleteUri() throws IOException { String expectedUri = readUriResourceWithUserAgentParam( "src/test/resources/deeplinkuris/full_details_uri", USER_AGENT_DEEPLINK); RideParameters rideParameters = new RideParameters.Builder() .setPickupLocation(PICKUP_LAT, PICKUP_LONG, PICKUP_NICK, PICKUP_ADDR) .setDropoffLocation(DROPOFF_LAT, DROPOFF_LONG, DROPOFF_NICK, DROPOFF_ADDR) .setProductId(PRODUCT_ID) .build(); RequestDeeplink deeplink = new RequestDeeplink.Builder() .setRideParameters(rideParameters) .setClientId(CLIENT_ID) .build(); assertEquals("URI does not match.", expectedUri, deeplink.getUri().toString()); }
@Test public void onBuildDeeplink_whenDropoffClientIdAndProductIdProvided_shouldHaveDefaultPickupAndFullDropoff() throws IOException { String path = "src/test/resources/deeplinkuris/dropoff_client_and_product_provided"; String expectedUri = readUriResourceWithUserAgentParam(path, USER_AGENT_DEEPLINK); RideParameters rideParameters = new RideParameters.Builder() .setProductId(PRODUCT_ID) .setDropoffLocation(DROPOFF_LAT, DROPOFF_LONG, DROPOFF_NICK, DROPOFF_ADDR) .build(); RequestDeeplink deeplink = new RequestDeeplink.Builder() .setRideParameters(rideParameters) .setClientId(CLIENT_ID) .build(); assertEquals("URI does not match.", expectedUri, deeplink.getUri().toString()); }
@Test public void execute_whenNoUberApp_shouldPointToMobileSite() throws IOException { String expectedUri = readUriResourceWithUserAgentParam( "src/test/resources/deeplinkuris/no_app_installed", USER_AGENT_DEEPLINK); Activity activity = Robolectric.setupActivity(Activity.class); ShadowActivity shadowActivity = shadowOf(activity); RideParameters rideParameters = new RideParameters.Builder().build(); RequestDeeplink requestDeeplink = new RequestDeeplink.Builder() .setClientId(CLIENT_ID) .setRideParameters(rideParameters) .build(); requestDeeplink.execute(activity); Intent startedIntent = shadowActivity.getNextStartedActivity(); assertEquals(expectedUri, startedIntent.getData().toString()); }
@Test public void onBuildDeeplink_whenNoNicknameOrAddressProvided_shouldNotHaveNicknameAndAddress() throws IOException { String expectedUri = readUriResourceWithUserAgentParam( "src/test/resources/deeplinkuris/no_nickname_or_address", USER_AGENT_DEEPLINK); RideParameters rideParameters = new RideParameters.Builder() .setProductId(PRODUCT_ID) .setPickupLocation(PICKUP_LAT, PICKUP_LONG, null, null) .setDropoffLocation(DROPOFF_LAT, DROPOFF_LONG, null, null) .build(); RequestDeeplink deeplink = new RequestDeeplink.Builder() .setRideParameters(rideParameters) .setClientId(CLIENT_ID) .build(); assertEquals("URI does not match.", expectedUri, deeplink.getUri().toString()); }