49 lines
1.6 KiB
Swift
49 lines
1.6 KiB
Swift
import XCTest
|
|
|
|
#if canImport(cmux_DEV)
|
|
@testable import cmux_DEV
|
|
#elseif canImport(cmux)
|
|
@testable import cmux
|
|
#endif
|
|
|
|
@MainActor
|
|
final class TabManagerSessionSnapshotTests: XCTestCase {
|
|
func testSessionSnapshotSerializesWorkspacesAndRestoreRebuildsSelection() {
|
|
let manager = TabManager()
|
|
guard let firstWorkspace = manager.selectedWorkspace else {
|
|
XCTFail("Expected initial workspace")
|
|
return
|
|
}
|
|
firstWorkspace.setCustomTitle("First")
|
|
|
|
let secondWorkspace = manager.addWorkspace(select: true)
|
|
secondWorkspace.setCustomTitle("Second")
|
|
XCTAssertEqual(manager.tabs.count, 2)
|
|
XCTAssertEqual(manager.selectedTabId, secondWorkspace.id)
|
|
|
|
let snapshot = manager.sessionSnapshot(includeScrollback: false)
|
|
XCTAssertEqual(snapshot.workspaces.count, 2)
|
|
XCTAssertEqual(snapshot.selectedWorkspaceIndex, 1)
|
|
|
|
let restored = TabManager()
|
|
restored.restoreSessionSnapshot(snapshot)
|
|
|
|
XCTAssertEqual(restored.tabs.count, 2)
|
|
XCTAssertEqual(restored.selectedTabId, restored.tabs[1].id)
|
|
XCTAssertEqual(restored.tabs[0].customTitle, "First")
|
|
XCTAssertEqual(restored.tabs[1].customTitle, "Second")
|
|
}
|
|
|
|
func testRestoreSessionSnapshotWithNoWorkspacesKeepsSingleFallbackWorkspace() {
|
|
let manager = TabManager()
|
|
let emptySnapshot = SessionTabManagerSnapshot(
|
|
selectedWorkspaceIndex: nil,
|
|
workspaces: []
|
|
)
|
|
|
|
manager.restoreSessionSnapshot(emptySnapshot)
|
|
|
|
XCTAssertEqual(manager.tabs.count, 1)
|
|
XCTAssertNotNil(manager.selectedTabId)
|
|
}
|
|
}
|