package com.kickstarter.ui.intents;
import android.content.Intent;
import android.net.Uri;
import com.kickstarter.KSRobolectricTestCase;
import com.kickstarter.services.DiscoveryParams;
import com.kickstarter.services.MockApiClient;
import com.kickstarter.ui.IntentKey;
import com.kickstarter.ui.intentmappers.DiscoveryIntentMapper;
import org.junit.Test;
import rx.observers.TestSubscriber;
public final class DiscoveryIntentMapperTest extends KSRobolectricTestCase {
@Test
public void emitsFromParamsExtra() {
final DiscoveryParams params = DiscoveryParams.builder().build();
final Intent intent = new Intent().putExtra(IntentKey.DISCOVERY_PARAMS, params);
final TestSubscriber<DiscoveryParams> resultTest = TestSubscriber.create();
DiscoveryIntentMapper.params(intent, new MockApiClient())
.subscribe(resultTest);
resultTest.assertValues(params);
}
@Test
public void emitsFromDiscoveryUri() {
final Uri uri = Uri.parse("https://www.kickstarter.com/discover");
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
final TestSubscriber<DiscoveryParams> resultTest = TestSubscriber.create();
DiscoveryIntentMapper.params(intent, new MockApiClient())
.subscribe(resultTest);
resultTest.assertValues(DiscoveryParams.builder().build());
}
@Test
public void emitsFromDiscoveryCategoryUri() {
final Uri uri = Uri.parse("https://www.kickstarter.com/discover/categories/music");
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
final TestSubscriber<DiscoveryParams> resultTest = TestSubscriber.create();
DiscoveryIntentMapper.params(intent, new MockApiClient())
.subscribe(resultTest);
resultTest.assertValueCount(1);
}
@Test
public void emitsFromDiscoveryLocationUri() {
final Uri uri = Uri.parse("https://www.kickstarter.com/discover/places/sydney-au");
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
final TestSubscriber<DiscoveryParams> resultTest = TestSubscriber.create();
DiscoveryIntentMapper.params(intent, new MockApiClient())
.subscribe(resultTest);
resultTest.assertValueCount(1);
}
@Test
public void emitsFromAdvancedCategoryIdAndLocationIdUri() {
final Uri uri = Uri.parse("https://www.kickstarter.com/discover/advanced?category_id=1&location_id=1");
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
final TestSubscriber<DiscoveryParams> resultTest = TestSubscriber.create();
DiscoveryIntentMapper.params(intent, new MockApiClient())
.subscribe(resultTest);
resultTest.assertValueCount(1);
}
}