//
//  ThemeIDTests.swift
//  honeyDueTests
//
//  Unit tests for ThemeID enum properties and round-tripping.
//

import Testing
@testable import honeyDue

// MARK: - ThemeID Enum Tests

struct ThemeIDTests {

    @Test func allCasesCountIsEleven() {
        #expect(ThemeID.allCases.count == 11)
    }

    @Test func allDisplayNamesAreNonEmpty() {
        for theme in ThemeID.allCases {
            #expect(!theme.displayName.isEmpty, "ThemeID.\(theme) has empty displayName")
        }
    }

    @Test func allDescriptionsAreNonEmpty() {
        for theme in ThemeID.allCases {
            #expect(!theme.description.isEmpty, "ThemeID.\(theme) has empty description")
        }
    }

    @Test func rawValueRoundTripsForAllCases() {
        for theme in ThemeID.allCases {
            let roundTripped = ThemeID(rawValue: theme.rawValue)
            #expect(roundTripped == theme, "ThemeID.\(theme) failed rawValue round-trip")
        }
    }

    @Test func allRawValuesAreUnique() {
        let rawValues = ThemeID.allCases.map(\.rawValue)
        #expect(Set(rawValues).count == rawValues.count)
    }

    @Test func brightDisplayNameIsDefault() {
        #expect(ThemeID.bright.displayName == "Default")
    }

    @Test func oceanRawValueIsOcean() {
        #expect(ThemeID.ocean.rawValue == "Ocean")
    }

    // MARK: - Honeycomb Setting Tests

    @Test func honeycombDefaultsToDisabled() {
        // HoneycombSetting reads from UserDefaults which defaults to false for unset Bool keys
        #expect(HoneycombSetting.isEnabled == false)
    }
}
