functions/generation/Test-SldgGeneratedData.ps1
|
function Test-SldgGeneratedData { <# .SYNOPSIS Validates the quality and integrity of generated data. .DESCRIPTION Runs a suite of validation checks against the generated data in the target database: - Foreign key referential integrity - Primary key and unique constraint uniqueness - NOT NULL constraint compliance - Row count verification .PARAMETER Schema The schema model to validate against. .PARAMETER ConnectionInfo The database connection. If not specified, uses the active connection. .EXAMPLE PS C:\> $results = Test-SldgGeneratedData -Schema $schema Validates all constraints in the connected database. .EXAMPLE PS C:\> $results = Test-SldgGeneratedData -Schema $schema | Where-Object { -not $_.Passed } Shows only failed validations. #> [OutputType([SqlLabDataGenerator.ValidationResult])] [CmdletBinding()] param ( [Parameter(Mandatory, ValueFromPipeline)] [SqlLabDataGenerator.SchemaModel]$Schema, [SqlLabDataGenerator.Connection]$ConnectionInfo ) process { if (-not $ConnectionInfo) { $ConnectionInfo = $script:SldgState.ActiveConnection } if (-not $ConnectionInfo) { Stop-PSFFunction -String 'Connect.NoActiveConnection' -EnableException $true } Assert-SldgConnectionOpen -ConnectionInfo $ConnectionInfo Write-PSFMessage -Level Host -Message ($script:strings.'Validation.Starting' -f $Schema.TableCount) $allResults = [System.Collections.Generic.List[object]]::new() # FK integrity $fkResults = Test-SldgForeignKeyIntegrity -ConnectionInfo $ConnectionInfo -SchemaModel $Schema foreach ($r in $fkResults) { $allResults.Add($r) } # Unique constraints $uniqueResults = Test-SldgUniqueConstraints -ConnectionInfo $ConnectionInfo -SchemaModel $Schema foreach ($r in $uniqueResults) { $allResults.Add($r) } # Data type constraints $dtResults = Test-SldgDataTypeConstraints -ConnectionInfo $ConnectionInfo -SchemaModel $Schema foreach ($r in $dtResults) { $allResults.Add($r) } $passed = ($allResults | Where-Object { $_.Passed }).Count $warnings = ($allResults | Where-Object { $_.Severity -eq 'Warning' }).Count $errors = ($allResults | Where-Object { $_.Severity -eq 'Error' }).Count Write-PSFMessage -Level Host -Message ($script:strings.'Validation.Complete' -f $passed, $warnings, $errors) $allResults } } |