Files
kontakte/KontakteTests/KontakteTests.swift

83 lines
2.1 KiB
Swift

//
// KontakteTests.swift
// KontakteTests
//
// Created by Felix Förtsch on 09.02.26.
//
import Foundation
import Testing
@testable import Kontakte
struct KontakteTests {
@Test func parseEmptyNoteReturnsDefaultMetadata() {
let metadata = ContactMetadataDSL.parse(note: "")
#expect(metadata.isFavorite == false)
#expect(metadata.isMyCard == false)
}
@Test func parseMetadataBlockDetectsFlags() {
let note = """
private note
[[kontakte]]
favorite=1
my_card=1
[[/kontakte]]
"""
let metadata = ContactMetadataDSL.parse(note: note)
#expect(metadata.isFavorite == true)
#expect(metadata.isMyCard == true)
}
@Test func updatingAddsMetadataBlockAndKeepsExistingNote() {
let updated = ContactMetadataDSL.updating(
note: "Hello",
metadata: ContactMetadata(isFavorite: true, isMyCard: false)
)
#expect(updated.contains("Hello"))
#expect(updated.contains("[[kontakte]]"))
#expect(updated.contains("favorite=1"))
#expect(updated.contains("[[/kontakte]]"))
}
@Test func updatingReplacesExistingMetadataBlock() {
let original = """
Hello
[[kontakte]]
favorite=1
[[/kontakte]]
"""
let updated = ContactMetadataDSL.updating(
note: original,
metadata: ContactMetadata(isFavorite: false, isMyCard: true)
)
#expect(updated.contains("my_card=1"))
#expect(updated.contains("favorite=1") == false)
#expect(updated.components(separatedBy: "[[kontakte]]").count == 2)
}
@Test func updatingRemovesMetadataBlockWhenNoFlagsAreSet() {
let original = """
Hello
[[kontakte]]
favorite=1
[[/kontakte]]
"""
let updated = ContactMetadataDSL.updating(
note: original,
metadata: ContactMetadata(isFavorite: false, isMyCard: false)
)
#expect(updated == "Hello")
#expect(updated.contains("[[kontakte]]") == false)
}
}