tests/Private/Join-PSDVQueryString.Tests.ps1

. (Join-Path $PSScriptRoot 'PrivateTestCommon.ps1')

Describe 'Join-PSDVQueryString' {
    It 'URL-encodes keys and values in insertion order' {
        InModuleScope Dataverse {
            $query = [ordered]@{
                '$select' = 'name,accountnumber'
                '$filter' = "name eq 'A&B'"
            }

            Join-PSDVQueryString -QueryParameters $query | Should -BeExactly '%24select=name%2Caccountnumber&%24filter=name%20eq%20%27A%26B%27'
        }
    }

    It 'omits null and whitespace-only values' {
        InModuleScope Dataverse {
            $query = [ordered]@{
                keep      = 'value'
                skipNull  = $null
                skipBlank = ' '
            }

            Join-PSDVQueryString -QueryParameters $query | Should -BeExactly 'keep=value'
        }
    }
}