package com.kickstarter.services; import android.net.Uri; import com.kickstarter.KSRobolectricTestCase; import org.junit.Test; public final class DiscoveryParamsTest extends KSRobolectricTestCase { @Test public void testFromUri_discoverRoot() { final Uri uri = Uri.parse("https://www.kickstarter.com/discover"); assertEquals(DiscoveryParams.builder().build(), DiscoveryParams.fromUri(uri)); } @Test public void testFromUri_backed() { final Uri uri = Uri.parse("https://www.kickstarter.com/discover/advanced?backed=1"); assertEquals(DiscoveryParams.builder().backed(1).build(), DiscoveryParams.fromUri(uri)); } @Test public void testFromUri_categories() { final DiscoveryParams params = DiscoveryParams.builder().categoryParam("music").build(); final Uri categoryUri = Uri.parse("https://www.kickstarter.com/discover/categories/music"); assertEquals(params, DiscoveryParams.fromUri(categoryUri)); final Uri advancedUri = Uri.parse("https://www.kickstarter.com/discover/advanced?category_id=music"); assertEquals(params, DiscoveryParams.fromUri(advancedUri)); } @Test public void testFromUri_filters() { final DiscoveryParams allParams = DiscoveryParams.builder() .recommended(true) .social(1) .staffPicks(true) .starred(1) .build(); final Uri allParamsUri = Uri.parse( "https://www.kickstarter.com/discover/advanced?recommended=true&social=1&staff_picks=true&starred=1" ); assertEquals(allParams, DiscoveryParams.fromUri(allParamsUri)); final DiscoveryParams recommendedParams = DiscoveryParams.builder().recommended(true).build(); final Uri recommendedUri = Uri.parse("https://www.kickstarter.com/discover/advanced?recommended=true"); assertEquals(recommendedParams, DiscoveryParams.fromUri(recommendedUri)); final DiscoveryParams socialParams = DiscoveryParams.builder().social(1).build(); final Uri socialUri = Uri.parse("https://www.kickstarter.com/discover/advanced?social=1"); assertEquals(socialParams, DiscoveryParams.fromUri(socialUri)); final DiscoveryParams staffPickParams = DiscoveryParams.builder().staffPicks(true).build(); final Uri staffPicksUri = Uri.parse("https://www.kickstarter.com/discover/advanced?staff_picks=true"); assertEquals(staffPickParams, DiscoveryParams.fromUri(staffPicksUri)); final DiscoveryParams starredParams = DiscoveryParams.builder().starred(1).build(); final Uri starredUri = Uri.parse("https://www.kickstarter.com/discover/advanced?starred=1"); assertEquals(starredParams, DiscoveryParams.fromUri(starredUri)); } @Test public void testFromUri_locations() { final DiscoveryParams params = DiscoveryParams.builder().locationParam("sydney-au").build(); final Uri placesUri = Uri.parse("https://www.kickstarter.com/discover/places/sydney-au"); assertEquals(params, DiscoveryParams.fromUri(placesUri)); final Uri advancedUri = Uri.parse("https://www.kickstarter.com/discover/advanced?woe_id=sydney-au"); assertEquals(params, DiscoveryParams.fromUri(advancedUri)); } @Test public void testFromUri_customScopes() { final DiscoveryParams endingSoonParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.ENDING_SOON).build(); final Uri endingSoonUri = Uri.parse("https://www.kickstarter.com/discover/ending-soon"); assertEquals(endingSoonParams, DiscoveryParams.fromUri(endingSoonUri)); final DiscoveryParams mostFundedParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.MOST_FUNDED).build(); final Uri mostFundedUri = Uri.parse("https://www.kickstarter.com/discover/most-funded"); assertEquals(mostFundedParams, DiscoveryParams.fromUri(mostFundedUri)); final DiscoveryParams newestParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.NEWEST).staffPicks(true).build(); final Uri newestUri = Uri.parse("https://www.kickstarter.com/discover/newest"); assertEquals(newestParams, DiscoveryParams.fromUri(newestUri)); final DiscoveryParams popularParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.POPULAR).build(); final Uri popularUri = Uri.parse("https://www.kickstarter.com/discover/popular"); assertEquals(popularParams, DiscoveryParams.fromUri(popularUri)); final DiscoveryParams recentlyLaunchedParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.NEWEST).build(); final Uri recentlyLaunchedUri = Uri.parse("https://www.kickstarter.com/discover/recently-launched"); assertEquals(recentlyLaunchedParams, DiscoveryParams.fromUri(recentlyLaunchedUri)); final DiscoveryParams smallProjectsParams = DiscoveryParams.builder().pledged(0).build(); final Uri smallProjectsUri = Uri.parse("https://www.kickstarter.com/discover/small-projects"); assertEquals(smallProjectsParams, DiscoveryParams.fromUri(smallProjectsUri)); final DiscoveryParams socialParams = DiscoveryParams.builder().social(0).build(); final Uri socialUri = Uri.parse("https://www.kickstarter.com/discover/social"); assertEquals(socialParams, DiscoveryParams.fromUri(socialUri)); final DiscoveryParams successfulParams = DiscoveryParams.builder().sort(DiscoveryParams.Sort.ENDING_SOON).state(DiscoveryParams.State.SUCCESSFUL).build(); final Uri successfulUri = Uri.parse("https://www.kickstarter.com/discover/successful"); assertEquals(successfulParams, DiscoveryParams.fromUri(successfulUri)); } @Test public void testFromUri_pagination() { final DiscoveryParams params = DiscoveryParams.builder().page(5).perPage(21).build(); final Uri uri = Uri.parse("https://www.kickstarter.com/discover/advanced?page=5&per_page=21"); assertEquals(params, DiscoveryParams.fromUri(uri)); } @Test public void testFromUri_sort() { final DiscoveryParams params = DiscoveryParams.builder().sort(DiscoveryParams.Sort.POPULAR).build(); final Uri uri = Uri.parse("https://www.kickstarter.com/discover/advanced?sort=popularity"); assertEquals(params, DiscoveryParams.fromUri(uri)); } @Test public void testFromUri_term() { final DiscoveryParams params = DiscoveryParams.builder().term("skull graphic tee").build(); final Uri advancedUri = Uri.parse("https://www.kickstarter.com/discover/advanced?term=skull+graphic+tee"); assertEquals(params, DiscoveryParams.fromUri(advancedUri)); final Uri searchUri = Uri.parse("https://www.kickstarter.com/projects/search?term=skull+graphic+tee"); assertEquals(params, DiscoveryParams.fromUri(searchUri)); } }