Skip to content

Commit f0f9c11

Browse files
committed
Update unit tests for SelectedSiteRepository and PageListViewModel
1 parent c71a196 commit f0f9c11

File tree

2 files changed

+59
-3
lines changed

2 files changed

+59
-3
lines changed

WordPress/src/test/java/org/wordpress/android/ui/mysite/SelectedSiteRepositoryTest.kt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ import org.mockito.kotlin.verifyNoInteractions
1515
import org.mockito.kotlin.whenever
1616
import org.wordpress.android.BaseUnitTest
1717
import org.wordpress.android.fluxc.Dispatcher
18+
import org.wordpress.android.fluxc.action.EditorThemeAction
1819
import org.wordpress.android.fluxc.action.SiteAction
1920
import org.wordpress.android.fluxc.annotations.action.Action
2021
import org.wordpress.android.fluxc.model.SiteModel
2122
import org.wordpress.android.ui.prefs.AppPrefsWrapper
2223
import org.wordpress.android.ui.prefs.SiteSettingsInterfaceWrapper
24+
import org.wordpress.android.util.config.GlobalStyleSupportFeatureConfig
2325

2426
@ExperimentalCoroutinesApi
2527
class SelectedSiteRepositoryTest : BaseUnitTest() {
@@ -34,6 +36,10 @@ class SelectedSiteRepositoryTest : BaseUnitTest() {
3436

3537
@Mock
3638
lateinit var appPrefsWrapper: AppPrefsWrapper
39+
40+
@Mock
41+
lateinit var globalStyleSupportFeatureConfig: GlobalStyleSupportFeatureConfig
42+
3743
private lateinit var siteModel: SiteModel
3844
private var siteIconProgressBarVisible: Boolean = false
3945
private var selectedSite: SiteModel? = null
@@ -46,7 +52,12 @@ class SelectedSiteRepositoryTest : BaseUnitTest() {
4652

4753
@Before
4854
fun setUp() {
49-
selectedSiteRepository = SelectedSiteRepository(dispatcher, siteSettingsInterfaceFactory, appPrefsWrapper)
55+
selectedSiteRepository = SelectedSiteRepository(
56+
dispatcher,
57+
siteSettingsInterfaceFactory,
58+
appPrefsWrapper,
59+
globalStyleSupportFeatureConfig
60+
)
5061
selectedSiteRepository.showSiteIconProgressBar.observeForever { siteIconProgressBarVisible = it == true }
5162
selectedSiteRepository.selectedSiteChange.observeForever { selectedSite = it }
5263
siteModel = SiteModel()
@@ -117,7 +128,6 @@ class SelectedSiteRepositoryTest : BaseUnitTest() {
117128
selectedSiteRepository.updateTitle(updatedTitle)
118129

119130
assertThat(siteModel.name).isEqualTo(updatedTitle)
120-
verify(dispatcher).dispatch(any())
121131
assertThat(actions.last().payload).isEqualTo(siteModel)
122132
assertThat(actions.last().type).isEqualTo(SiteAction.UPDATE_SITE)
123133

@@ -218,6 +228,15 @@ class SelectedSiteRepositoryTest : BaseUnitTest() {
218228
assertThat(emptySiteIdEmitted).isTrue
219229
}
220230

231+
@Test
232+
fun `Should fetch EditorTheme when updateSiteSettingsIfNecessary is called`() {
233+
initializeSiteAndSiteSettings()
234+
235+
selectedSiteRepository.updateSiteSettingsIfNecessary()
236+
237+
assertThat(actions.last().type).isEqualTo(EditorThemeAction.FETCH_EDITOR_THEME)
238+
}
239+
221240
private fun initializeSiteAndSiteSettings() {
222241
selectedSiteRepository.updateSite(siteModel)
223242
doAnswer {

WordPress/src/test/java/org/wordpress/android/viewmodel/pages/PageListViewModelTest.kt

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,15 @@ import org.junit.Test
88
import org.mockito.Mock
99
import org.mockito.kotlin.any
1010
import org.mockito.kotlin.anyOrNull
11+
import org.mockito.kotlin.doAnswer
1112
import org.mockito.kotlin.mock
13+
import org.mockito.kotlin.times
14+
import org.mockito.kotlin.verify
1215
import org.mockito.kotlin.whenever
1316
import org.wordpress.android.BaseUnitTest
1417
import org.wordpress.android.fluxc.Dispatcher
18+
import org.wordpress.android.fluxc.action.EditorThemeAction
19+
import org.wordpress.android.fluxc.annotations.action.Action
1520
import org.wordpress.android.fluxc.model.AccountModel
1621
import org.wordpress.android.fluxc.model.LocalOrRemoteId.LocalId
1722
import org.wordpress.android.fluxc.model.PostModel
@@ -20,6 +25,7 @@ import org.wordpress.android.fluxc.model.page.PageModel
2025
import org.wordpress.android.fluxc.model.page.PageStatus
2126
import org.wordpress.android.fluxc.model.post.PostStatus
2227
import org.wordpress.android.fluxc.store.AccountStore
28+
import org.wordpress.android.fluxc.store.EditorThemeStore
2329
import org.wordpress.android.fluxc.store.MediaStore
2430
import org.wordpress.android.ui.pages.PageItem
2531
import org.wordpress.android.ui.pages.PageItem.Divider
@@ -30,6 +36,7 @@ import org.wordpress.android.ui.posts.AuthorFilterSelection
3036
import org.wordpress.android.ui.posts.AuthorFilterSelection.EVERYONE
3137
import org.wordpress.android.ui.posts.AuthorFilterSelection.ME
3238
import org.wordpress.android.util.LocaleManagerWrapper
39+
import org.wordpress.android.util.config.GlobalStyleSupportFeatureConfig
3340
import org.wordpress.android.viewmodel.pages.PageListViewModel.PageListState
3441
import org.wordpress.android.viewmodel.pages.PageListViewModel.PageListType.PUBLISHED
3542
import org.wordpress.android.viewmodel.pages.PostModelUploadUiStateUseCase.PostUploadUiState
@@ -68,9 +75,16 @@ class PageListViewModelTest : BaseUnitTest() {
6875
@Mock
6976
lateinit var accountStore: AccountStore
7077

78+
@Mock
79+
lateinit var globalStyleSupportFeatureConfig: GlobalStyleSupportFeatureConfig
80+
81+
@Mock
82+
lateinit var editorThemeStore: EditorThemeStore
83+
7184
private lateinit var viewModel: PageListViewModel
7285
private val site = SiteModel()
7386
private val pageListState = MutableLiveData<PageListState>()
87+
private lateinit var actions: MutableList<Action<*>>
7488

7589
@Before
7690
fun setUp() {
@@ -83,7 +97,9 @@ class PageListViewModelTest : BaseUnitTest() {
8397
dispatcher,
8498
localeManagerWrapper,
8599
accountStore,
86-
testDispatcher()
100+
testDispatcher(),
101+
globalStyleSupportFeatureConfig,
102+
editorThemeStore,
87103
)
88104

89105
whenever(pageItemProgressUiStateUseCase.getProgressStateForPage(any())).thenReturn(
@@ -115,6 +131,11 @@ class PageListViewModelTest : BaseUnitTest() {
115131

116132
val blazeSiteEligibility = MutableLiveData<Boolean>()
117133
whenever(pagesViewModel.blazeSiteEligibility).thenReturn(blazeSiteEligibility)
134+
135+
doAnswer {
136+
actions.add(it.getArgument(0))
137+
}.whenever(dispatcher).dispatch(any())
138+
actions = mutableListOf()
118139
}
119140

120141
@Test
@@ -475,6 +496,22 @@ class PageListViewModelTest : BaseUnitTest() {
475496
assertThat(pageItem.author).isNull()
476497
}
477498

499+
@Test
500+
fun `Should refresh EditorTheme when start is called the first time`() {
501+
val pages = MutableLiveData<List<PageModel>>()
502+
whenever(pagesViewModel.pages).thenReturn(pages)
503+
viewModel.start(PUBLISHED, pagesViewModel)
504+
assertThat(actions.last().type).isEqualTo(EditorThemeAction.FETCH_EDITOR_THEME)
505+
}
506+
507+
@Test
508+
fun `Should call EditorThemeStore getIsBlockBasedTheme when start is called the first time`() {
509+
val pages = MutableLiveData<List<PageModel>>()
510+
whenever(pagesViewModel.pages).thenReturn(pages)
511+
viewModel.start(PUBLISHED, pagesViewModel)
512+
verify(editorThemeStore).getIsBlockBasedTheme(site)
513+
}
514+
478515
private fun buildPageModel(
479516
id: Int,
480517
date: Date = Date(0),

0 commit comments

Comments
 (0)