tests/Expand-DFXdgPath.Tests.ps1

BeforeAll {
    . "$PSScriptRoot/../Private/Expand-DFXdgPath.ps1"
}

Describe 'Expand-DFXdgPath' {
    BeforeEach {
        $script:SavedConfigHome = $Env:XDG_CONFIG_HOME
        $script:SavedDataHome   = $Env:XDG_DATA_HOME
        $script:SavedStateHome  = $Env:XDG_STATE_HOME
        $script:SavedCacheHome  = $Env:XDG_CACHE_HOME
        $Env:XDG_CONFIG_HOME = 'C:\config'
        $Env:XDG_DATA_HOME   = 'C:\data'
        $Env:XDG_STATE_HOME  = 'C:\state'
        $Env:XDG_CACHE_HOME  = 'C:\cache'
    }
    AfterEach {
        $Env:XDG_CONFIG_HOME = $script:SavedConfigHome
        $Env:XDG_DATA_HOME   = $script:SavedDataHome
        $Env:XDG_STATE_HOME  = $script:SavedStateHome
        $Env:XDG_CACHE_HOME  = $script:SavedCacheHome
    }

    It 'expands ${XDG_CONFIG_HOME}' {
        Expand-DFXdgPath '${XDG_CONFIG_HOME}/bat/bat.conf' |
            Should -Be 'C:\config/bat/bat.conf'
    }

    It 'expands ${XDG_DATA_HOME}' {
        Expand-DFXdgPath '${XDG_DATA_HOME}/zoxide' |
            Should -Be 'C:\data/zoxide'
    }

    It 'expands ${XDG_STATE_HOME}' {
        Expand-DFXdgPath '${XDG_STATE_HOME}/less/history' |
            Should -Be 'C:\state/less/history'
    }

    It 'expands ${XDG_CACHE_HOME}' {
        Expand-DFXdgPath '${XDG_CACHE_HOME}/uv' | Should -Be 'C:\cache/uv'
    }

    It 'passes through strings with no placeholders unchanged' {
        Expand-DFXdgPath 'C:\absolute\path' | Should -Be 'C:\absolute\path'
    }

    It 'expands multiple placeholders in one string' {
        Expand-DFXdgPath '${XDG_CONFIG_HOME}/tool and ${XDG_CACHE_HOME}/tool' |
            Should -Be 'C:\config/tool and C:\cache/tool'
    }
}