Skip to content

Commit

Permalink
Merge pull request #248 from wealthfront/sample-back-test
Browse files Browse the repository at this point in the history
Define backPress behavior for LazySetNavigator
  • Loading branch information
cmathew committed Jun 28, 2022
2 parents 6fd0c15 + 879edd0 commit 582d1be
Show file tree
Hide file tree
Showing 12 changed files with 68 additions and 84 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,5 +129,7 @@ public open class LazySetNavigator(
}
}

override fun onBackPressed(): Boolean = currentNavigable?.backPressed() ?: false
override fun backPressed(): Boolean {
return currentNavigable?.backPressed() ?: false
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -61,16 +61,19 @@ class NavigationTest {

onView(allOf(withText(R.string.monster_cereals_title), withId(R.id.cerealTitle)))
.check(matches(isDisplayed()))
onView(allOf(withText(R.string.cornflakes_title), isAssignableFrom(AppCompatButton::class.java)))
.perform(click())
onView(
allOf(
withText(R.string.cornflakes_title),
isAssignableFrom(AppCompatButton::class.java)
)
).perform(click())
onView(allOf(withText(R.string.cornflakes_title), withId(R.id.cerealTitle)))
.check(matches(isDisplayed()))
}

@Test
fun orderTickets() {
onView(withId(R.id.orderTickets)).perform(click())
onView(withId(R.id.orderTicketsStart)).perform(click())

onView(withId(R.id.adultTicketCount)).perform(replaceText("2"))
onView(withId(R.id.childTicketCount)).perform(replaceText("3"))
Expand Down Expand Up @@ -108,4 +111,23 @@ class NavigationTest {
onView(withId(R.id.suggestExhibitStart)).perform(click())
onView(withText("Already submitted")).check(matches(isDisplayed()))
}

@Test
fun backButton() {
onView(withTagValue(equalTo("BrowseCollection"))).check(matches(isDisplayed()))
onView(withId(R.id.orderTickets)).perform(click())

onView(withTagValue(equalTo("OrderTicketsBasket"))).check(matches(isDisplayed()))
onView(withId(R.id.adultTicketCount)).perform(replaceText("2"))
onView(withId(R.id.childTicketCount)).perform(replaceText("3"))
onView(withText("Your total: $32.00")).check(matches(isDisplayed()))
onView(withId(R.id.next)).perform(click())
onView(withTagValue(equalTo("PaymentMethodSelection"))).check(matches(isDisplayed()))

pressBack()
onView(withTagValue(equalTo("OrderTicketsBasket"))).check(matches(isDisplayed()))

pressBack()
onView(withTagValue(equalTo("BrowseCollection"))).check(matches(isDisplayed()))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.wealthfront.magellan.sample.advanced.cerealcollection.BrowseCollectionJourney;
import com.wealthfront.magellan.sample.advanced.designcereal.DesignCerealJourney;
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsBasketStep;
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsConfirmationStep;
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsJourney;
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsSuccessStep;
import com.wealthfront.magellan.sample.advanced.paymentinfo.PaymentInfoJourney;
import com.wealthfront.magellan.sample.advanced.suggestexhibit.SuggestConfirmationStep;
Expand All @@ -21,7 +21,7 @@ public interface AppComponent {

void inject(MainMenuStep mainMenuStep);

void inject(OrderTicketsJourney orderTicketsJourney);
void inject(OrderTicketsBasketStep orderTicketsBasketStep);

void inject(OrderTicketsSuccessStep orderTicketsSuccessStep);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,21 @@ import com.wealthfront.magellan.sample.advanced.SampleApplication.Companion.app
import com.wealthfront.magellan.sample.advanced.cerealcollection.BrowseCollectionJourney
import com.wealthfront.magellan.sample.advanced.databinding.MainMenuBinding
import com.wealthfront.magellan.sample.advanced.designcereal.DesignCerealStartStep
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsStartStep
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsJourney
import com.wealthfront.magellan.sample.advanced.suggestexhibit.SuggestExhibitStartStep
import com.wealthfront.magellan.transitions.CrossfadeTransition
import javax.inject.Inject

class MainMenuStep(
goToDesignCereal: () -> Unit,
goToOrderTickets: () -> Unit,
goToSuggestExhibit: () -> Unit
) : Step<MainMenuBinding>(MainMenuBinding::inflate) {

@Inject lateinit var toolbarHelper: ToolbarHelper

private val browseCollectionJourney = BrowseCollectionJourney()
private val suggestExhibitStart = SuggestExhibitStartStep(goToSuggestExhibit)
private val orderTicketsStart = OrderTicketsStartStep(goToOrderTickets)
private val orderTickets = OrderTicketsJourney()
private val designCerealStart = DesignCerealStartStep(goToDesignCereal)

private var selectedTab = R.id.browseCollection
Expand All @@ -37,7 +36,7 @@ class MainMenuStep(
setOf(
browseCollectionJourney,
designCerealStart,
orderTicketsStart,
orderTickets,
suggestExhibitStart
)
)
Expand Down Expand Up @@ -74,6 +73,14 @@ class MainMenuStep(
binding.bottomBarNavigation.selectedItemId = selectedTab
}

override fun onBackPressed(): Boolean {
if (selectedTab == R.id.browseCollection) {
return super.onBackPressed()
}
viewBinding!!.bottomBarNavigation.selectedItemId = R.id.browseCollection
return true
}

private fun showBrowseCollection() {
navigator.replace(browseCollectionJourney, CrossfadeTransition())
}
Expand All @@ -83,7 +90,7 @@ class MainMenuStep(
}

private fun showOrderTickets() {
navigator.replace(orderTicketsStart, CrossfadeTransition())
navigator.replace(orderTickets, CrossfadeTransition())
}

private fun showRequestExhibit() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,18 @@ import com.wealthfront.magellan.core.SimpleJourney
import com.wealthfront.magellan.init.getDefaultTransition
import com.wealthfront.magellan.navigation.NavigationEvent
import com.wealthfront.magellan.sample.advanced.designcereal.DesignCerealJourney
import com.wealthfront.magellan.sample.advanced.ordertickets.OrderTicketsJourney
import com.wealthfront.magellan.sample.advanced.suggestexhibit.SuggestConfirmationStep
import com.wealthfront.magellan.sample.advanced.suggestexhibit.SuggestExhibitJourney

class RootJourney : SimpleJourney() {

private val designCerealJourney = DesignCerealJourney(this::designCerealComplete)
private val orderTicketsJourney = OrderTicketsJourney(this::orderTicketsComplete)
private val suggestExhibitJourney = SuggestExhibitJourney(this::requestExhibitComplete)
private var alreadyRequestedExhibit = false

override fun onCreate(context: Context) {
super.onCreate(context)
val mainStep = MainMenuStep(
this::goToDesignCereal,
this::goToOrderTickets,
this::goToSuggestExhibit
)
navigator.goTo(mainStep)
Expand All @@ -31,10 +27,6 @@ class RootJourney : SimpleJourney() {
navigator.goTo(designCerealJourney)
}

private fun goToOrderTickets() {
navigator.goTo(orderTicketsJourney)
}

private fun goToSuggestExhibit() {
navigator.navigate(Direction.FORWARD) { backStack ->
if (alreadyRequestedExhibit) {
Expand All @@ -61,10 +53,6 @@ class RootJourney : SimpleJourney() {
navigator.goBack()
}

private fun orderTicketsComplete() {
navigator.goBack()
}

private fun requestExhibitComplete() {
navigator.goBack()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ import android.widget.EditText
import androidx.core.widget.doAfterTextChanged
import com.wealthfront.magellan.core.Step
import com.wealthfront.magellan.sample.advanced.R
import com.wealthfront.magellan.sample.advanced.SampleApplication.Companion.app
import com.wealthfront.magellan.sample.advanced.ToolbarHelper
import com.wealthfront.magellan.sample.advanced.databinding.OrderTicketsBasketBinding
import java.math.BigDecimal
import javax.inject.Inject

val adultTicketCost: BigDecimal = BigDecimal("8.50")
val childTicketCost: BigDecimal = BigDecimal("5.00")
Expand All @@ -21,7 +24,15 @@ class OrderTicketsBasketStep(
private val ticketOrder: TicketOrder
) : Step<OrderTicketsBasketBinding>(OrderTicketsBasketBinding::inflate) {

@Inject lateinit var toolbarHelper: ToolbarHelper

override fun onCreate(context: Context) {
app(context).injector().inject(this)
}

override fun onShow(context: Context, binding: OrderTicketsBasketBinding) {
toolbarHelper.hideToolbar()

binding.adultTicketPriceLabel.text =
context.getString(R.string.order_tickets_price_label, adultTicketCost.toPlainString())
binding.childTicketPriceLabel.text =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,25 @@ package com.wealthfront.magellan.sample.advanced.ordertickets
import android.content.Context
import com.wealthfront.magellan.Direction
import com.wealthfront.magellan.core.SimpleJourney
import com.wealthfront.magellan.databinding.MagellanSimpleJourneyBinding
import com.wealthfront.magellan.navigation.NavigationEvent
import com.wealthfront.magellan.sample.advanced.SampleApplication.Companion.app
import com.wealthfront.magellan.sample.advanced.ToolbarHelper
import com.wealthfront.magellan.sample.advanced.paymentinfo.PaymentInfoJourney
import com.wealthfront.magellan.sample.advanced.paymentinfo.PaymentMethod
import com.wealthfront.magellan.transitions.DefaultTransition
import javax.inject.Inject

class OrderTicketsJourney(
private val onOrderComplete: () -> Unit
) : SimpleJourney(), BasketStepListener {
class OrderTicketsJourney : SimpleJourney(), BasketStepListener {

@Inject lateinit var toolbarHelper: ToolbarHelper
private var ticketOrder = TicketOrder(0, 0)
private lateinit var ticketOrder: TicketOrder

override fun onCreate(context: Context) {
app(context).injector().inject(this)
navigator.goTo(OrderTicketsBasketStep(this, ticketOrder))
}
override fun onCreate(context: Context) = startOrder()

override fun onShow(context: Context, binding: MagellanSimpleJourneyBinding) {
toolbarHelper.setTitle("Order tickets")
toolbarHelper.showToolbar()
private fun startOrder() {
ticketOrder = TicketOrder(0, 0)
navigator.navigate(Direction.FORWARD) { backstack ->
backstack.clear()
val next = NavigationEvent(OrderTicketsBasketStep(this, ticketOrder), DefaultTransition())
backstack.push(next)
next.magellanTransition
}
}

override fun onBasketFilled(adultTicketCount: Int, childTicketCount: Int) {
Expand All @@ -35,7 +30,7 @@ class OrderTicketsJourney(
}

private fun onTicketsOrdered() {
val successStep = OrderTicketsSuccessStep(onOrderComplete)
val successStep = OrderTicketsSuccessStep(this::startOrder)
navigator.navigate(Direction.FORWARD) { backstack ->
backstack.clear()
val next = NavigationEvent(successStep, DefaultTransition())
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
android:id="@+id/loadingLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="BrowseCollection"
>

<androidx.constraintlayout.widget.ConstraintLayout
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/normalSpacing"
android:tag="OrderTicketsBasket"
>

<LinearLayout
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/normalSpacing"
android:tag="PaymentMethodSelection"
>

<TextView
Expand Down

0 comments on commit 582d1be

Please sign in to comment.