Add minimal sidebar detail toggles (#1312)

* Add minimal sidebar detail toggles

* Address sidebar review comments
This commit is contained in:
Lawrence Chen 2026-03-12 21:22:51 -07:00 committed by GitHub
parent ac98625ebe
commit 9b0bf2f66d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 317 additions and 12 deletions

View file

@ -4664,6 +4664,92 @@ final class SidebarBranchLayoutSettingsTests: XCTestCase {
}
}
final class SidebarWorkspaceDetailSettingsTests: XCTestCase {
func testDefaultPreferencesWhenUnset() {
let suiteName = "SidebarWorkspaceDetailSettingsTests.Default.\(UUID().uuidString)"
guard let defaults = UserDefaults(suiteName: suiteName) else {
XCTFail("Failed to create isolated UserDefaults suite")
return
}
defer { defaults.removePersistentDomain(forName: suiteName) }
XCTAssertFalse(SidebarWorkspaceDetailSettings.hidesAllDetails(defaults: defaults))
XCTAssertTrue(SidebarWorkspaceDetailSettings.showsNotificationMessage(defaults: defaults))
XCTAssertTrue(
SidebarWorkspaceDetailSettings.resolvedNotificationMessageVisibility(
showNotificationMessage: SidebarWorkspaceDetailSettings.showsNotificationMessage(defaults: defaults),
hideAllDetails: SidebarWorkspaceDetailSettings.hidesAllDetails(defaults: defaults)
)
)
}
func testStoredPreferencesOverrideDefaults() {
let suiteName = "SidebarWorkspaceDetailSettingsTests.Stored.\(UUID().uuidString)"
guard let defaults = UserDefaults(suiteName: suiteName) else {
XCTFail("Failed to create isolated UserDefaults suite")
return
}
defer { defaults.removePersistentDomain(forName: suiteName) }
defaults.set(true, forKey: SidebarWorkspaceDetailSettings.hideAllDetailsKey)
defaults.set(false, forKey: SidebarWorkspaceDetailSettings.showNotificationMessageKey)
XCTAssertTrue(SidebarWorkspaceDetailSettings.hidesAllDetails(defaults: defaults))
XCTAssertFalse(SidebarWorkspaceDetailSettings.showsNotificationMessage(defaults: defaults))
XCTAssertFalse(
SidebarWorkspaceDetailSettings.resolvedNotificationMessageVisibility(
showNotificationMessage: SidebarWorkspaceDetailSettings.showsNotificationMessage(defaults: defaults),
hideAllDetails: false
)
)
XCTAssertFalse(
SidebarWorkspaceDetailSettings.resolvedNotificationMessageVisibility(
showNotificationMessage: true,
hideAllDetails: SidebarWorkspaceDetailSettings.hidesAllDetails(defaults: defaults)
)
)
}
}
final class SidebarWorkspaceAuxiliaryDetailVisibilityTests: XCTestCase {
func testResolvedVisibilityPreservesPerRowTogglesWhenDetailsAreShown() {
XCTAssertEqual(
SidebarWorkspaceAuxiliaryDetailVisibility.resolved(
showMetadata: true,
showLog: false,
showProgress: true,
showBranchDirectory: false,
showPullRequests: true,
showPorts: false,
hideAllDetails: false
),
SidebarWorkspaceAuxiliaryDetailVisibility(
showsMetadata: true,
showsLog: false,
showsProgress: true,
showsBranchDirectory: false,
showsPullRequests: true,
showsPorts: false
)
)
}
func testResolvedVisibilityHidesAllAuxiliaryRowsWhenDetailsAreHidden() {
XCTAssertEqual(
SidebarWorkspaceAuxiliaryDetailVisibility.resolved(
showMetadata: true,
showLog: true,
showProgress: true,
showBranchDirectory: true,
showPullRequests: true,
showPorts: true,
hideAllDetails: true
),
.hidden
)
}
}
final class SidebarActiveTabIndicatorSettingsTests: XCTestCase {
func testDefaultStyleWhenUnset() {
let suiteName = "SidebarActiveTabIndicatorSettingsTests.Default.\(UUID().uuidString)"