diff --git a/lib/src/main/kotlin/at/bitfire/synctools/icalendar/Ical4jHelpers.kt b/lib/src/main/kotlin/at/bitfire/synctools/icalendar/Ical4jHelpers.kt index 3a79d573..1b06cdc2 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/icalendar/Ical4jHelpers.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/icalendar/Ical4jHelpers.kt @@ -11,6 +11,7 @@ import at.bitfire.synctools.exception.InvalidICalendarException import net.fortuna.ical4j.model.Component import net.fortuna.ical4j.model.ComponentContainer import net.fortuna.ical4j.model.ComponentList +import net.fortuna.ical4j.model.Parameter import net.fortuna.ical4j.model.Property import net.fortuna.ical4j.model.PropertyContainer import net.fortuna.ical4j.model.PropertyList @@ -62,6 +63,10 @@ operator fun PropertyList.plusAssign(property: Property) { add(property) } +operator fun Property.plusAssign(parameter: Parameter) { + add(parameter) +} + operator fun ComponentContainer.plusAssign(component: T) { add>(component) } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappings.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappings.kt index b55b7334..7059c3e2 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappings.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappings.kt @@ -9,6 +9,7 @@ package at.bitfire.synctools.mapping.calendar import android.content.ContentValues import android.provider.CalendarContract import android.provider.CalendarContract.Attendees +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.Parameter import net.fortuna.ical4j.model.parameter.CuType import net.fortuna.ical4j.model.parameter.Email @@ -81,11 +82,10 @@ object AttendeeMappings { } - TODO("ical4j 4.x") - /*if (cuType != null && cuType != CuType.INDIVIDUAL) - attendee.parameters.add(cuType) + if (cuType != null && cuType != CuType.INDIVIDUAL) + attendee += cuType if (role != null && role != Role.REQ_PARTICIPANT) - attendee.parameters.add(role)*/ + attendee += role } diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandler.kt index 09f40176..bf98db0e 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandler.kt @@ -9,6 +9,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.ContentValues import android.content.Entity import android.provider.CalendarContract.Attendees +import at.bitfire.synctools.icalendar.plusAssign import at.bitfire.synctools.mapping.calendar.AttendeeMappings import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.parameter.Cn @@ -34,8 +35,7 @@ class AttendeesHandler: AndroidEventFieldHandler { private fun populateAttendee(row: ContentValues, to: VEvent) { logger.log(Level.FINE, "Read event attendee from calendar provider", row) - TODO("ical4j 4.x") - /*try { + try { val attendee: Attendee val email = row.getAsString(Attendees.ATTENDEE_EMAIL) val idNS = row.getAsString(Attendees.ATTENDEE_ID_NAMESPACE) @@ -44,33 +44,32 @@ class AttendeesHandler: AndroidEventFieldHandler { if (idNS != null || id != null) { // attendee identified by namespace and ID attendee = Attendee(URI(idNS, id, null)) - email?.let { attendee.parameters.add(Email(it)) } + email?.let { attendee += Email(it) } } else // attendee identified by email address attendee = Attendee(URI("mailto", email, null)) - val params = attendee.parameters // always add RSVP (offer attendees to accept/decline) - params.add(Rsvp.TRUE) + attendee += Rsvp.TRUE - row.getAsString(Attendees.ATTENDEE_NAME)?.let { cn -> params.add(Cn(cn)) } + row.getAsString(Attendees.ATTENDEE_NAME)?.let { cn -> attendee += Cn(cn) } // type/relation mapping is complex and thus outsourced to AttendeeMappings AttendeeMappings.androidToICalendar(row, attendee) // status when (row.getAsInteger(Attendees.ATTENDEE_STATUS)) { - Attendees.ATTENDEE_STATUS_INVITED -> params.add(PartStat.NEEDS_ACTION) - Attendees.ATTENDEE_STATUS_ACCEPTED -> params.add(PartStat.ACCEPTED) - Attendees.ATTENDEE_STATUS_DECLINED -> params.add(PartStat.DECLINED) - Attendees.ATTENDEE_STATUS_TENTATIVE -> params.add(PartStat.TENTATIVE) + Attendees.ATTENDEE_STATUS_INVITED -> attendee += PartStat.NEEDS_ACTION + Attendees.ATTENDEE_STATUS_ACCEPTED -> attendee += PartStat.ACCEPTED + Attendees.ATTENDEE_STATUS_DECLINED -> attendee += PartStat.DECLINED + Attendees.ATTENDEE_STATUS_TENTATIVE -> attendee += PartStat.TENTATIVE Attendees.ATTENDEE_STATUS_NONE -> { /* no information, don't add PARTSTAT */ } } - to.properties += attendee + to += attendee } catch (e: URISyntaxException) { logger.log(Level.WARNING, "Couldn't parse attendee information, ignoring", e) - }*/ + } } } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandler.kt index 9e032357..5ccf5857 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandler.kt @@ -8,23 +8,24 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.Events +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Transp +import net.fortuna.ical4j.model.property.immutable.ImmutableTransp class AvailabilityHandler: AndroidEventFieldHandler { override fun process(from: Entity, main: Entity, to: VEvent) { - TODO("ical4j 4.x") - /*val transp: Transp = when (from.entityValues.getAsInteger(Events.AVAILABILITY)) { + val transp: Transp = when (from.entityValues.getAsInteger(Events.AVAILABILITY)) { Events.AVAILABILITY_FREE -> - Transp.TRANSPARENT + ImmutableTransp.TRANSPARENT /* Events.AVAILABILITY_BUSY, Events.AVAILABILITY_TENTATIVE */ else -> - Transp.OPAQUE + ImmutableTransp.OPAQUE } - if (transp != Transp.OPAQUE) // iCalendar default value is OPAQUE - to.properties += transp*/ + if (transp != ImmutableTransp.OPAQUE) // iCalendar default value is OPAQUE + to += transp } } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandler.kt index 023e65e1..ba4fd723 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandler.kt @@ -8,6 +8,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.ExtendedProperties +import at.bitfire.synctools.icalendar.plusAssign import at.bitfire.synctools.storage.calendar.EventsContract import net.fortuna.ical4j.model.TextList import net.fortuna.ical4j.model.component.VEvent @@ -20,10 +21,9 @@ class CategoriesHandler: AndroidEventFieldHandler { val categories = extended.firstOrNull { it.getAsString(ExtendedProperties.NAME) == EventsContract.EXTNAME_CATEGORIES } val listValue = categories?.getAsString(ExtendedProperties.VALUE) if (listValue != null) { - TODO("ical4j 4.x") - /*to.properties += Categories(TextList( - listValue.split(EventsContract.CATEGORIES_SEPARATOR).toTypedArray() - ))*/ + to += Categories(TextList( + listValue.split(EventsContract.CATEGORIES_SEPARATOR) + )) } } diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandler.kt index 0142acf5..3255b98b 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandler.kt @@ -9,6 +9,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.Attendees import android.provider.CalendarContract.Events +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Organizer import java.net.URI @@ -30,8 +31,7 @@ class OrganizerHandler: AndroidEventFieldHandler { val hasAttendees = from.subValues.any { it.uri == Attendees.CONTENT_URI } if (hasAttendees && mainValues.containsKey(Events.ORGANIZER)) try { - TODO("ical4j 4.x") - //to.properties += Organizer(URI("mailto", mainValues.getAsString(Events.ORGANIZER), null)) + to += Organizer(URI("mailto", mainValues.getAsString(Events.ORGANIZER), null)) } catch (e: URISyntaxException) { logger.log(Level.WARNING, "Error when creating ORGANIZER mailto URI, ignoring", e) } diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandler.kt index 3be0c41e..66295706 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandler.kt @@ -11,12 +11,14 @@ import android.content.Entity import android.provider.CalendarContract.Events import android.provider.CalendarContract.Reminders import android.util.Patterns +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.component.VAlarm import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Action import net.fortuna.ical4j.model.property.Attendee import net.fortuna.ical4j.model.property.Description import net.fortuna.ical4j.model.property.Summary +import net.fortuna.ical4j.model.property.immutable.ImmutableAction import java.net.URI import java.time.Duration import java.util.logging.Level @@ -40,32 +42,30 @@ class RemindersHandler( val eventTitle = event.entityValues.getAsString(Events.TITLE) ?: "Calendar Event Reminder" val alarm = VAlarm(Duration.ofMinutes(-row.getAsLong(Reminders.MINUTES))) - TODO("ical4j 4.x") - /*val props = alarm.properties when (row.getAsInteger(Reminders.METHOD)) { Reminders.METHOD_EMAIL -> { if (Patterns.EMAIL_ADDRESS.matcher(accountName).matches()) { - props += Action.EMAIL + alarm += ImmutableAction.EMAIL // ACTION:EMAIL requires SUMMARY, DESCRIPTION, ATTENDEE - props += Summary(eventTitle) - props += Description(eventTitle) + alarm += Summary(eventTitle) + alarm += Description(eventTitle) // Android doesn't allow to save email reminder recipients, so we always use the // account name (should be account owner's email address) - props += Attendee(URI("mailto", accountName, null)) + alarm += Attendee(URI("mailto", accountName, null)) } else { logger.warning("Account name is not an email address; changing EMAIL reminder to DISPLAY") - props += Action.DISPLAY - props += Description(eventTitle) + alarm += ImmutableAction.DISPLAY + alarm += Description(eventTitle) } } // default: set ACTION:DISPLAY (requires DESCRIPTION) else -> { - props += Action.DISPLAY - props += Description(eventTitle) + alarm += ImmutableAction.DISPLAY + alarm += Description(eventTitle) } } - to.components += alarm*/ + to += alarm } } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandler.kt index 447b040b..9039f104 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandler.kt @@ -7,6 +7,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity +import at.bitfire.synctools.icalendar.plusAssign import at.bitfire.synctools.storage.calendar.EventsContract import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Sequence @@ -15,9 +16,8 @@ class SequenceHandler: AndroidEventFieldHandler { override fun process(from: Entity, main: Entity, to: VEvent) { val seqNo = from.entityValues.getAsInteger(EventsContract.COLUMN_SEQUENCE) - TODO("ical4j 4.x") - /*if (seqNo != null && seqNo > 0) - to.properties += Sequence(seqNo)*/ + if (seqNo != null && seqNo > 0) + to += Sequence(seqNo) } } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandler.kt index 7eb9a925..cf1abfb9 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandler.kt @@ -8,28 +8,28 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.Events +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.component.VEvent -import net.fortuna.ical4j.model.property.Status +import net.fortuna.ical4j.model.property.immutable.ImmutableStatus class StatusHandler: AndroidEventFieldHandler { override fun process(from: Entity, main: Entity, to: VEvent) { - TODO("ical4j 4.x") - /*val status = when (from.entityValues.getAsInteger(Events.STATUS)) { + val status = when (from.entityValues.getAsInteger(Events.STATUS)) { Events.STATUS_CONFIRMED -> - Status.VEVENT_CONFIRMED + ImmutableStatus.VEVENT_CONFIRMED Events.STATUS_TENTATIVE -> - Status.VEVENT_TENTATIVE + ImmutableStatus.VEVENT_TENTATIVE Events.STATUS_CANCELED -> - Status.VEVENT_CANCELLED + ImmutableStatus.VEVENT_CANCELLED else -> null } if (status != null) - to.properties += status*/ + to += status } } \ No newline at end of file diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandler.kt index b8fd32e1..1a524a2e 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandler.kt @@ -9,6 +9,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.ExtendedProperties import at.bitfire.ical4android.UnknownProperty +import at.bitfire.synctools.icalendar.plusAssign import net.fortuna.ical4j.model.Property import net.fortuna.ical4j.model.component.VEvent import org.json.JSONException @@ -27,9 +28,8 @@ class UnknownPropertiesHandler: AndroidEventFieldHandler { for (json in jsonProperties) try { val prop = UnknownProperty.fromJsonString(json) - TODO("ical4j 4.x") - /*if (!EXCLUDED.contains(prop.name)) - to.properties += prop*/ + if (!EXCLUDED.contains(prop.name)) + to += prop } catch (e: JSONException) { logger.log(Level.WARNING, "Couldn't parse unknown properties", e) } diff --git a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandler.kt b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandler.kt index 868379e4..92b3bed5 100644 --- a/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandler.kt +++ b/lib/src/main/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandler.kt @@ -8,6 +8,7 @@ package at.bitfire.synctools.mapping.calendar.handler import android.content.Entity import android.provider.CalendarContract.ExtendedProperties +import at.bitfire.synctools.icalendar.plusAssign import at.bitfire.synctools.storage.calendar.EventsContract import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Url @@ -26,9 +27,8 @@ class UrlHandler: AndroidEventFieldHandler { } catch (_: URISyntaxException) { null } - TODO("ical4j 4.x") - /*if (uri != null) - to.properties += Url(uri)*/ + if (uri != null) + to += Url(uri) } } diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappingsTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappingsTest.kt index 278ae09a..22df5e17 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappingsTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/AttendeeMappingsTest.kt @@ -8,6 +8,7 @@ package at.bitfire.synctools.mapping.calendar import android.content.ContentValues import android.provider.CalendarContract.Attendees +import net.fortuna.ical4j.model.Parameter import net.fortuna.ical4j.model.parameter.CuType import net.fortuna.ical4j.model.parameter.Role import net.fortuna.ical4j.model.property.Attendee @@ -16,6 +17,7 @@ import org.junit.Assert.assertNull import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner +import kotlin.jvm.optionals.getOrNull @RunWith(RobolectricTestRunner::class) class AttendeeMappingsTest { @@ -27,20 +29,14 @@ class AttendeeMappingsTest { val RoleFancy = Role("X-FANCY") } - /* - @Ignore("ical4j 4.x") @Test fun testAndroidToICalendar_TypeRequired_RelationshipAttendee() { testAndroidToICalendar(ContentValues().apply { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE) }) { - assertNull( - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertNull(role) } } @@ -50,12 +46,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER) }) { - assertNull( - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertNull(role) } } @@ -65,15 +57,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_PERFORMER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.GROUP, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.GROUP, cuType) + assertNull(role) } } @@ -83,15 +68,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_SPEAKER) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertEquals( - Role.CHAIR, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertEquals(Role.CHAIR, role) } } @@ -101,15 +79,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_REQUIRED) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.UNKNOWN, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.UNKNOWN, cuType) + assertNull(role) } } @@ -120,15 +91,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertEquals( - Role.OPT_PARTICIPANT, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertEquals(Role.OPT_PARTICIPANT, role) } } @@ -138,15 +102,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertEquals( - Role.OPT_PARTICIPANT, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertEquals(Role.OPT_PARTICIPANT, role) } } @@ -156,14 +113,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_PERFORMER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.GROUP, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertEquals( - Role.OPT_PARTICIPANT, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertEquals(CuType.GROUP, cuType) + assertEquals(Role.OPT_PARTICIPANT, role) } } @@ -173,15 +124,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_SPEAKER) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertEquals( - Role.CHAIR, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertEquals(Role.CHAIR, role) } } @@ -191,14 +135,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_OPTIONAL) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.UNKNOWN, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertEquals( - Role.OPT_PARTICIPANT, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertEquals(CuType.UNKNOWN, cuType) + assertEquals(Role.OPT_PARTICIPANT, role) } } @@ -209,16 +147,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertNull(cuType) + assertNull(role) } } @@ -228,16 +158,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertNull(cuType) + assertNull(role) } } @@ -247,15 +169,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_PERFORMER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.GROUP, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.GROUP, cuType) + assertNull(role) } } @@ -265,15 +180,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_SPEAKER) }) { - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.CUTYPE - ) - ) - assertEquals( - Role.CHAIR, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertNull(cuType) + assertEquals(Role.CHAIR, role) } } @@ -283,15 +191,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.UNKNOWN, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.UNKNOWN, cuType) + assertNull(role) } } @@ -302,15 +203,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_RESOURCE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ATTENDEE) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.RESOURCE, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.RESOURCE, cuType) + assertNull(role) } } @@ -320,15 +214,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_RESOURCE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.RESOURCE, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.RESOURCE, cuType) + assertNull(role) } } @@ -338,15 +225,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_RESOURCE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_PERFORMER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.ROOM, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.ROOM, cuType) + assertNull(role) } } @@ -356,14 +236,8 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_RESOURCE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_SPEAKER) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.RESOURCE, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertEquals( - Role.CHAIR, - getParameter(net.fortuna.ical4j.model.Parameter.ROLE) - ) + assertEquals(CuType.RESOURCE, cuType) + assertEquals(Role.CHAIR, role) } } @@ -373,19 +247,10 @@ class AttendeeMappingsTest { put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_RESOURCE) put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE) }) { - assertEquals( - net.fortuna.ical4j.model.parameter.CuType.RESOURCE, - getParameter(net.fortuna.ical4j.model.Parameter.CUTYPE) - ) - assertNull( - getParameter( - net.fortuna.ical4j.model.Parameter.ROLE - ) - ) + assertEquals(CuType.RESOURCE, cuType) + assertNull(role) } } - */ - @Test @@ -1105,4 +970,10 @@ class AttendeeMappingsTest { test(attendee) } -} \ No newline at end of file +} + +private val Attendee.cuType: CuType? + get() = getParameter(Parameter.CUTYPE).getOrNull() + +private val Attendee.role: Role? + get() = getParameter(Parameter.ROLE).getOrNull() diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandlerTest.kt index cf343ee5..0513b1f5 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AttendeesHandlerTest.kt @@ -22,23 +22,18 @@ import net.fortuna.ical4j.model.property.Attendee import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Assert.assertTrue -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import java.net.URI +import kotlin.jvm.optionals.getOrNull -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class AttendeesHandlerTest { private val handler = AttendeesHandler() - init { - TODO("ical4j 4.x") - } - - /*@Test + @Test fun `Attendee is email address`() { val entity = Entity(ContentValues()) entity.addSubValue(Attendees.CONTENT_URI, contentValuesOf( @@ -48,7 +43,7 @@ class AttendeesHandlerTest { handler.process(entity, entity, result) assertEquals( URI("mailto:attendee@example.com"), - result.getProperty(Property.ATTENDEE).calAddress + result.firstAttendee.calAddress ) } @@ -63,7 +58,7 @@ class AttendeesHandlerTest { handler.process(entity, entity, result) assertEquals( URI("https://example.com/principals/attendee"), - result.getProperty(Property.ATTENDEE).calAddress + result.firstAttendee.calAddress ) } @@ -81,7 +76,7 @@ class AttendeesHandlerTest { assertEquals(1, attendees.size) val attendee = attendees.first() assertEquals(URI("https://example.com/principals/attendee"), attendee.calAddress) - assertEquals("attendee@example.com", attendee.getParameter(Parameter.EMAIL).value) + assertEquals("attendee@example.com", attendee.getParameter(Parameter.EMAIL).get().value) } @@ -97,8 +92,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.CUTYPE)) + assertNull(result.firstAttendee.cuType) } } @@ -113,8 +107,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(CuType.GROUP, attendee.getParameter(Parameter.CUTYPE)) + assertEquals(CuType.GROUP, result.firstAttendee.cuType) } } @@ -129,9 +122,9 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.CUTYPE)) - assertEquals(Role.CHAIR, attendee.getParameter(Parameter.ROLE)) + val attendee = result.firstAttendee + assertNull(attendee.cuType) + assertEquals(Role.CHAIR, attendee.role) } } @@ -145,9 +138,9 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(CuType.RESOURCE, attendee.getParameter(Parameter.CUTYPE)) - assertEquals(Role.CHAIR, attendee.getParameter(Parameter.ROLE)) + val attendee = result.firstAttendee + assertEquals(CuType.RESOURCE, attendee.cuType) + assertEquals(Role.CHAIR, attendee.role) } @Test @@ -162,8 +155,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(CuType.UNKNOWN, attendee.getParameter(Parameter.CUTYPE)) + assertEquals(CuType.UNKNOWN, result.firstAttendee.cuType) } } @@ -179,8 +171,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.ROLE)) + assertNull(result.firstAttendee.role) } } @@ -195,8 +186,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.ROLE)) + assertNull(result.firstAttendee.role) } } @@ -211,8 +201,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(Role.OPT_PARTICIPANT, attendee.getParameter(Parameter.ROLE)) + assertEquals(Role.OPT_PARTICIPANT, result.firstAttendee.role) } } @@ -227,8 +216,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(CuType.RESOURCE, attendee.getParameter(Parameter.CUTYPE)) + assertEquals(CuType.RESOURCE, result.firstAttendee.cuType) } } @@ -242,8 +230,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(CuType.ROOM, attendee.getParameter(Parameter.CUTYPE)) + assertEquals(CuType.ROOM, result.firstAttendee.cuType) } @@ -255,8 +242,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.PARTSTAT)) + assertNull(result.firstAttendee.partStat) } @Test @@ -268,8 +254,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(PartStat.NEEDS_ACTION, attendee.getParameter(Parameter.PARTSTAT)) + assertEquals(PartStat.NEEDS_ACTION, result.firstAttendee.partStat) } @Test @@ -281,8 +266,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(PartStat.ACCEPTED, attendee.getParameter(Parameter.PARTSTAT)) + assertEquals(PartStat.ACCEPTED, result.firstAttendee.partStat) } @Test @@ -294,8 +278,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(PartStat.DECLINED, attendee.getParameter(Parameter.PARTSTAT)) + assertEquals(PartStat.DECLINED, result.firstAttendee.partStat) } @Test @@ -307,8 +290,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertEquals(PartStat.TENTATIVE, attendee.getParameter(Parameter.PARTSTAT)) + assertEquals(PartStat.TENTATIVE, result.firstAttendee.partStat) } @Test @@ -320,8 +302,7 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertNull(attendee.getParameter(Parameter.PARTSTAT)) + assertNull(result.firstAttendee.partStat) } @@ -333,8 +314,19 @@ class AttendeesHandlerTest { )) val result = VEvent() handler.process(entity, entity, result) - val attendee = result.getProperty(Property.ATTENDEE) - assertTrue(attendee.getParameter(Parameter.RSVP).rsvp) - }*/ + assertTrue(result.firstAttendee.getParameter(Parameter.RSVP).get().rsvp) + } + +} + +private val VEvent.firstAttendee: Attendee + get() = getProperty(Property.ATTENDEE).get() + +private val Attendee.cuType: CuType? + get() = getParameter(Parameter.CUTYPE).getOrNull() + +private val Attendee.role: Role? + get() = getParameter(Parameter.ROLE).getOrNull() -} \ No newline at end of file +private val Attendee.partStat: PartStat? + get() = getParameter(Parameter.PARTSTAT).getOrNull() diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandlerTest.kt index 62f4f328..812dc839 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/AvailabilityHandlerTest.kt @@ -13,14 +13,14 @@ import androidx.core.content.contentValuesOf import net.fortuna.ical4j.model.Property import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Transp +import net.fortuna.ical4j.model.property.immutable.ImmutableTransp import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner +import kotlin.jvm.optionals.getOrNull -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class AvailabilityHandlerTest { @@ -32,7 +32,7 @@ class AvailabilityHandlerTest { val entity = Entity(ContentValues()) handler.process(entity, entity, result) // OPAQUE is default value - assertNull(result.getProperty(Property.TRANSP)) + assertNull(result.transp) } @Test @@ -43,7 +43,7 @@ class AvailabilityHandlerTest { )) handler.process(entity, entity, result) // OPAQUE is default value - assertNull(result.getProperty(Property.TRANSP)) + assertNull(result.transp) } @Test @@ -53,8 +53,7 @@ class AvailabilityHandlerTest { Events.AVAILABILITY to Events.AVAILABILITY_FREE )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertEquals(Transp.TRANSPARENT, result.getProperty(Property.TRANSP)) + assertEquals(ImmutableTransp.TRANSPARENT, result.transp) } @Test @@ -65,7 +64,10 @@ class AvailabilityHandlerTest { )) handler.process(entity, entity, result) // OPAQUE is default value - assertNull(result.getProperty(Property.TRANSP)) + assertNull(result.transp) } -} \ No newline at end of file +} + +private val VEvent.transp: Transp? + get() = getProperty(Property.TRANSP).getOrNull() \ No newline at end of file diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandlerTest.kt index 982c72fc..6d48ec83 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/CategoriesHandlerTest.kt @@ -15,13 +15,11 @@ import net.fortuna.ical4j.model.Property import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Categories import org.junit.Assert.assertEquals -import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner +import java.util.Optional -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class CategoriesHandlerTest { @@ -32,7 +30,7 @@ class CategoriesHandlerTest { val result = VEvent() val entity = Entity(ContentValues()) handler.process(entity, entity, result) - assertNull(result.getProperty(Property.CATEGORIES)) + assertEquals(Optional.empty(), result.getProperty(Property.CATEGORIES)) } @Test @@ -44,8 +42,7 @@ class CategoriesHandlerTest { ExtendedProperties.VALUE to "Cat 1\\Cat 2" )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertEquals(listOf("Cat 1", "Cat 2"), result.getProperty(Property.CATEGORIES).categories.toList()) + assertEquals(setOf("Cat 1", "Cat 2"), result.getProperty(Property.CATEGORIES).get().categories.texts) } } \ No newline at end of file diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandlerTest.kt index 734ef752..54b71de2 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/OrganizerHandlerTest.kt @@ -14,12 +14,10 @@ import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Organizer import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class OrganizerHandlerTest { diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandlerTest.kt index c5f20e9e..6a6beb64 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/RemindersHandlerTest.kt @@ -10,29 +10,28 @@ import android.content.ContentValues import android.content.Entity import android.provider.CalendarContract.Reminders import androidx.core.content.contentValuesOf +import net.fortuna.ical4j.model.Property +import net.fortuna.ical4j.model.component.VAlarm import net.fortuna.ical4j.model.component.VEvent import net.fortuna.ical4j.model.property.Action +import net.fortuna.ical4j.model.property.Trigger +import net.fortuna.ical4j.model.property.immutable.ImmutableAction import org.junit.Assert.assertEquals import org.junit.Assert.assertNotNull import org.junit.Assume.assumeTrue -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import java.time.Duration +import kotlin.jvm.optionals.getOrNull -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class RemindersHandlerTest { private val accountName = "user@example.com" private val handler = RemindersHandler(accountName) - init { - TODO("ical4j 4.x") - } - - /*@Test + @Test fun `Email reminder`() { // account name looks like an email address assumeTrue(accountName.endsWith("@example.com")) @@ -45,7 +44,7 @@ class RemindersHandlerTest { val result = VEvent() handler.process(entity, entity, result) val alarm = result.alarms.first() - assertEquals(Action.EMAIL, alarm.action) + assertEquals(ImmutableAction.EMAIL, alarm.actionProperty) assertNotNull(alarm.summary) assertNotNull(alarm.description) } @@ -64,7 +63,7 @@ class RemindersHandlerTest { val result = VEvent() handler2.process(entity, entity, result) val alarm = result.alarms.first() - assertEquals(Action.DISPLAY, alarm.action) + assertEquals(ImmutableAction.DISPLAY, alarm.actionProperty) assertNotNull(alarm.description) } @@ -79,7 +78,7 @@ class RemindersHandlerTest { val result = VEvent() handler.process(entity, entity, result) val alarm = result.alarms.first() - assertEquals(Action.DISPLAY, alarm.action) + assertEquals(ImmutableAction.DISPLAY, alarm.actionProperty) assertNotNull(alarm.description) } } @@ -95,7 +94,7 @@ class RemindersHandlerTest { val result = VEvent() handler.process(entity, entity, result) val alarm = result.alarms.first() - assertEquals(Duration.ofMinutes(-10), alarm.trigger.duration) + assertEquals(Duration.ofMinutes(-10), alarm.triggerProperty.duration) } @Test @@ -108,7 +107,13 @@ class RemindersHandlerTest { val result = VEvent() handler.process(entity, entity, result) val alarm = result.alarms.first() - assertEquals(Duration.ofMinutes(10), alarm.trigger.duration) - }*/ + assertEquals(Duration.ofMinutes(10), alarm.triggerProperty.duration) + } + +} + +private val VAlarm.actionProperty: Action? + get() = getProperty(Property.ACTION).getOrNull() -} \ No newline at end of file +private val VAlarm.triggerProperty: Trigger + get() = getProperty(Property.TRIGGER).get() diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandlerTest.kt index 757f77c7..086b619d 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/SequenceHandlerTest.kt @@ -13,12 +13,10 @@ import at.bitfire.synctools.storage.calendar.EventsContract import net.fortuna.ical4j.model.component.VEvent import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class SequenceHandlerTest { diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandlerTest.kt index d2da6d72..9c8be979 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/StatusHandlerTest.kt @@ -11,15 +11,13 @@ import android.content.Entity import android.provider.CalendarContract.Events import androidx.core.content.contentValuesOf import net.fortuna.ical4j.model.component.VEvent -import net.fortuna.ical4j.model.property.Status +import net.fortuna.ical4j.model.property.immutable.ImmutableStatus import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class StatusHandlerTest { @@ -40,8 +38,7 @@ class StatusHandlerTest { Events.STATUS to Events.STATUS_CONFIRMED )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertEquals(Status.VEVENT_CONFIRMED, result.status) + assertEquals(ImmutableStatus.VEVENT_CONFIRMED, result.status) } @Test @@ -51,8 +48,7 @@ class StatusHandlerTest { Events.STATUS to Events.STATUS_TENTATIVE )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertEquals(Status.VEVENT_TENTATIVE, result.status) + assertEquals(ImmutableStatus.VEVENT_TENTATIVE, result.status) } @Test @@ -62,8 +58,7 @@ class StatusHandlerTest { Events.STATUS to Events.STATUS_CANCELED )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertEquals(Status.VEVENT_CANCELLED, result.status) + assertEquals(ImmutableStatus.VEVENT_CANCELLED, result.status) } } \ No newline at end of file diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandlerTest.kt index 6039930c..b8aa0d21 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UnknownPropertiesHandlerTest.kt @@ -16,12 +16,10 @@ import net.fortuna.ical4j.model.parameter.XParameter import net.fortuna.ical4j.model.property.XProperty import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class UnknownPropertiesHandlerTest { @@ -32,8 +30,7 @@ class UnknownPropertiesHandlerTest { val result = VEvent(/* initialise = */ false) val entity = Entity(ContentValues()) handler.process(entity, entity, result) - TODO("ical4j 4.x") - //assertTrue(result.properties.isEmpty()) + assertTrue(result.propertyList.all.isEmpty()) } @Test @@ -53,13 +50,11 @@ class UnknownPropertiesHandlerTest { ExtendedProperties.VALUE to "[\"X-PROP2\", \"value 2\", {\"arg1\": \"arg-value\"}]" )) handler.process(entity, entity, result) - TODO("ical4j 4.x") - /*assertEquals(listOf( + assertEquals(listOf( XProperty("X-PROP1", "value 1"), - XProperty("X-PROP2", "value 2").apply { - parameters.add(XParameter("ARG1", "arg-value")) - }, - ), result.properties)*/ + XProperty("X-PROP2", "value 2") + .add(XParameter("ARG1", "arg-value")), + ), result.propertyList.all) } } \ No newline at end of file diff --git a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandlerTest.kt b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandlerTest.kt index b507d525..027cf165 100644 --- a/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandlerTest.kt +++ b/lib/src/test/kotlin/at/bitfire/synctools/mapping/calendar/handler/UrlHandlerTest.kt @@ -14,13 +14,11 @@ import at.bitfire.synctools.storage.calendar.EventsContract import net.fortuna.ical4j.model.component.VEvent import org.junit.Assert.assertEquals import org.junit.Assert.assertNull -import org.junit.Ignore import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import java.net.URI -@Ignore("ical4j 4.x") @RunWith(RobolectricTestRunner::class) class UrlHandlerTest {