use of rx.observers.TestSubscriber in project android-oss by kickstarter.
the class ThanksViewModelTest method testThanksViewModel_share.
@Test
public void testThanksViewModel_share() {
final ThanksViewModel vm = new ThanksViewModel(environment());
final Project project = ProjectFactory.project();
final TestSubscriber<Project> startShareTest = new TestSubscriber<>();
vm.outputs.startShare().subscribe(startShareTest);
final TestSubscriber<Project> startShareOnFacebookTest = new TestSubscriber<>();
vm.outputs.startShareOnFacebook().subscribe(startShareOnFacebookTest);
final TestSubscriber<Project> startShareOnTwitterTest = new TestSubscriber<>();
vm.outputs.startShareOnTwitter().subscribe(startShareOnTwitterTest);
vm.intent(new Intent().putExtra(IntentKey.PROJECT, project));
vm.inputs.shareClick();
startShareTest.assertValues(project);
koalaTest.assertValues("Checkout Show Share Sheet");
vm.inputs.shareOnFacebookClick();
startShareOnFacebookTest.assertValues(project);
koalaTest.assertValues("Checkout Show Share Sheet", "Checkout Show Share");
vm.inputs.shareOnTwitterClick();
startShareOnTwitterTest.assertValues(project);
koalaTest.assertValues("Checkout Show Share Sheet", "Checkout Show Share", "Checkout Show Share");
}
use of rx.observers.TestSubscriber in project android-oss by kickstarter.
the class ThanksViewModelTest method testThanksViewModel_startDiscovery.
@Test
public void testThanksViewModel_startDiscovery() {
final ThanksViewModel vm = new ThanksViewModel(environment());
final Category category = CategoryFactory.category();
final TestSubscriber<DiscoveryParams> startDiscoveryTest = new TestSubscriber<>();
vm.outputs.startDiscovery().subscribe(startDiscoveryTest);
vm.inputs.categoryClick(null, category);
startDiscoveryTest.assertValues(DiscoveryParams.builder().category(category).build());
koalaTest.assertValue("Checkout Finished Discover More");
}
use of rx.observers.TestSubscriber in project android-oss by kickstarter.
the class ProjectUpdatesViewModelTest method testProjectUpdatesViewModel_StartUpdateActivity.
@Test
public void testProjectUpdatesViewModel_StartUpdateActivity() {
final ProjectUpdatesViewModel.ViewModel vm = new ProjectUpdatesViewModel.ViewModel(environment());
final Project project = ProjectFactory.project();
final Request updateRequest = new Request.Builder().url("https://kck.str/projects/param/param/posts/id").build();
final TestSubscriber<Pair<Project, Update>> startUpdateActivity = new TestSubscriber<>();
vm.outputs.startUpdateActivity().subscribe(startUpdateActivity);
vm.intent(new Intent().putExtra(IntentKey.PROJECT, project));
vm.inputs.goToUpdateRequest(updateRequest);
startUpdateActivity.assertValueCount(1);
koalaTest.assertValues(KoalaEvent.VIEWED_UPDATES, KoalaEvent.VIEWED_UPDATE);
}
use of rx.observers.TestSubscriber in project android-oss by kickstarter.
the class ProjectUpdatesViewModelTest method testProjectUpdatesViewModel_LoadsWebViewUrl.
@Test
public void testProjectUpdatesViewModel_LoadsWebViewUrl() {
final ProjectUpdatesViewModel.ViewModel vm = new ProjectUpdatesViewModel.ViewModel(environment());
final Project project = ProjectFactory.project();
final String anotherIndexUrl = "https://kck.str/projects/param/param/posts?page=another";
final Request anotherIndexRequest = new Request.Builder().url(anotherIndexUrl).build();
final TestSubscriber<String> webViewUrl = new TestSubscriber<>();
vm.outputs.webViewUrl().subscribe(webViewUrl);
// Start the intent with a project.
vm.intent(new Intent().putExtra(IntentKey.PROJECT, project));
// Initial project updates index emits.
webViewUrl.assertValues(project.updatesUrl());
koalaTest.assertValues(KoalaEvent.VIEWED_UPDATES);
// Make a request for another update index.
vm.inputs.goToUpdatesRequest(anotherIndexRequest);
// New updates index url emits. Event is not tracked again.
webViewUrl.assertValues(project.updatesUrl(), anotherIndexUrl);
koalaTest.assertValues(KoalaEvent.VIEWED_UPDATES);
}
use of rx.observers.TestSubscriber in project android-oss by kickstarter.
the class ProjectViewModelTest method testProjectViewModel_LoggedOutStarProjectFlow.
@Test
public void testProjectViewModel_LoggedOutStarProjectFlow() {
final CurrentUserType currentUser = new MockCurrentUser();
final Environment environment = environment().toBuilder().currentUser(currentUser).build();
environment.currentConfig().config(ConfigFactory.config());
final ProjectViewModel.ViewModel vm = new ProjectViewModel.ViewModel(environment);
final TestSubscriber<Void> loginToutTest = new TestSubscriber<>();
vm.outputs.startLoginToutActivity().subscribe(loginToutTest);
final TestSubscriber<Void> showStarredPromptTest = new TestSubscriber<>();
vm.outputs.showStarredPrompt().subscribe(showStarredPromptTest);
final TestSubscriber<Boolean> starredTest = new TestSubscriber<>();
vm.outputs.projectAndUserCountry().map(pc -> pc.first.isStarred()).subscribe(starredTest);
// Start the view model with a project
vm.intent(new Intent().putExtra(IntentKey.PROJECT, ProjectFactory.halfWayProject()));
starredTest.assertValues(false, false);
// Try starring while logged out
vm.inputs.starButtonClicked();
// The project shouldn't be starred, and a login prompt should be shown.
starredTest.assertValues(false, false);
showStarredPromptTest.assertValueCount(0);
loginToutTest.assertValueCount(1);
// A koala event for starring should NOT be tracked
koalaTest.assertValues(KoalaEvent.PROJECT_PAGE, KoalaEvent.VIEWED_PROJECT_PAGE);
// Login
currentUser.refresh(UserFactory.user());
// The project should be starred, and a star prompt should be shown.
starredTest.assertValues(false, false, true);
showStarredPromptTest.assertValueCount(1);
// A koala event for starring should be tracked
koalaTest.assertValues(KoalaEvent.PROJECT_PAGE, KoalaEvent.VIEWED_PROJECT_PAGE, KoalaEvent.PROJECT_STAR, KoalaEvent.STARRED_PROJECT);
}
Aggregations