tests/Client/Sync-XrmRecords.Tests.ps1

<#
    Integration Test: Sync-XrmRecords
    Tests record synchronization orchestration between source and target clients.
#>

. "$PSScriptRoot\..\_TestConfig.ps1";

Write-Section "Setup test account";

$accountName = Get-TestName -Prefix "Sync";
$account = New-XrmEntity -LogicalName "account" -Attributes @{
    "name" = $accountName;
};
$account.Id = $Global:XrmClient | Add-XrmRecord -Record $account;

Assert-Test "Test account created" {
    $account.Id -ne [Guid]::Empty;
};

Write-Section "Sync-XrmRecords execution";

$summary = @(
    Sync-XrmRecords `
        -SourceXrmClient $Global:XrmClient `
        -TargetXrmClient $Global:XrmClient `
        -LogicalNames @("account") `
        -Columns @("name") `
        -TopCount 1 `
        -OrderByField "createdon" `
        -OrderType Descending `
        -ContinueOnError $false
);

Assert-Test "Sync-XrmRecords returns one summary row" {
    $summary.Count -eq 1;
};

$accountSummary = $summary | Select-Object -First 1;

Assert-Test "Summary LogicalName is account" {
    $accountSummary.LogicalName -eq "account";
};

Assert-Test "Summary ReadCount is 1 (TopCount applied)" {
    [int]$accountSummary.ReadCount -eq 1;
};

Assert-Test "Summary FailedCount is 0" {
    [int]$accountSummary.FailedCount -eq 0;
};

Assert-Test "Summary UpsertedCount is 1" {
    [int]$accountSummary.UpsertedCount -eq 1;
};

Write-Section "Cleanup";

$Global:XrmClient | Remove-XrmRecord -LogicalName "account" -Id $account.Id;
Assert-Test "Test account deleted" { $true };

Write-TestSummary;