createMock(SettingsDefaultsGateway::class); $defaults->method('getDefaultTenantId')->willReturn(5); $gateway = new UserSettingsGateway($defaults, $this->createMock(SettingsAppGateway::class), $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame(5, $gateway->getDefaultTenantId()); } public function testGetDefaultTenantIdReturnsNullWhenUnset(): void { $defaults = $this->createMock(SettingsDefaultsGateway::class); $defaults->method('getDefaultTenantId')->willReturn(null); $gateway = new UserSettingsGateway($defaults, $this->createMock(SettingsAppGateway::class), $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertNull($gateway->getDefaultTenantId()); } public function testGetDefaultRoleIdDelegates(): void { $defaults = $this->createMock(SettingsDefaultsGateway::class); $defaults->method('getDefaultRoleId')->willReturn(12); $gateway = new UserSettingsGateway($defaults, $this->createMock(SettingsAppGateway::class), $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame(12, $gateway->getDefaultRoleId()); } public function testGetDefaultRoleIdReturnsNullWhenUnset(): void { $defaults = $this->createMock(SettingsDefaultsGateway::class); $defaults->method('getDefaultRoleId')->willReturn(null); $gateway = new UserSettingsGateway($defaults, $this->createMock(SettingsAppGateway::class), $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertNull($gateway->getDefaultRoleId()); } public function testGetDefaultDepartmentIdDelegates(): void { $defaults = $this->createMock(SettingsDefaultsGateway::class); $defaults->method('getDefaultDepartmentId')->willReturn(8); $gateway = new UserSettingsGateway($defaults, $this->createMock(SettingsAppGateway::class), $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame(8, $gateway->getDefaultDepartmentId()); } public function testAppThemesDelegatesToListThemes(): void { $themes = ['light' => 'Light', 'dark' => 'Dark']; $app = $this->createMock(SettingsAppGateway::class); $app->method('listThemes')->willReturn($themes); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $app, $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame($themes, $gateway->appThemes()); } public function testDefaultThemeDelegates(): void { $app = $this->createMock(SettingsAppGateway::class); $app->method('resolveDefaultTheme')->willReturn('light'); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $app, $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame('light', $gateway->defaultTheme()); } public function testNormalizeThemeDelegates(): void { $app = $this->createMock(SettingsAppGateway::class); $app->method('normalizeTheme')->willReturn('dark'); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $app, $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame('dark', $gateway->normalizeTheme('DARK')); } public function testNormalizeThemeWithNullDelegates(): void { $app = $this->createMock(SettingsAppGateway::class); $app->method('normalizeTheme')->willReturn('light'); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $app, $this->createMock(SettingsUserLifecycleGateway::class)); $this->assertSame('light', $gateway->normalizeTheme(null)); } public function testGetUserInactivityDeactivateDaysDelegates(): void { $lifecycle = $this->createMock(SettingsUserLifecycleGateway::class); $lifecycle->method('getUserInactivityDeactivateDays')->willReturn(180); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $this->createMock(SettingsAppGateway::class), $lifecycle); $this->assertSame(180, $gateway->getUserInactivityDeactivateDays()); } public function testGetUserInactivityDeleteDaysDelegates(): void { $lifecycle = $this->createMock(SettingsUserLifecycleGateway::class); $lifecycle->method('getUserInactivityDeleteDays')->willReturn(365); $gateway = new UserSettingsGateway($this->createMock(SettingsDefaultsGateway::class), $this->createMock(SettingsAppGateway::class), $lifecycle); $this->assertSame(365, $gateway->getUserInactivityDeleteDays()); } }