//
//  InsightsEmptyStateTests.swift
//  Tests iOS
//
//  TC-043: Insights with no data shows empty state message.
//

import XCTest

final class InsightsEmptyStateTests: BaseUITestCase {
    override var seedFixture: String? { "empty" }

    /// TC-043: Navigate to Insights with no data — should show "No Data Yet" or similar message.
    func testInsights_EmptyState_ShowsNoDataMessage() {
        let tabBar = TabBarScreen(app: app)
        tabBar.tapInsights()

        // Wait for insights content to load
        let insightsHeader = app.element(UITestID.Insights.header)
        XCTAssertTrue(
            insightsHeader.waitForExistence(timeout: 10),
            "Insights header should be visible"
        )

        captureScreenshot(name: "insights_empty_state")

        // Look for empty state text — either "No Data Yet" or "AI Unavailable"
        // (Both are valid on simulator with no data)
        let noDataText = app.staticTexts.matching(
            NSPredicate(format: "label CONTAINS[cd] %@", "No Data")
        ).firstMatch
        let aiUnavailable = app.staticTexts.matching(
            NSPredicate(format: "label CONTAINS[cd] %@", "Unavailable")
        ).firstMatch
        let startLogging = app.staticTexts.matching(
            NSPredicate(format: "label CONTAINS[cd] %@", "Start logging")
        ).firstMatch

        let hasEmptyMessage = noDataText.waitForExistence(timeout: 10)
            || aiUnavailable.waitForExistence(timeout: 3)
            || startLogging.waitForExistence(timeout: 3)

        XCTAssertTrue(
            hasEmptyMessage,
            "Insights should show an empty state or unavailable message when no data exists"
        )

        captureScreenshot(name: "insights_empty_message")
    }
}
