use of com.kickstarter.libs.MockCurrentUser in project android-oss by kickstarter.
the class SettingsViewModelTest method testSettingsViewModel_sendWeeklyNewsletter.
@Test
public void testSettingsViewModel_sendWeeklyNewsletter() {
final User user = UserFactory.user().toBuilder().weeklyNewsletter(false).build();
final CurrentUserType currentUser = new MockCurrentUser(user);
final Environment environment = environment().toBuilder().currentUser(currentUser).build();
final SettingsViewModel vm = new SettingsViewModel(environment);
final TestSubscriber<User> currentUserTest = new TestSubscriber<>();
currentUser.observable().subscribe(currentUserTest);
final TestSubscriber<Newsletter> showOptInPromptTest = new TestSubscriber<>();
vm.outputs.showOptInPrompt().subscribe(showOptInPromptTest);
currentUserTest.assertValues(user);
koalaTest.assertValues("Settings View");
vm.inputs.sendWeeklyNewsletter(true);
koalaTest.assertValues("Settings View", "Newsletter Subscribe");
currentUserTest.assertValues(user, user.toBuilder().weeklyNewsletter(true).build());
vm.inputs.sendWeeklyNewsletter(false);
koalaTest.assertValues("Settings View", "Newsletter Subscribe", "Newsletter Unsubscribe");
currentUserTest.assertValues(user, user.toBuilder().weeklyNewsletter(true).build(), user);
showOptInPromptTest.assertNoValues();
}
use of com.kickstarter.libs.MockCurrentUser in project android-oss by kickstarter.
the class SettingsViewModelTest method testSettingsViewModel_sendGamesNewsletter.
@Test
public void testSettingsViewModel_sendGamesNewsletter() {
final User user = UserFactory.user().toBuilder().gamesNewsletter(false).build();
final CurrentUserType currentUser = new MockCurrentUser(user);
final Environment environment = environment().toBuilder().currentUser(currentUser).build();
final SettingsViewModel vm = new SettingsViewModel(environment);
final TestSubscriber<User> currentUserTest = new TestSubscriber<>();
currentUser.observable().subscribe(currentUserTest);
final TestSubscriber<Newsletter> showOptInPromptTest = new TestSubscriber<>();
vm.outputs.showOptInPrompt().subscribe(showOptInPromptTest);
currentUserTest.assertValues(user);
koalaTest.assertValues("Settings View");
vm.inputs.sendGamesNewsletter(true);
koalaTest.assertValues("Settings View", "Newsletter Subscribe");
currentUserTest.assertValues(user, user.toBuilder().gamesNewsletter(true).build());
vm.inputs.sendGamesNewsletter(false);
koalaTest.assertValues("Settings View", "Newsletter Subscribe", "Newsletter Unsubscribe");
currentUserTest.assertValues(user, user.toBuilder().gamesNewsletter(true).build(), user);
showOptInPromptTest.assertNoValues();
}
use of com.kickstarter.libs.MockCurrentUser 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);
}
use of com.kickstarter.libs.MockCurrentUser in project android-oss by kickstarter.
the class ProjectViewModelTest method testProjectViewModel_StarProjectThatIsSuccessful.
@Test
public void testProjectViewModel_StarProjectThatIsSuccessful() {
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> 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 successful project
vm.intent(new Intent().putExtra(IntentKey.PROJECT, ProjectFactory.successfulProject()));
// Login
currentUser.refresh(UserFactory.user());
// Star the project
vm.inputs.starButtonClicked();
// The project should be starred, and a star prompt should NOT be shown.
starredTest.assertValues(false, false, true);
showStarredPromptTest.assertValueCount(0);
}
use of com.kickstarter.libs.MockCurrentUser in project android-oss by kickstarter.
the class ProjectViewModelTest method testProjectViewModel_StarProjectThatIsAlmostCompleted.
@Test
public void testProjectViewModel_StarProjectThatIsAlmostCompleted() {
final Project project = ProjectFactory.almostCompletedProject();
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> 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 an almost completed project
vm.intent(new Intent().putExtra(IntentKey.PROJECT, project));
// Login
currentUser.refresh(UserFactory.user());
// Star the project
vm.inputs.starButtonClicked();
// The project should be starred, and a star prompt should NOT be shown.
starredTest.assertValues(false, false, true);
showStarredPromptTest.assertValueCount(0);
}
Aggregations