tests/Metadata/OptionSetValues.Tests.ps1
|
<# Integration Test: OptionSet Value Management Validates Add-XrmOptionSetValue, Set-XrmOptionSetValue, Remove-XrmOptionSetValue using a global option set. #> . "$PSScriptRoot\..\_TestConfig.ps1"; # ============================================================ # SETUP — Create a global option set # ============================================================ Write-Section "Setup - create global option set"; $osName = "new_pdoopttest$(Get-Random -Minimum 10000 -Maximum 99999)"; $osMetadata = [Microsoft.Xrm.Sdk.Metadata.OptionSetMetadata]::new(); $osMetadata.Name = $osName; $osMetadata.DisplayName = New-XrmLabel -Text "PdoTest OptionSet"; $osMetadata.IsGlobal = $true; $osMetadata.OptionSetType = [Microsoft.Xrm.Sdk.Metadata.OptionSetType]::Picklist; $createResponse = New-XrmGlobalOptionSet -OptionSetMetadata $osMetadata; Assert-Test "Global option set created" { $createResponse -ne $null; }; # ============================================================ # ADD OPTION VALUE # ============================================================ Write-Section "Add-XrmOptionSetValue"; $addResponse = Add-XrmOptionSetValue -OptionSetName $osName -Value 100000 -Label (New-XrmLabel -Text "Option A"); Assert-Test "Option value 100000 inserted" { $addResponse -ne $null; }; $addResponse2 = Add-XrmOptionSetValue -OptionSetName $osName -Value 100001 -Label (New-XrmLabel -Text "Option B"); Assert-Test "Option value 100001 inserted" { $addResponse2 -ne $null; }; # Verify by retrieving the option set $osCheck = Get-XrmGlobalOptionSet -Name $osName; Assert-Test "Option set has 2 options" { $osCheck.Options.Count -eq 2; }; # ============================================================ # UPDATE OPTION VALUE # ============================================================ Write-Section "Set-XrmOptionSetValue"; $setResponse = Set-XrmOptionSetValue -OptionSetName $osName -Value 100000 -Label (New-XrmLabel -Text "Option A Updated"); Assert-Test "Option value 100000 updated" { $setResponse -ne $null; }; $osCheck2 = Get-XrmGlobalOptionSet -Name $osName; $option = $osCheck2.Options | Where-Object { $_.Value -eq 100000 }; Assert-Test "Option A label updated" { $option.Label.LocalizedLabels[0].Label -eq "Option A Updated"; }; # ============================================================ # REMOVE OPTION VALUE # ============================================================ Write-Section "Remove-XrmOptionSetValue"; $removeResponse = Remove-XrmOptionSetValue -OptionSetName $osName -Value 100001; Assert-Test "Option value 100001 deleted" { $removeResponse -ne $null; }; $osCheck3 = Get-XrmGlobalOptionSet -Name $osName; Assert-Test "Option set has 1 option remaining" { $osCheck3.Options.Count -eq 1; }; # ============================================================ # CLEANUP # ============================================================ Write-Section "Cleanup"; Remove-XrmGlobalOptionSet -Name $osName; Write-TestSummary; |