Private/CuiTests/Test-CuiTax004.ps1
|
# Copyright (c) 2026 Jeffrey Snover. All rights reserved. # Licensed under the MIT License. See LICENSE file in the project root. function Test-CuiTax004 { [CmdletBinding()] param( [Parameter(Mandatory)][string]$BaseUrl, [Parameter()][int]$TimeoutSec = 15 ) Set-StrictMode -Version Latest $Sw = [System.Diagnostics.Stopwatch]::StartNew() $Checks = [System.Collections.Generic.List[PSObject]]::new() # Check 1: GET /api/edges returns data $r = Invoke-RemoteCheck -BaseUrl $BaseUrl -Path '/api/edges' -TimeoutSec $TimeoutSec $EdgesLoaded = $r.Success -and ($null -ne $r.Body) $Edges = @() if ($EdgesLoaded -and $r.Body -is [System.Array]) { $Edges = $r.Body } elseif ($EdgesLoaded -and $r.Body.PSObject.Properties['edges']) { $Edges = @($r.Body.edges) } elseif ($EdgesLoaded) { $Edges = @($r.Body) } $HasEdges = $EdgesLoaded -and @($Edges).Count -gt 0 $Checks.Add((New-CuiCheckResult -Check 'Edges endpoint loads' -Pass $HasEdges ` -Detail $(if ($HasEdges) { "$(@($Edges).Count) edges" } else { "Failed: $($r.Error)" }) -Ms $r.ResponseMs)) # Check 2: Edges have source and target fields $ShapeOk = $false if ($HasEdges -and @($Edges).Count -gt 0) { $Edge = $Edges[0] $ShapeOk = $Edge.PSObject.Properties['source'] -and $Edge.PSObject.Properties['target'] } $Checks.Add((New-CuiCheckResult -Check 'Edge shape (source,target)' -Pass $ShapeOk ` -Detail $(if ($ShapeOk) { "source=$($Edge.source), target=$($Edge.target)" } else { 'Missing source/target fields' }))) # Check 3: Edges with rationale (include=rationale query param) $rr = Invoke-RemoteCheck -BaseUrl $BaseUrl -Path '/api/edges?include=rationale' -TimeoutSec $TimeoutSec $RationaleOk = $rr.Success $Checks.Add((New-CuiCheckResult -Check 'Edges with rationale' -Pass $RationaleOk ` -Detail $(if ($RationaleOk) { 'Rationale query accepted' } else { "Failed: $($rr.Error)" }) -Ms $rr.ResponseMs)) # Check 4: Edge status endpoint accessible $Checks.Add((New-CuiCheckResult -Check 'Edge count > 0' -Pass $HasEdges ` -Detail $(if ($HasEdges) { "$(@($Edges).Count) edges in graph" } else { 'No edges found' }))) $Sw.Stop() New-CuiTestResult -CuiId 'CUI-TAX-004' -Domain 'Taxonomy' -Priority 'P1' ` -DurationMs $Sw.ElapsedMilliseconds -Details $Checks.ToArray() } |