Tests/GenXdev.Data.Preferences/Set-GenXdevPreference.Tests.ps1

Pester\Describe 'Set-GenXdevPreference' {

    Pester\BeforeAll {
        GenXdev.Data\Remove-GenXdevPreference -Name 'Theme' -RemoveDefault
    }

    Pester\AfterAll {
        GenXdev.Data\Remove-GenXdevPreference -Name 'Theme' -RemoveDefault
    }

    Pester\It 'Should store preference value locally' {
        GenXdev.Data\Set-GenXdevPreference -Name 'Theme' -Value 'Dark'
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'Theme'
        $result | Pester\Should -Be 'Dark'
    }

    Pester\It 'Should update existing preference' {
        GenXdev.Data\Set-GenXdevPreference -Name 'Theme' -Value 'Light'
        GenXdev.Data\Set-GenXdevPreference -Name 'Theme' -Value 'Dark'
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'Theme'
        $result | Pester\Should -Be 'Dark'
    }

    Pester\It 'Should remove preference when value is null' {
        GenXdev.Data\Set-GenXdevPreference -Name 'Theme' -Value 'Dark'
        GenXdev.Data\Set-GenXdevPreference -Name 'Theme' -Value $null
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'Theme' -DefaultValue 'Default'
        $result | Pester\Should -Be 'Default'
    }
}