//
//  IconPackTests.swift
//  Tests iOS
//
//  Icon pack tests: select each of the 7 icon packs and verify no crash.
//  TC-072
//

import XCTest

final class IconPackTests: BaseUITestCase {
    override var seedFixture: String? { "single_mood" }
    override var bypassSubscription: Bool { true }

    /// All 7 icon pack accessibility identifiers (lowercased enum case names).
    private let allIconPacks = [
        "fontawesome",
        "emoji",
        "handemjoi",
        "weather",
        "garden",
        "hearts",
        "cosmic"
    ]

    /// TC-072: Select each of 7 icon packs without crashing.
    func testIconPacks_AllSelectable() {
        let tabBar = TabBarScreen(app: app)
        let settingsScreen = tabBar.tapSettings()
        settingsScreen.assertVisible()
        settingsScreen.tapCustomizeTab()
        let customizeScreen = CustomizeScreen(app: app)

        for pack in allIconPacks {
            customizeScreen.selectIconPack(pack)
            XCTAssertTrue(customizeScreen.iconPackButton(named: pack).exists, "Icon pack button '\(pack)' should exist in the customize view")
        }

        captureScreenshot(name: "icon_packs_cycled")

        // Navigate to Day tab and verify no crash — entry row should still exist
        tabBar.tapDay()

        assertDayContentVisible()

        captureScreenshot(name: "day_view_after_icon_pack_change")
    }

    /// TC-072: Verify each icon pack button exists in the customize view.
    func testIconPacks_AllButtonsExist() {
        let tabBar = TabBarScreen(app: app)
        let settingsScreen = tabBar.tapSettings()
        settingsScreen.assertVisible()
        settingsScreen.tapCustomizeTab()
        let customizeScreen = CustomizeScreen(app: app)

        for pack in allIconPacks {
            let button = customizeScreen.iconPackButton(named: pack)
            if !button.exists { _ = app.swipeUntilExists(button, direction: .up, maxSwipes: 6) }
            XCTAssertTrue(
                button.waitForExistence(timeout: 3),
                "Icon pack button '\(pack)' should exist"
            )
        }

        captureScreenshot(name: "icon_packs_all_buttons")
    }
}
