tests/Client/RecordOperations.Tests.ps1
|
<# Integration Test: Record Operations Tests Upsert, Bulk requests, Attributes get/set, ConvertTo-XrmObject/Type. Cmdlets: Upsert-XrmRecord, Invoke-XrmBulkRequests, Get-XrmAttributeValue, Set-XrmAttributeValue, ConvertTo-XrmObject, ConvertTo-XrmType #> . "$PSScriptRoot\..\_TestConfig.ps1"; # ============================================================ # ConvertTo-XrmType (offline - no server needed) # ============================================================ Write-Section "ConvertTo-XrmType"; $intVal = ConvertTo-XrmType -Type "int" -Value "42"; Assert-Test "ConvertTo-XrmType int = 42" { $intVal -eq 42 }; $decVal = ConvertTo-XrmType -Type "decimal" -Value "314"; Assert-Test "ConvertTo-XrmType decimal = 314" { $decVal -eq 314 }; $boolVal = ConvertTo-XrmType -Type "bool" -Value "true"; Assert-Test "ConvertTo-XrmType bool = true" { $boolVal -eq $true }; $guidVal = ConvertTo-XrmType -Type "guid" -Value "00000000-0000-0000-0000-000000000001"; Assert-Test "ConvertTo-XrmType guid" { $guidVal -is [Guid] }; $moneyVal = ConvertTo-XrmType -Type "money" -Value "500"; Assert-Test "ConvertTo-XrmType money = 500" { $moneyVal.Value -eq 500 }; $osvVal = ConvertTo-XrmType -Type "optionset" -Value "3"; Assert-Test "ConvertTo-XrmType optionset = 3" { $osvVal.Value -eq 3 }; $refVal = ConvertTo-XrmType -Type "entityreference" -Value "00000000-0000-0000-0000-000000000001" -EntityLogicalName "account"; Assert-Test "ConvertTo-XrmType entityreference" { $refVal.LogicalName -eq "account" }; $strVal = ConvertTo-XrmType -Type "string" -Value "hello"; Assert-Test "ConvertTo-XrmType string = hello" { $strVal -eq "hello" }; # ============================================================ # Get-XrmAttributeValue / Set-XrmAttributeValue (offline) # ============================================================ Write-Section "Get-XrmAttributeValue / Set-XrmAttributeValue"; $entity = New-XrmEntity -LogicalName "account" -Attributes @{ "name" = "Original" }; $val = Get-XrmAttributeValue -Record $entity -Name "name"; Assert-Test "Get-XrmAttributeValue - name = Original" { $val -eq "Original" }; $entity = Set-XrmAttributeValue -Record $entity -Name "name" -Value "Updated"; $val = Get-XrmAttributeValue -Record $entity -Name "name"; Assert-Test "Set-XrmAttributeValue then Get - name = Updated" { $val -eq "Updated" }; $missing = Get-XrmAttributeValue -Record $entity -Name "nonexistent"; Assert-Test "Get-XrmAttributeValue - missing returns null" { $null -eq $missing }; # ============================================================ # Upsert-XrmRecord # ============================================================ Write-Section "Upsert-XrmRecord"; # Create via upsert (new record) $upsertName = Get-TestName -Prefix "Upsert"; $record = New-XrmEntity -LogicalName "account" -Attributes @{ "name" = $upsertName; }; $record.Id = $Global:XrmClient | Add-XrmRecord -Record $record; Assert-Test "Account created for upsert test (Id = $($record.Id))" { $record.Id -ne [Guid]::Empty; }; # Update via upsert (existing record) $upsertUpdatedName = "$($upsertName)_Upserted"; $upsertRecord = New-XrmEntity -LogicalName "account" -Id $record.Id -Attributes @{ "name" = $upsertUpdatedName; }; $Global:XrmClient | Upsert-XrmRecord -Record $upsertRecord; $check = $Global:XrmClient | Get-XrmRecord -LogicalName "account" -Id $record.Id -Columns "name"; Assert-Test "Upsert updated name to '$($check.name)'" { $check.name -eq $upsertUpdatedName; }; # ============================================================ # Invoke-XrmBulkRequests # ============================================================ Write-Section "Invoke-XrmBulkRequests"; $bulkIds = @(); $requests = @(); for ($i = 1; $i -le 5; $i++) { $bulkEntity = New-XrmEntity -LogicalName "account" -Attributes @{ "name" = Get-TestName -Prefix "Bulk"; }; $req = New-XrmRequest -Name "Create"; $req | Add-XrmRequestParameter -Name "Target" -Value $bulkEntity | Out-Null; $requests += $req; } $Global:XrmClient | Invoke-XrmBulkRequests -Requests $requests -ContinueOnError $false -ReturnResponses $true; # Retrieve to verify $query = New-XrmQueryExpression -LogicalName "account" -Columns "name"; $query = $query | Add-XrmQueryCondition -Field "name" -Condition BeginsWith -Values @("Bulk_IntTest_"); $bulkResults = $Global:XrmClient | Get-XrmMultipleRecords -Query $query; Assert-Test "Bulk create - at least 5 accounts created (actual: $($bulkResults.Count))" { $bulkResults.Count -ge 5; }; # Store Ids for cleanup $bulkIds = $bulkResults | ForEach-Object { $_.Id }; # ============================================================ # CLEANUP # ============================================================ Write-Section "Cleanup"; $Global:XrmClient | Remove-XrmRecord -LogicalName "account" -Id $record.Id; foreach ($id in $bulkIds) { $Global:XrmClient | Remove-XrmRecord -LogicalName "account" -Id $id; } Assert-Test "Cleanup complete" { $true }; Write-TestSummary; |