Tests/GenXdev.Data.Preferences/Set-GenXdevDefaultPreference.Tests.ps1
|
Pester\Describe 'Set-GenXdevDefaultPreference' { Pester\BeforeAll { GenXdev\Remove-GenXdevPreference -Name 'TestDefault' -RemoveDefault } Pester\AfterAll { GenXdev\Remove-GenXdevPreference -Name 'TestDefault' -RemoveDefault } Pester\It 'Should store default preference value' { GenXdev\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'DefaultValue' $result = GenXdev\Get-GenXdevPreference -Name 'TestDefault' $result | Pester\Should -Be 'DefaultValue' } Pester\It 'Should retrieve after being set' { GenXdev\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'ChangedValue' $result = GenXdev\Get-GenXdevPreference -Name 'TestDefault' $result | Pester\Should -Be 'ChangedValue' } Pester\It 'Should handle null value by removing preference' { GenXdev\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'DefaultValue' GenXdev\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value $null $result = GenXdev\Get-GenXdevPreference -Name 'TestDefault' $result | Pester\Should -BeNullOrEmpty } Pester\It 'Should write default preference to OneDrive with -AllMachines' { $oneDrive = [System.Environment]::GetEnvironmentVariable('OneDrive') if (-not $oneDrive) { Pester\Set-ItResult -Skipped -Because 'OneDrive not available' return } $oneDriveFile = Microsoft.PowerShell.Management\Join-Path $oneDrive 'GenXdev\Defaults_Preferences.json' GenXdev\Set-GenXdevDefaultPreference -Name 'AllMachinesDefault' -Value 'ODDefault' -AllMachines # Verify OneDrive file was written $content = Microsoft.PowerShell.Management\Get-Content $oneDriveFile -Raw -ErrorAction SilentlyContinue | Microsoft.PowerShell.Utility\ConvertFrom-Json -ErrorAction SilentlyContinue $content.'AllMachinesDefault' | Pester\Should -Be 'ODDefault' # Clean up GenXdev\Remove-GenXdevPreference -Name 'AllMachinesDefault' -RemoveDefault } } |