05296b3166
- FU-C 멀티파트 업로드(DSClient.uploadDocument + LiveDSClient 401 재시도 공유 + 툴바/상태바) - FU-D 네이티브 다운로드(NSSavePanel + URLSession, ?token= 미노출, 임시파일 정리) - 로그아웃(AppModel.logout 세션 전체 초기화 + 계정 메뉴) - 셸 2-column 재구성: 질문/이드 제거, 홈 코크핏 + 문서 3-pane 컬럼 브라우저 (인스펙터 TL;DR/핵심점/심층/불일치) + 도메인 필터 전체 load-all - 적대 리뷰 반영(stale 401 데모션·다운로드 임시파일 정리·메모 저장 saveMemo 경유·도메인 필터 선택 정합) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
51 lines
1.9 KiB
Swift
51 lines
1.9 KiB
Swift
import XCTest
|
|
@testable import AppFeature
|
|
import DSKit
|
|
|
|
/// 로그아웃 상태 초기화 + 업로드 결과 반영 — 네트워크 0 (Fixture).
|
|
final class AppModelActionsTests: XCTestCase {
|
|
|
|
// ready 세션에서 로그아웃 → loggedOut + 토큰/사용자/로드상태 전부 초기화
|
|
@MainActor
|
|
func testLogoutResetsStateAndLogsOut() async {
|
|
let model = AppModel.preview
|
|
await model.bootstrap()
|
|
XCTAssertEqual(model.authPhase, .ready)
|
|
XCTAssertFalse(model.documentList.isEmpty)
|
|
XCTAssertNotNil(model.currentUser, "loadInitial 이 me() 로 사용자 채움")
|
|
|
|
await model.logout()
|
|
|
|
XCTAssertEqual(model.authPhase, .loggedOut)
|
|
XCTAssertTrue(model.accessToken.isEmpty)
|
|
XCTAssertNil(model.currentUser)
|
|
XCTAssertTrue(model.documentList.isEmpty)
|
|
XCTAssertNil(model.documentDetail)
|
|
XCTAssertTrue(model.tree.isEmpty)
|
|
XCTAssertEqual(model.uploadState, .idle)
|
|
}
|
|
|
|
// 업로드 성공 → uploadState=.done + 목록 재로드
|
|
@MainActor
|
|
func testUploadSuccessSetsDoneAndReloads() async {
|
|
let model = AppModel.preview
|
|
await model.bootstrap()
|
|
await model.upload(DocumentUpload(filename: "x.pdf", data: Data("x".utf8), mimeType: "application/pdf"))
|
|
|
|
if case .done = model.uploadState {} else {
|
|
XCTFail("기대 .done, 실제 \(model.uploadState)")
|
|
}
|
|
XCTAssertFalse(model.documentList.isEmpty)
|
|
}
|
|
|
|
// 업로드 진행 상태 전이 표현 (Equatable 동작 확인 — 상태바 분기 근거)
|
|
@MainActor
|
|
func testDismissUploadStatusReturnsToIdle() async {
|
|
let model = AppModel.preview
|
|
await model.bootstrap()
|
|
await model.upload(DocumentUpload(filename: "x.pdf", data: Data("x".utf8)))
|
|
model.dismissUploadStatus()
|
|
XCTAssertEqual(model.uploadState, .idle)
|
|
}
|
|
}
|