//
//  YearViewDisplayTests.swift
//  Tests iOS
//
//  Year View display tests: stats section with donut chart and bar chart.
//  TC-035, TC-036
//

import XCTest

final class YearViewDisplayTests: BaseUITestCase {
    override var seedFixture: String? { "week_of_moods" }
    override var bypassSubscription: Bool { true }

    /// TC-035: Year View shows donut chart with mood distribution.
    /// The donut chart center displays the entry count with "days" text.
    func testYearView_DonutChartVisible() {
        let tabBar = TabBarScreen(app: app)
        tabBar.tapYear()

        XCTAssertTrue(tabBar.yearTab.isSelected, "Year tab should be selected")

        // Wait for stats section to render
        let statsSection = app.element(UITestID.Year.statsSection)
        XCTAssertTrue(
            statsSection.waitForExistence(timeout: 8),
            "Year stats section should be visible"
        )

        // The donut chart center shows "days" — search globally since
        // SwiftUI flattens the accessibility tree under GeometryReader.
        let daysLabel = app.staticTexts["days"]
        XCTAssertTrue(
            daysLabel.waitForExistence(timeout: 3),
            "Donut chart should display 'days' label in center"
        )

        captureScreenshot(name: "year_donut_chart")
    }

    /// TC-036: Year View shows bar chart with mood percentages.
    func testYearView_BarChartVisible() {
        let tabBar = TabBarScreen(app: app)
        tabBar.tapYear()

        XCTAssertTrue(tabBar.yearTab.isSelected, "Year tab should be selected")

        let statsSection = app.element(UITestID.Year.statsSection)
        XCTAssertTrue(
            statsSection.waitForExistence(timeout: 8),
            "Year stats section should be visible"
        )

        // week_of_moods fixture: 2 great, 2 good, 1 avg, 1 bad, 1 horrible
        // Expected percentages: 28% (great, good) and 14% (avg, bad, horrible).
        // Search for any of the expected percentage labels.
        let found28 = app.staticTexts["28%"].waitForExistence(timeout: 3)
        let found14 = app.staticTexts["14%"].waitForExistence(timeout: 2)

        captureScreenshot(name: "year_bar_chart")

        XCTAssertTrue(
            found28 || found14,
            "Bar chart should show at least one percentage value (28% or 14%)"
        )
    }
}
