tests/AppModule/SiteMap.Tests.ps1
|
<#! Integration Test: SiteMap cmdlets Validates create, retrieve, update and upsert for sitemap, including the unique name built from a readable name. #> . "$PSScriptRoot\..\_TestConfig.ps1"; $suffix = Get-Random -Minimum 10000 -Maximum 99999; $xml = '<SiteMap><Area Id="SFA" ResourceId="Area_Sales" ShowGroups="true"><Group Id="G1"><SubArea Id="S1" Entity="account" /></Group></Area></SiteMap>'; $siteMapIds = [System.Collections.Generic.List[Guid]]::new(); Write-Section "Add-XrmSiteMap with a readable name"; $name = "PDO Site Map é $suffix"; $siteMapRef = $Global:XrmClient | Add-XrmSiteMap -Name $name -SiteMapXml $xml; Assert-Test "SiteMap created from a name with spaces and accents" { $null -ne $siteMapRef -and $siteMapRef.Id -ne [Guid]::Empty }; if ($siteMapRef) { $siteMapIds.Add($siteMapRef.Id); } $siteMap = $Global:XrmClient | Get-XrmSiteMaps -Name $name -Columns "sitemapname", "sitemapnameunique", "sitemapxml" -Unpublished | Select-Object -First 1; Assert-Test "Unique name built without accents and separators ('PDOSiteMape$suffix')" { $null -ne $siteMap -and $siteMap.sitemapnameunique -eq "PDOSiteMape$suffix"; }; Write-Section "Set-XrmSiteMap"; $newXml = $xml.Replace('Id="SFA"', 'Id="SFA2"'); $Global:XrmClient | Set-XrmSiteMap -SiteMapReference $siteMapRef -SiteMapXml $newXml | Out-Null; $updated = $Global:XrmClient | Get-XrmSiteMaps -Name $name -Columns "sitemapxml" -Unpublished | Select-Object -First 1; Assert-Test "SiteMap updated" { $updated.sitemapxml -like '*SFA2*' }; Write-Section "Upsert-XrmSiteMap"; $upsertId = [Guid]::NewGuid(); $upsertName = "PDO Upsert-SiteMap ($suffix)"; $upsertRef = $Global:XrmClient | Upsert-XrmSiteMap -Id $upsertId -Name $upsertName -SiteMapXml $xml; Assert-Test "Upsert creates the sitemap with a derived unique name" { $null -ne $upsertRef -and $upsertRef.Id -eq $upsertId }; $siteMapIds.Add($upsertId); $upsertRef = $Global:XrmClient | Upsert-XrmSiteMap -Id $upsertId -Name $upsertName -SiteMapXml $newXml; $upserted = $Global:XrmClient | Get-XrmSiteMaps -Name $upsertName -Columns "sitemapnameunique", "sitemapxml" -Unpublished | Select-Object -First 1; Assert-Test "Upsert updates the same sitemap" { $upserted.sitemapxml -like '*SFA2*' -and $upserted.sitemapnameunique -eq "PDOUpsertSiteMap$suffix" }; $explicitId = [Guid]::NewGuid(); $Global:XrmClient | Upsert-XrmSiteMap -Id $explicitId -Name "PDO explicit $suffix" -UniqueName "pdoexplicit$suffix" -SiteMapXml $xml | Out-Null; $siteMapIds.Add($explicitId); $explicit = $Global:XrmClient | Get-XrmSiteMaps -Name "PDO explicit $suffix" -Columns "sitemapnameunique" -Unpublished | Select-Object -First 1; Assert-Test "-UniqueName is used as is" { $explicit.sitemapnameunique -eq "pdoexplicit$suffix" }; $invalidError = $null; try { $Global:XrmClient | Add-XrmSiteMap -Name "x" -UniqueName "not valid!" -SiteMapXml $xml | Out-Null; } catch { $invalidError = $_.Exception.Message; } Assert-Test "-UniqueName with other characters than letters and digits is rejected" { $null -ne $invalidError }; Write-Section "Cleanup"; foreach ($id in $siteMapIds) { try { $Global:XrmClient | Remove-XrmRecord -LogicalName "sitemap" -Id $id; } catch { } } Assert-Test "Cleanup complete" { $true }; Write-TestSummary; |