@@ -3,6 +3,8 @@ package net.squanchy.schedule
33import io.reactivex.Observable
44import io.reactivex.schedulers.Schedulers
55import io.reactivex.subjects.BehaviorSubject
6+ import net.squanchy.A_DATE
7+ import net.squanchy.A_TIMEZONE
68import net.squanchy.schedule.domain.view.Track
79import net.squanchy.schedule.domain.view.aSchedule
810import net.squanchy.schedule.domain.view.aSchedulePage
@@ -19,28 +21,21 @@ import net.squanchy.service.firebase.aFirestoreTrack
1921import net.squanchy.service.firebase.model.schedule.FirestoreFavorite
2022import net.squanchy.support.checksum.Checksum
2123import net.squanchy.support.lang.Optional
22- import org.joda.time.LocalDate
23- import org.joda.time.LocalDateTime
2424import org.junit.Before
2525import org.junit.Rule
2626import org.junit.Test
2727import org.mockito.Mock
2828import org.mockito.Mockito.`when`
2929import org.mockito.junit.MockitoJUnit
3030import org.mockito.junit.MockitoRule
31- import java.util.Calendar
32- import java.util.Date
33- import java.util.TimeZone
3431
3532class FirestoreScheduleServiceTest {
3633
3734 companion object {
38- private val CALENDAR = Calendar .getInstance(TimeZone .getTimeZone(" Europe/Rome" ))
39-
40- private val A_START_TIME = Date (123456 )
41- private val AN_END_TIME = Date (123999 )
42- private val A_LATER_START_TIME = Date (124000 )
43- private val A_LATER_END_TIME = Date (124999 )
35+ private val A_START_TIME = A_DATE
36+ private val AN_END_TIME = A_START_TIME .plusMinutes(1 )
37+ private val A_LATER_START_TIME = A_START_TIME .plusMinutes(10 )
38+ private val A_LATER_END_TIME = A_LATER_START_TIME .plusMinutes(1 )
4439 }
4540
4641 @Rule
@@ -64,14 +59,14 @@ class FirestoreScheduleServiceTest {
6459 @Before
6560 fun init () {
6661 scheduleService = FirestoreScheduleService (authService, dbService, tracksFilter, checksum)
67- `when `(dbService.timezone()).thenReturn(Observable .just(aSchedule().timeZone ))
62+ `when `(dbService.timezone()).thenReturn(Observable .just(A_TIMEZONE ))
6863 `when `(checksum.getChecksumOf(aFirestoreSpeaker().id)).thenReturn(5466 )
6964 }
7065
7166 @Test
7267 fun `should sort schedule pages by date` () {
73- val firstDaySchedulePage = aFirestoreSchedulePage(day = aFirestoreDay(id = " 1" , date = A_START_TIME .dateOnly ()))
74- val secondDaySchedulePage = aFirestoreSchedulePage(day = aFirestoreDay(id = " 2" , date = A_START_TIME .plusOneDay().dateOnly ()))
68+ val firstDaySchedulePage = aFirestoreSchedulePage(day = aFirestoreDay(id = " 1" , date = A_START_TIME .toDate ()))
69+ val secondDaySchedulePage = aFirestoreSchedulePage(day = aFirestoreDay(id = " 2" , date = A_START_TIME .plusDays( 1 ).toDate ()))
7570 `when `(dbService.scheduleView()).thenReturn(Observable .just(listOf (firstDaySchedulePage, secondDaySchedulePage)))
7671 val allowedTracks = setOf (aTrack())
7772 `when `(tracksFilter.selectedTracks).thenReturn(BehaviorSubject .createDefault(allowedTracks))
@@ -81,9 +76,9 @@ class FirestoreScheduleServiceTest {
8176 .test()
8277 .assertValue(
8378 aSchedule(
84- listOf (
85- aSchedulePage(dayId = " 1" , date = LocalDate ( A_START_TIME .dateOnly() )),
86- aSchedulePage(dayId = " 2" , date = LocalDate ( A_START_TIME .plusOneDay().dateOnly() ))
79+ pages = listOf (
80+ aSchedulePage(dayId = " 1" , date = A_START_TIME .toDateTime( A_TIMEZONE ).toLocalDate( )),
81+ aSchedulePage(dayId = " 2" , date = A_START_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDate( ))
8782 )
8883 )
8984 )
@@ -92,19 +87,31 @@ class FirestoreScheduleServiceTest {
9287 @Test
9388 fun `should sort events in each schedule page by start time` () {
9489 val firstDaySchedulePage = aFirestoreSchedulePage(
95- day = aFirestoreDay(id = " 1" , date = A_START_TIME .dateOnly ()),
90+ day = aFirestoreDay(id = " 1" , date = A_START_TIME .toDate ()),
9691 events = listOf (
97- aFirestoreEvent(id = " 1" , startTime = A_START_TIME , endTime = AN_END_TIME ),
98- aFirestoreEvent(id = " 2" , startTime = A_LATER_START_TIME , endTime = A_LATER_END_TIME ),
99- aFirestoreEvent(id = " 3" , startTime = A_START_TIME , endTime = AN_END_TIME )
92+ aFirestoreEvent(id = " 1" , startTime = A_START_TIME .toDate() , endTime = AN_END_TIME .toDate() ),
93+ aFirestoreEvent(id = " 2" , startTime = A_LATER_START_TIME .toDate() , endTime = A_LATER_END_TIME .toDate() ),
94+ aFirestoreEvent(id = " 3" , startTime = A_START_TIME .toDate() , endTime = AN_END_TIME .toDate() )
10095 )
10196 )
10297 val secondDaySchedulePage = aFirestoreSchedulePage(
103- day = aFirestoreDay(id = " 2" , date = A_START_TIME .plusOneDay().dateOnly ()),
98+ day = aFirestoreDay(id = " 2" , date = A_START_TIME .plusDays( 1 ).toDate ()),
10499 events = listOf (
105- aFirestoreEvent(id = " 4" , startTime = A_START_TIME .plusOneDay(), endTime = AN_END_TIME .plusOneDay()),
106- aFirestoreEvent(id = " 6" , startTime = A_LATER_START_TIME .plusOneDay(), endTime = A_LATER_END_TIME .plusOneDay()),
107- aFirestoreEvent(id = " 5" , startTime = A_START_TIME .plusOneDay(), endTime = AN_END_TIME .plusOneDay())
100+ aFirestoreEvent(
101+ id = " 4" ,
102+ startTime = A_START_TIME .plusDays(1 ).toDate(),
103+ endTime = AN_END_TIME .plusDays(1 ).toDate()
104+ ),
105+ aFirestoreEvent(
106+ id = " 6" ,
107+ startTime = A_LATER_START_TIME .plusDays(1 ).toDate(),
108+ endTime = A_LATER_END_TIME .plusDays(1 ).toDate()
109+ ),
110+ aFirestoreEvent(
111+ id = " 5" ,
112+ startTime = A_START_TIME .plusDays(1 ).toDate(),
113+ endTime = AN_END_TIME .plusDays(1 ).toDate()
114+ )
108115 )
109116 )
110117 `when `(dbService.scheduleView()).thenReturn(Observable .just(listOf (firstDaySchedulePage, secondDaySchedulePage)))
@@ -121,42 +128,52 @@ class FirestoreScheduleServiceTest {
121128 .test()
122129 .assertValue(
123130 aSchedule(
124- listOf (
131+ pages = listOf (
125132 aSchedulePage(
126133 dayId = " 1" ,
127- date = LocalDate ( A_START_TIME .dateOnly() ),
134+ date = A_START_TIME .toDateTime( A_TIMEZONE ).toLocalDate( ),
128135 events = listOf (
129- anEvent(id = " 1" , numericId = 1 , startTime = A_START_TIME .toLocalDateTime(), endTime = AN_END_TIME .toLocalDateTime()),
130- anEvent(id = " 3" , numericId = 3 , startTime = A_START_TIME .toLocalDateTime(), endTime = AN_END_TIME .toLocalDateTime()),
136+ anEvent(
137+ id = " 1" ,
138+ numericId = 1 ,
139+ startTime = A_START_TIME .toDateTime(A_TIMEZONE ).toLocalDateTime(),
140+ endTime = AN_END_TIME .toDateTime(A_TIMEZONE ).toLocalDateTime()
141+ ),
142+ anEvent(
143+ id = " 3" ,
144+ numericId = 3 ,
145+ startTime = A_START_TIME .toDateTime(A_TIMEZONE ).toLocalDateTime(),
146+ endTime = AN_END_TIME .toDateTime(A_TIMEZONE ).toLocalDateTime()
147+ ),
131148 anEvent(
132149 id = " 2" ,
133150 numericId = 2 ,
134- startTime = A_LATER_START_TIME .toLocalDateTime(),
135- endTime = A_LATER_END_TIME .toLocalDateTime()
151+ startTime = A_LATER_START_TIME .toDateTime( A_TIMEZONE ). toLocalDateTime(),
152+ endTime = A_LATER_END_TIME .toDateTime( A_TIMEZONE ). toLocalDateTime()
136153 )
137154 )
138155 ),
139156 aSchedulePage(
140157 dayId = " 2" ,
141- date = LocalDate ( A_START_TIME .plusOneDay().dateOnly() ),
158+ date = A_START_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDate( ),
142159 events = listOf (
143160 anEvent(
144161 id = " 4" ,
145162 numericId = 4 ,
146- startTime = A_START_TIME .plusOneDay( ).toLocalDateTime(),
147- endTime = AN_END_TIME .plusOneDay( ).toLocalDateTime()
163+ startTime = A_START_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime(),
164+ endTime = AN_END_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime()
148165 ),
149166 anEvent(
150167 id = " 5" ,
151168 numericId = 5 ,
152- startTime = A_START_TIME .plusOneDay( ).toLocalDateTime(),
153- endTime = AN_END_TIME .plusOneDay( ).toLocalDateTime()
169+ startTime = A_START_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime(),
170+ endTime = AN_END_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime()
154171 ),
155172 anEvent(
156173 id = " 6" ,
157174 numericId = 6 ,
158- startTime = A_LATER_START_TIME .plusOneDay( ).toLocalDateTime(),
159- endTime = A_LATER_END_TIME .plusOneDay( ).toLocalDateTime()
175+ startTime = A_LATER_START_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime(),
176+ endTime = A_LATER_END_TIME .plusDays( 1 ).toDateTime( A_TIMEZONE ).toLocalDateTime()
160177 )
161178 )
162179 )
@@ -185,7 +202,7 @@ class FirestoreScheduleServiceTest {
185202 .test()
186203 .assertValue(
187204 aSchedule(
188- listOf (
205+ pages = listOf (
189206 aSchedulePage(
190207 events = listOf (
191208 anEvent(id = " 1" , numericId = 1 , track = Optional .absent()),
@@ -218,7 +235,7 @@ class FirestoreScheduleServiceTest {
218235 .test()
219236 .assertValue(
220237 aSchedule(
221- listOf (
238+ pages = listOf (
222239 aSchedulePage(
223240 events = listOf (
224241 anEvent(id = " A" , numericId = 0 )
@@ -246,7 +263,7 @@ class FirestoreScheduleServiceTest {
246263 .test()
247264 .assertValue(
248265 aSchedule(
249- listOf (
266+ pages = listOf (
250267 aSchedulePage(
251268 events = listOf (
252269 anEvent(track = Optional .absent(), numericId = 1 ),
@@ -275,7 +292,7 @@ class FirestoreScheduleServiceTest {
275292 .test()
276293 .assertValue(
277294 aSchedule(
278- listOf (
295+ pages = listOf (
279296 aSchedulePage(
280297 events = listOf (
281298 anEvent(track = Optional .absent(), numericId = 1 ),
@@ -302,7 +319,7 @@ class FirestoreScheduleServiceTest {
302319 .test()
303320 .assertValue(
304321 aSchedule(
305- listOf (
322+ pages = listOf (
306323 aSchedulePage(events = emptyList())
307324 )
308325 )
@@ -326,7 +343,7 @@ class FirestoreScheduleServiceTest {
326343 .test()
327344 .assertValue(
328345 aSchedule(
329- listOf (
346+ pages = listOf (
330347 aSchedulePage(
331348 events = listOf (
332349 anEvent(track = Optional .of(aTrack(id = " A" )), numericId = 1 ),
@@ -356,7 +373,7 @@ class FirestoreScheduleServiceTest {
356373 .test()
357374 .assertValue(
358375 aSchedule(
359- listOf (
376+ pages = listOf (
360377 aSchedulePage(
361378 events = listOf (
362379 anEvent(track = Optional .absent(), numericId = 1 )
@@ -366,21 +383,4 @@ class FirestoreScheduleServiceTest {
366383 )
367384 )
368385 }
369-
370- private fun Date.plusOneDay (): Date = CALENDAR .apply {
371- clear()
372- time = this @plusOneDay
373- add(Calendar .DAY_OF_YEAR , 1 )
374- }.time
375-
376- private fun Date.dateOnly (): Date = CALENDAR .apply {
377- clear()
378- time = this @dateOnly
379- set(Calendar .HOUR , 0 )
380- set(Calendar .MINUTE , 0 )
381- set(Calendar .SECOND , 0 )
382- set(Calendar .MILLISECOND , 0 )
383- }.time
384-
385- private fun Date.toLocalDateTime () = LocalDateTime (this )
386386}
0 commit comments