Repository navigation
Expand file tree
/
Copy pathCalendarIntentTest.kt
More file actions
86 lines (80 loc) · 3.16 KB
/
Copy pathCalendarIntentTest.kt
File metadata and controls
86 lines (80 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.example.dateparser
import android.content.Intent
import android.provider.CalendarContract
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.github.alox1d.dateparser.sample.parseReminderDraft
import java.time.LocalDateTime
import java.time.ZoneId
import kotlin.time.Instant
import kotlinx.datetime.TimeZone
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class CalendarIntentTest {
@Test fun parsedBerlinRangeSuppliesBothBoundariesToTheCalendarEditor() {
val draft = requireNotNull(parseReminderDraft(
"Work tomorrow from 5PM to 8PM",
Instant.parse("2026-07-03T10:15:00Z"),
TimeZone.of("Europe/Berlin")
))
val event = requireNotNull(calendarEventDetails(
draft.title, draft.startsAt, draft.endsAt, draft.timeZone.id
))
assertCalendarInsert(
calendarInsertIntent(event),
title = "Work",
start = Instant.parse("2026-07-04T15:00:00Z"),
end = Instant.parse("2026-07-04T18:00:00Z"),
timeZoneId = "Europe/Berlin"
)
}
@Test fun editedTitleAndOvernightEndReplaceTheOriginalParsedDetails() {
val draft = requireNotNull(parseReminderDraft(
"Work tomorrow from 5PM to 8PM",
Instant.parse("2026-07-03T10:15:00Z"),
TimeZone.of("Europe/Berlin")
))
val zone = ZoneId.of(draft.timeZone.id)
val editedStart = resolveReminderTime(
LocalDateTime.parse("2026-07-04T23:30:00"), draft.startsAt, true, zone
)
val editedEnd = resolveReminderTime(
LocalDateTime.parse("2026-07-05T01:00:00"), draft.endsAt, true, zone
)
val event = requireNotNull(calendarEventDetails(
" Night shift ", editedStart, editedEnd, draft.timeZone.id
))
assertCalendarInsert(
calendarInsertIntent(event),
title = "Night shift",
start = Instant.parse("2026-07-04T21:30:00Z"),
end = Instant.parse("2026-07-04T23:00:00Z"),
timeZoneId = "Europe/Berlin"
)
}
private fun assertCalendarInsert(
intent: Intent,
title: String,
start: Instant,
end: Instant,
timeZoneId: String
) {
assertEquals(Intent.ACTION_INSERT, intent.action)
assertEquals(CalendarContract.Events.CONTENT_URI, intent.data)
assertEquals(title, intent.getStringExtra(CalendarContract.Events.TITLE))
assertEquals(
start.toEpochMilliseconds(),
intent.getLongExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, Long.MIN_VALUE)
)
assertEquals(
end.toEpochMilliseconds(),
intent.getLongExtra(CalendarContract.EXTRA_EVENT_END_TIME, Long.MIN_VALUE)
)
assertEquals(timeZoneId, intent.getStringExtra(CalendarContract.Events.EVENT_TIMEZONE))
assertTrue(intent.hasExtra(CalendarContract.EXTRA_EVENT_ALL_DAY))
assertFalse(intent.getBooleanExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true))
}
}