import Foundation
import Testing
@testable import nahbar

// MARK: - TourTargetID Tests

@Suite("TourTargetID – Vollständigkeit")
struct TourTargetIDTests {

    @Test("Alle 10 erwarteten Cases sind vorhanden")
    func allCasesCount() {
        #expect(TourTargetID.allCases.count == 10)
    }

    @Test("Alle rawValues sind nicht leer")
    func allRawValuesNonEmpty() {
        for target in TourTargetID.allCases {
            #expect(!target.rawValue.isEmpty, "rawValue für \(target) ist leer")
        }
    }

    @Test("Alle rawValues sind eindeutig")
    func allRawValuesUnique() {
        let rawValues = TourTargetID.allCases.map { $0.rawValue }
        #expect(Set(rawValues).count == rawValues.count)
    }

    @Test("addMomentButton hat den korrekten rawValue")
    func addMomentButtonRawValue() {
        #expect(TourTargetID.addMomentButton.rawValue == "addMomentButton")
    }

    @Test("addTodoButton hat den korrekten rawValue")
    func addTodoButtonRawValue() {
        #expect(TourTargetID.addTodoButton.rawValue == "addTodoButton")
    }

    @Test("addContactButton ist im CaseIterable enthalten")
    func addContactButtonPresent() {
        #expect(TourTargetID.allCases.contains(.addContactButton))
    }

    @Test("addMomentButton ist im CaseIterable enthalten")
    func addMomentButtonPresent() {
        #expect(TourTargetID.allCases.contains(.addMomentButton))
    }

    @Test("addTodoButton ist im CaseIterable enthalten")
    func addTodoButtonPresent() {
        #expect(TourTargetID.allCases.contains(.addTodoButton))
    }
}
