import Foundation import RastrilloApple import XCTest @testable import SheetsKit final class HomeLoadingTests: XCTestCase { @MainActor func testLoadingSuccessAndFailureAreDistinct() async throws { guard let origin = ProcessInfo.processInfo.environment["HOME_LOADING_TEST_ORIGIN"] else { throw XCTSkip("Run the delayed home-list fixture") } let model = SheetModel(client: NativeHTTP(origin: URL(string: origin)!)) XCTAssertEqual(model.listState, .loading) for expected in [1, 0, -1, 1] { let request = Task { await model.loadList() } try await Task.sleep(for: .milliseconds(25)) XCTAssertEqual(model.listState, .loading, "Never classify an in-flight request as empty") await request.value XCTAssertEqual(model.listState, expected == -1 ? .failed : .loaded) if expected >= 0 { XCTAssertEqual(model.sheets.count, expected) } } } }