diff --git a/app/Services/Inventory/InventorySyncService.php b/app/Services/Inventory/InventorySyncService.php index 75c7a57..56c7da9 100644 --- a/app/Services/Inventory/InventorySyncService.php +++ b/app/Services/Inventory/InventorySyncService.php @@ -295,7 +295,7 @@ private function executeRun(InventorySyncRun $run, Tenant $tenant, array $normal if ($includeDeps && $this->shouldHydrateAssignments($policyType)) { $existingAssignments = $policyData['assignments'] ?? null; - if (! is_array($existingAssignments)) { + if (! is_array($existingAssignments) || count($existingAssignments) === 0) { $hydratedAssignments = $this->fetchAssignmentsForPolicyType($policyType, $tenant, $externalId, $warnings); if (is_array($hydratedAssignments)) { $policyData['assignments'] = $hydratedAssignments; diff --git a/tests/Feature/DependencyExtractionFeatureTest.php b/tests/Feature/DependencyExtractionFeatureTest.php index c2e35e0..d1d5236 100644 --- a/tests/Feature/DependencyExtractionFeatureTest.php +++ b/tests/Feature/DependencyExtractionFeatureTest.php @@ -286,7 +286,8 @@ public function listPolicies(string $policyType, array $options = []): GraphResp 'id' => 'sc-1', 'name' => 'Settings Catalog Policy', 'roleScopeTagIds' => ['scope-tag-1'], - // assignments omitted intentionally (must be hydrated via /assignments) + // assignments present but empty (must still be hydrated via /assignments) + 'assignments' => [], ]], 200); }