@@ -10,6 +10,7 @@ import com.nhaarman.mockitokotlin2.times
1010import com.nhaarman.mockitokotlin2.verify
1111import com.nhaarman.mockitokotlin2.whenever
1212import kotlinx.coroutines.ExperimentalCoroutinesApi
13+ import kotlinx.coroutines.flow.flowOf
1314import org.junit.Before
1415import org.junit.Rule
1516import org.junit.Test
@@ -62,6 +63,9 @@ class BloggingRemindersResolverTest {
6263 private val mockCursor: MatrixCursor = mock()
6364 private val wordPressCurrentPackageId = " packageId"
6465 private val uriValue = " content://$wordPressCurrentPackageId .${BloggingRemindersProvider ::class .simpleName} "
66+ private val validLocalId = 123
67+ private val userSetBloggingRemindersModel = BloggingRemindersModel (validLocalId, setOf (MONDAY ))
68+ private val defaultBloggingRemindersModel = BloggingRemindersModel (validLocalId)
6569
6670 @Before
6771 fun setup () {
@@ -161,7 +165,9 @@ class BloggingRemindersResolverTest {
161165
162166 @Test
163167 fun `Should track success if result map has entries` () = test {
164- whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(123 )
168+ whenever(bloggingRemindersStore.bloggingRemindersModel(validLocalId))
169+ .thenReturn(flowOf(userSetBloggingRemindersModel))
170+ whenever(siteStore.getLocalIdForRemoteSiteId(123L )).thenReturn(validLocalId)
165171 featureEnabled()
166172 whenever(mockCursor.getString(0 )).thenReturn(" {\" 123\" :{\" enabledDays\" :[\" MONDAY\" ],\" hour\" :5" +
167173 " ,\" isPromptIncluded\" :false,\" minute\" :43,\" siteId\" :123}}" )
@@ -171,7 +177,9 @@ class BloggingRemindersResolverTest {
171177
172178 @Test
173179 fun `Should trigger success callback if result map has entries` () = test {
174- whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(123 )
180+ whenever(bloggingRemindersStore.bloggingRemindersModel(validLocalId))
181+ .thenReturn(flowOf(userSetBloggingRemindersModel))
182+ whenever(siteStore.getLocalIdForRemoteSiteId(123L )).thenReturn(validLocalId)
175183 featureEnabled()
176184 whenever(mockCursor.getString(0 )).thenReturn(" {\" 123\" :{\" enabledDays\" :[\" MONDAY\" ],\" hour\" :5" +
177185 " ,\" isPromptIncluded\" :false,\" minute\" :43,\" siteId\" :123}}" )
@@ -181,16 +189,17 @@ class BloggingRemindersResolverTest {
181189 }
182190
183191 @Test
184- fun `Should update blogging reminder if site local ID is valid` () = test {
185- val localId = 456
186- whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(localId)
192+ fun `Should update blogging reminder if site local ID is valid AND store returns default reminder` () = test {
193+ whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(validLocalId)
194+ whenever(bloggingRemindersStore.bloggingRemindersModel(validLocalId))
195+ .thenReturn(flowOf(defaultBloggingRemindersModel))
187196 featureEnabled()
188197 whenever(mockCursor.getString(0 )).thenReturn(" {\" 123\" :{\" enabledDays\" :[\" MONDAY\" ],\" hour\" :5" +
189198 " ,\" isPromptIncluded\" :false,\" minute\" :43,\" siteId\" :123}}" )
190199 classToTest.trySyncBloggingReminders({}, {})
191200 verify(bloggingRemindersStore, times(1 )).updateBloggingReminders(
192201 BloggingRemindersModel (
193- siteId = localId ,
202+ siteId = validLocalId ,
194203 enabledDays = setOf (MONDAY ),
195204 hour = 5 ,
196205 minute = 43 ,
@@ -200,15 +209,30 @@ class BloggingRemindersResolverTest {
200209 }
201210
202211 @Test
203- fun `Should NOT update blogging reminder if site local ID is 0` () = test {
204- whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(0 )
212+ fun `Should NOT update blogging reminder if site local ID is invalid` () = test {
213+ val invalidLocalId = 0
214+ whenever(bloggingRemindersStore.bloggingRemindersModel(invalidLocalId))
215+ .thenReturn(flowOf(defaultBloggingRemindersModel))
216+ whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(invalidLocalId)
205217 featureEnabled()
206218 whenever(mockCursor.getString(0 )).thenReturn(" {\" 123\" :{\" enabledDays\" :[\" MONDAY\" ],\" hour\" :5" +
207219 " ,\" isPromptIncluded\" :false,\" minute\" :43,\" siteId\" :123}}" )
208220 classToTest.trySyncBloggingReminders({}, {})
209221 verify(bloggingRemindersStore, times(0 )).updateBloggingReminders(any())
210222 }
211223
224+ @Test
225+ fun `Should NOT update blogging reminder if reminder is already set` () = test {
226+ whenever(bloggingRemindersStore.bloggingRemindersModel(validLocalId))
227+ .thenReturn(flowOf(userSetBloggingRemindersModel))
228+ whenever(siteStore.getLocalIdForRemoteSiteId(123 )).thenReturn(validLocalId)
229+ featureEnabled()
230+ whenever(mockCursor.getString(0 )).thenReturn(" {\" 123\" :{\" enabledDays\" :[],\" hour\" :5" +
231+ " ,\" isPromptIncluded\" :false,\" minute\" :43,\" siteId\" :123}}" )
232+ classToTest.trySyncBloggingReminders({}, {})
233+ verify(bloggingRemindersStore, times(0 )).updateBloggingReminders(any())
234+ }
235+
212236 private fun featureEnabled () {
213237 whenever(appPrefsWrapper.getIsFirstTryBloggingRemindersSyncJetpack()).thenReturn(true )
214238 whenever(jetpackBloggingRemindersSyncFlag.isEnabled()).thenReturn(true )
0 commit comments