CalendarServerIdCodecTest.kt
104 lignes · 3420 octets
package fr.ebii.card2vcf.sync import org.junit.Assert.assertEquals import org.junit.Assert.assertNull import org.junit.Test class CalendarServerIdCodecTest { @Test fun encodeWithServerIdPrependsPrefixLine() { val encoded = CalendarServerIdCodec.encode(serverId = "abc-123", descriptionBody = "RDV client") assertEquals("card2vcf:serverId=abc-123\nRDV client", encoded) } @Test fun encodeWithNullServerIdReturnsBodyUnchanged() { val encoded = CalendarServerIdCodec.encode(serverId = null, descriptionBody = "RDV client") assertEquals("RDV client", encoded) } @Test fun encodeWithEmptyBodyKeepsTrailingNewline() { val encoded = CalendarServerIdCodec.encode(serverId = "abc-123", descriptionBody = "") assertEquals("card2vcf:serverId=abc-123\n", encoded) } @Test fun decodeExtractsServerIdAndBody() { val (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123\nRDV client") assertEquals("abc-123", serverId) assertEquals("RDV client", body) } @Test fun decodeWithoutPrefixReturnsNullServerIdAndFullDescription() { val (serverId, body) = CalendarServerIdCodec.decode("Simple description sans serverId") assertNull(serverId) assertEquals("Simple description sans serverId", body) } @Test fun decodeNullDescriptionReturnsNullAndEmptyBody() { val (serverId, body) = CalendarServerIdCodec.decode(null) assertNull(serverId) assertEquals("", body) } @Test fun decodeWithPrefixButNoNewlineTreatsRestAsServerId() { val (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123") assertEquals("abc-123", serverId) assertEquals("", body) } @Test fun decodeWithMultilineBodyPreservesInternalNewlines() { val (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123\nligne1\nligne2") assertEquals("abc-123", serverId) assertEquals("ligne1\nligne2", body) } @Test fun roundTripEncodeThenDecodePreservesServerIdAndBody() { val encoded = CalendarServerIdCodec.encode(serverId = "srv-42", descriptionBody = "Détails\nsur plusieurs lignes") val (serverId, body) = CalendarServerIdCodec.decode(encoded) assertEquals("srv-42", serverId) assertEquals("Détails\nsur plusieurs lignes", body) } @Test fun roundTripWithoutServerIdPreservesBody() { val encoded = CalendarServerIdCodec.encode(serverId = null, descriptionBody = "Sans serverId") val (serverId, body) = CalendarServerIdCodec.decode(encoded) assertNull(serverId) assertEquals("Sans serverId", body) } @Test fun indispoTitleAddsPrefix() { assertEquals("[Indispo] Salle A fermée", CalendarEventTitles.indispoTitle("Salle A fermée")) } @Test fun isIndispoTitleDetectsPrefix() { assertEquals(true, CalendarEventTitles.isIndispoTitle("[Indispo] Salle A fermée")) assertEquals(false, CalendarEventTitles.isIndispoTitle("RDV client")) } @Test fun stripIndispoPrefixRemovesPrefixWhenPresent() { assertEquals("Salle A fermée", CalendarEventTitles.stripIndispoPrefix("[Indispo] Salle A fermée")) assertEquals("RDV client", CalendarEventTitles.stripIndispoPrefix("RDV client")) } }
GitRust