Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class HomePagePickerViewModel @Inject constructor(
private val _onBackButtonPressed = SingleLiveEvent<Unit>()
val onBackButtonPressed: LiveData<Unit> = _onBackButtonPressed

private lateinit var vertical: String
private var vertical: String = ""

override val useCachedData: Boolean = false
override val shouldUseMobileThumbnail = true
Expand All @@ -60,9 +60,12 @@ class HomePagePickerViewModel @Inject constructor(
}

fun start(intent: String? = null, isTablet: Boolean = false) {
vertical = intent ?: ""
val verticalChanged = vertical != intent
if (verticalChanged) {
vertical = intent ?: ""
}
initializePreviewMode(isTablet)
if (uiState.value !is Content) {
if (uiState.value !is Content || verticalChanged) {
analyticsTracker.trackSiteDesignViewed(selectedPreviewMode().key)
fetchLayouts()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import org.mockito.ArgumentCaptor
import org.mockito.ArgumentMatchers.isA
import org.mockito.Mock
import org.mockito.junit.MockitoJUnitRunner
import org.wordpress.android.R
import org.wordpress.android.fluxc.Dispatcher
import org.wordpress.android.fluxc.network.rest.wpcom.theme.StarterDesign
import org.wordpress.android.fluxc.network.rest.wpcom.theme.StarterDesignCategory
Expand Down Expand Up @@ -59,6 +60,9 @@ class HomePagePickerViewModelTest {
private lateinit var recommendationProvider: SiteDesignRecommendationProvider
private lateinit var viewModel: HomePagePickerViewModel

private val slugsArray = arrayOf("art", "food", "beauty")
private val verticalArray = arrayOf("Art", "Food", "Beauty")

private val mockCategory = StarterDesignCategory(
slug = "blog",
title = "Blog",
Expand Down Expand Up @@ -112,6 +116,8 @@ class HomePagePickerViewModelTest {
whenever(networkUtils.isNetworkAvailable()).thenReturn(true)
whenever(resourceProvider.getString(any())).thenReturn("Blogging")
whenever(resourceProvider.getString(any(), any())).thenReturn("Best for Blogging")
whenever(resourceProvider.getStringArray(R.array.site_creation_intents_slugs)).thenReturn(slugsArray)
whenever(resourceProvider.getStringArray(R.array.site_creation_intents_strings)).thenReturn(verticalArray)
block()
}

Expand Down Expand Up @@ -232,4 +238,24 @@ class HomePagePickerViewModelTest {
viewModel.onPreviewChooseTapped()
verify(analyticsTracker).trackSiteDesignSelected(mockedDesignSlug, false)
}

@Test
fun `when the vertical changes the designs reload`() = mockResponse {
val expectedUiStateChangesOnEachLoad = 3
viewModel.start(intent = "Art")
viewModel.start(intent = "Food")
val captor = ArgumentCaptor.forClass(LayoutPickerUiState::class.java)
verify(uiStateObserver, times(expectedUiStateChangesOnEachLoad * 2)).onChanged(captor.capture())
assertThat(captor.value is LayoutPickerUiState.Content)
}

@Test
fun `when the vertical is the same the designs do not change`() = mockResponse {
val expectedUiStateChangesOnEachLoad = 3
viewModel.start(intent = "Art")
viewModel.start(intent = "Art")
val captor = ArgumentCaptor.forClass(LayoutPickerUiState::class.java)
verify(uiStateObserver, times(expectedUiStateChangesOnEachLoad)).onChanged(captor.capture())
assertThat(captor.value is LayoutPickerUiState.Content)
}
}