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

Pester\Describe 'Set-GenXdevDefaultPreference' {

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

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

    Pester\It 'Should store default preference value' {
        GenXdev.Data\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'DefaultValue'
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'TestDefault'
        $result | Pester\Should -Be 'DefaultValue'
    }

    Pester\It 'Should sync across instances' {
        GenXdev.Data\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'SyncedValue'
        # Note: In a real test environment, you might need to verify this across different PS sessions
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'TestDefault'
        $result | Pester\Should -Be 'SyncedValue'
    }

    Pester\It 'Should handle null value by removing preference' {
        GenXdev.Data\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value 'DefaultValue'
        GenXdev.Data\Set-GenXdevDefaultPreference -Name 'TestDefault' -Value $null
        $result = GenXdev.Data\Get-GenXdevPreference -Name 'TestDefault'
        $result | Pester\Should -BeNullOrEmpty
    }
}