diff --git a/app/src/androidTest/kotlin/SettingsActivityTest.kt b/app/src/androidTest/kotlin/SettingsActivityTest.kt index 4064a7e8d9..f8c3398ded 100644 --- a/app/src/androidTest/kotlin/SettingsActivityTest.kt +++ b/app/src/androidTest/kotlin/SettingsActivityTest.kt @@ -1,3 +1,4 @@ + import android.content.Intent import android.support.test.espresso.intent.Intents import android.support.test.espresso.intent.Intents.intended @@ -43,6 +44,7 @@ class SettingsActivityTest { @Test fun testLogoutClick() { events.clickOnView(R.id.log_out_row) + events.clickOnButtonInDialog("Log out") checkThat.nextOpenActivityIs(DiscoveryActivity::class.java) } diff --git a/app/src/androidTest/kotlin/utils/Events.kt b/app/src/androidTest/kotlin/utils/Events.kt index d5aeff5cec..a619ee7a98 100644 --- a/app/src/androidTest/kotlin/utils/Events.kt +++ b/app/src/androidTest/kotlin/utils/Events.kt @@ -1,12 +1,21 @@ package utils import android.support.annotation.IdRes import android.support.test.espresso.Espresso.onView -import android.support.test.espresso.matcher.ViewMatchers.* import android.support.test.espresso.action.ViewActions.click +import android.support.test.espresso.matcher.RootMatchers.isDialog +import android.support.test.espresso.matcher.ViewMatchers.withId +import android.support.test.espresso.matcher.ViewMatchers.withText +import android.widget.Button +import org.hamcrest.core.AllOf.allOf +import org.hamcrest.core.IsInstanceOf.instanceOf class Events { fun clickOnView(@IdRes viewId: Int) { onView(withId(viewId)).perform(click()) } -} \ No newline at end of file + + fun clickOnButtonInDialog(text: String) { + onView(allOf(instanceOf(Button::class.java), withText(text))).inRoot(isDialog()).perform(click()) + } +} diff --git a/app/src/main/java/com/kickstarter/viewmodels/NewsletterViewModel.kt b/app/src/main/java/com/kickstarter/viewmodels/NewsletterViewModel.kt index c4014a15a7..4aefa24b0e 100644 --- a/app/src/main/java/com/kickstarter/viewmodels/NewsletterViewModel.kt +++ b/app/src/main/java/com/kickstarter/viewmodels/NewsletterViewModel.kt @@ -9,6 +9,7 @@ import com.kickstarter.libs.rx.transformers.Transformers.takePairWhen import com.kickstarter.libs.rx.transformers.Transformers.takeWhen import com.kickstarter.libs.utils.BooleanUtils.isTrue import com.kickstarter.libs.utils.ListUtils +import com.kickstarter.libs.utils.ObjectUtils import com.kickstarter.libs.utils.UserUtils import com.kickstarter.models.User import com.kickstarter.ui.activities.NewsletterActivity @@ -92,12 +93,15 @@ interface NewsletterViewModel { .compose(bindToLifecycle()) .subscribe(this.currentUser::refresh) - this.currentUser.observable() + val currentUser = this.currentUser.observable() + .filter { ObjectUtils.isNotNull(it) } + + currentUser .take(1) .compose(bindToLifecycle()) .subscribe(this.userOutput::onNext) - this.currentUser.observable() + currentUser .compose>>(takePairWhen>(this.newsletterInput)) .filter { us -> requiresDoubleOptIn(us.first, us.second.first) } .map { us -> us.second.second } @@ -109,7 +113,7 @@ interface NewsletterViewModel { .compose(bindToLifecycle()) .subscribe(this.koala::trackNewsletterToggle) - this.currentUser.observable() + currentUser .map { isSubscribedToAllNewsletters(it) } .compose(bindToLifecycle()) .subscribe(this.subscribeAll::onNext) diff --git a/app/src/main/java/com/kickstarter/viewmodels/NotificationsViewModel.kt b/app/src/main/java/com/kickstarter/viewmodels/NotificationsViewModel.kt index bab9f458f3..f615d64881 100644 --- a/app/src/main/java/com/kickstarter/viewmodels/NotificationsViewModel.kt +++ b/app/src/main/java/com/kickstarter/viewmodels/NotificationsViewModel.kt @@ -8,6 +8,7 @@ import com.kickstarter.libs.rx.transformers.Transformers import com.kickstarter.libs.rx.transformers.Transformers.takeWhen import com.kickstarter.libs.utils.IntegerUtils import com.kickstarter.libs.utils.ListUtils +import com.kickstarter.libs.utils.ObjectUtils import com.kickstarter.models.User import com.kickstarter.services.ApiClientType import com.kickstarter.ui.activities.NotificationsActivity @@ -112,6 +113,7 @@ interface NotificationsViewModel { .subscribe { this.currentUser.refresh(it) } val currentUser = this.currentUser.observable() + .filter { ObjectUtils.isNotNull(it) } currentUser .take(1) diff --git a/app/src/main/java/com/kickstarter/viewmodels/PrivacyViewModel.kt b/app/src/main/java/com/kickstarter/viewmodels/PrivacyViewModel.kt index ca0f3218f2..2f00992a3c 100644 --- a/app/src/main/java/com/kickstarter/viewmodels/PrivacyViewModel.kt +++ b/app/src/main/java/com/kickstarter/viewmodels/PrivacyViewModel.kt @@ -80,6 +80,7 @@ interface PrivacyViewModel { currentUser .take(1) + .filter { ObjectUtils.isNotNull(it) } .compose(bindToLifecycle()) .subscribe({ this.userOutput.onNext(it) })