diff --git a/TablePro/Views/Settings/SettingsWindowController.swift b/TablePro/Views/Settings/SettingsWindowController.swift index 16d069c0c3..4bd656edc0 100644 --- a/TablePro/Views/Settings/SettingsWindowController.swift +++ b/TablePro/Views/Settings/SettingsWindowController.swift @@ -27,7 +27,12 @@ internal final class SettingsWindowController: NSWindowController { contentViewController as? SettingsPaneTabViewController } - internal convenience init(registryClient: RegistryClient = .shared) { + // A defaulted parameter would let `SettingsWindowController()` resolve to the inherited `init()`, which builds no window. + internal convenience init() { + self.init(registryClient: .shared) + } + + internal convenience init(registryClient: RegistryClient) { let panes = SettingsPaneTabViewController(registryClient: registryClient) /// `NSWindow(contentViewController:)` binds the window title to the content view diff --git a/TableProTests/Views/Settings/SettingsWindowTitleTests.swift b/TableProTests/Views/Settings/SettingsWindowTitleTests.swift index 249675b605..ef9bd473ff 100644 --- a/TableProTests/Views/Settings/SettingsWindowTitleTests.swift +++ b/TableProTests/Views/Settings/SettingsWindowTitleTests.swift @@ -124,4 +124,16 @@ final class SettingsWindowTitleTests: XCTestCase { XCTAssertEqual(window.contentMinSize, SettingsPaneTabViewController.paneSize) } + + func testTheInitializerPresentUsesBuildsTheSettingsWindow() { + AppStorageEnvironment.shared.defaults.set( + SettingsPane.general.rawValue, + forKey: PreferenceKeys.selectedSettingsPane.name + ) + let controller = SettingsWindowController() + guard let window = controller.window else { return XCTFail("Cmd-comma and settings links present this controller") } + windows.append(window) + + XCTAssertEqual(window.identifier?.rawValue, WindowIdentifier.settings) + } }