CalendarServerIdCodecTest.swift
87 lignes · 3300 octets
import XCTest @testable import Card2vcf final class CalendarServerIdCodecTest: XCTestCase { func testEncodeWithServerIdPrependsPrefixLine() { let encoded = CalendarServerIdCodec.encode(serverId: "abc-123", descriptionBody: "RDV client") XCTAssertEqual("card2vcf:serverId=abc-123\nRDV client", encoded) } func testEncodeWithNilServerIdReturnsBodyUnchanged() { let encoded = CalendarServerIdCodec.encode(serverId: nil, descriptionBody: "RDV client") XCTAssertEqual("RDV client", encoded) } func testEncodeWithEmptyBodyKeepsTrailingNewline() { let encoded = CalendarServerIdCodec.encode(serverId: "abc-123", descriptionBody: "") XCTAssertEqual("card2vcf:serverId=abc-123\n", encoded) } func testDecodeExtractsServerIdAndBody() { let (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123\nRDV client") XCTAssertEqual("abc-123", serverId) XCTAssertEqual("RDV client", body) } func testDecodeWithoutPrefixReturnsNilServerIdAndFullDescription() { let (serverId, body) = CalendarServerIdCodec.decode("Simple description sans serverId") XCTAssertNil(serverId) XCTAssertEqual("Simple description sans serverId", body) } func testDecodeNilDescriptionReturnsNilAndEmptyBody() { let (serverId, body) = CalendarServerIdCodec.decode(nil) XCTAssertNil(serverId) XCTAssertEqual("", body) } func testDecodeWithPrefixButNoNewlineTreatsRestAsServerId() { let (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123") XCTAssertEqual("abc-123", serverId) XCTAssertEqual("", body) } func testDecodeWithMultilineBodyPreservesInternalNewlines() { let (serverId, body) = CalendarServerIdCodec.decode("card2vcf:serverId=abc-123\nligne1\nligne2") XCTAssertEqual("abc-123", serverId) XCTAssertEqual("ligne1\nligne2", body) } func testRoundTripEncodeThenDecodePreservesServerIdAndBody() { let encoded = CalendarServerIdCodec.encode(serverId: "srv-42", descriptionBody: "Détails\nsur plusieurs lignes") let (serverId, body) = CalendarServerIdCodec.decode(encoded) XCTAssertEqual("srv-42", serverId) XCTAssertEqual("Détails\nsur plusieurs lignes", body) } func testRoundTripWithoutServerIdPreservesBody() { let encoded = CalendarServerIdCodec.encode(serverId: nil, descriptionBody: "Sans serverId") let (serverId, body) = CalendarServerIdCodec.decode(encoded) XCTAssertNil(serverId) XCTAssertEqual("Sans serverId", body) } func testIndispoTitleAddsPrefix() { XCTAssertEqual("[Indispo] Salle A fermée", CalendarEventTitles.indispoTitle("Salle A fermée")) } func testIsIndispoTitleDetectsPrefix() { XCTAssertTrue(CalendarEventTitles.isIndispoTitle("[Indispo] Salle A fermée")) XCTAssertFalse(CalendarEventTitles.isIndispoTitle("RDV client")) } func testStripIndispoPrefixRemovesPrefixWhenPresent() { XCTAssertEqual("Salle A fermée", CalendarEventTitles.stripIndispoPrefix("[Indispo] Salle A fermée")) XCTAssertEqual("RDV client", CalendarEventTitles.stripIndispoPrefix("RDV client")) } }
GitRust