diff --git a/tests/Feature/BackupWithAssignmentsTest.php b/tests/Feature/BackupWithAssignmentsTest.php index 798f0df..e81fd08 100644 --- a/tests/Feature/BackupWithAssignmentsTest.php +++ b/tests/Feature/BackupWithAssignmentsTest.php @@ -273,6 +273,22 @@ }); test('detects orphaned groups', function () { + // Mock PolicySnapshotService + $this->mock(PolicySnapshotService::class, function (MockInterface $mock) { + $mock->shouldReceive('fetch') + ->once() + ->andReturn([ + 'payload' => [ + 'id' => 'policy-456', + 'name' => 'Test Policy', + 'roleScopeTagIds' => ['0', '123'], + 'settings' => [], + ], + 'metadata' => [], + 'warnings' => [], + ]); + }); + // Mock AssignmentFetcher $this->mock(AssignmentFetcher::class, function (MockInterface $mock) { $mock->shouldReceive('fetch') diff --git a/tests/Feature/Filament/BackupCreationTest.php b/tests/Feature/Filament/BackupCreationTest.php index d2ef271..69b2dc0 100644 --- a/tests/Feature/Filament/BackupCreationTest.php +++ b/tests/Feature/Filament/BackupCreationTest.php @@ -7,6 +7,7 @@ use App\Services\Graph\GraphClientInterface; use App\Services\Graph\GraphResponse; use App\Services\Graph\ScopeTagResolver; +use App\Services\Intune\PolicySnapshotService; use Illuminate\Foundation\Testing\RefreshDatabase; use Livewire\Livewire; use Mockery\MockInterface; @@ -14,10 +15,27 @@ uses(RefreshDatabase::class); test('backup creation captures snapshots and audit log', function () { + // Mock PolicySnapshotService + $this->mock(PolicySnapshotService::class, function (MockInterface $mock) { + $mock->shouldReceive('fetch') + ->twice() // Called once for each policy + ->andReturnUsing(function ($tenant, $policy) { + return [ + 'payload' => [ + 'id' => $policy->external_id, + 'name' => $policy->display_name, + 'roleScopeTagIds' => ['0'], + ], + 'metadata' => [], + 'warnings' => [], + ]; + }); + }); + // Mock ScopeTagResolver $this->mock(ScopeTagResolver::class, function (MockInterface $mock) { $mock->shouldReceive('resolve') - ->andReturn([]); + ->andReturn([['id' => '0', 'displayName' => 'Default']]); }); app()->bind(GraphClientInterface::class, fn () => new class implements GraphClientInterface @@ -67,6 +85,7 @@ public function request(string $method, string $path, array $options = []): Grap 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy A', 'platform' => 'windows', + 'last_synced_at' => now(), ]); $policyB = Policy::create([ @@ -75,6 +94,7 @@ public function request(string $method, string $path, array $options = []): Grap 'policy_type' => 'deviceCompliancePolicy', 'display_name' => 'Policy B', 'platform' => 'windows', + 'last_synced_at' => now(), ]); $user = User::factory()->create(); @@ -95,7 +115,7 @@ public function request(string $method, string $path, array $options = []): Grap expect($backupSet->item_count)->toBe(2); expect($backupSet->items)->toHaveCount(2); - expect($backupSet->items->first()->payload['policyId'])->toBe('policy-1'); + expect($backupSet->items->first()->payload['id'])->toBe('policy-1'); $this->assertDatabaseHas('audit_logs', [ 'action' => 'backup.created', diff --git a/tests/Feature/Filament/PolicyListingTest.php b/tests/Feature/Filament/PolicyListingTest.php index f9c8be1..6099fcb 100644 --- a/tests/Feature/Filament/PolicyListingTest.php +++ b/tests/Feature/Filament/PolicyListingTest.php @@ -21,6 +21,7 @@ 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy A', 'platform' => 'windows', + 'last_synced_at' => now(), ]); $otherTenant = Tenant::create([ @@ -35,6 +36,7 @@ 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy B', 'platform' => 'windows', + 'last_synced_at' => now(), ]); $user = User::factory()->create();