'local-tenant', 'name' => 'Tenant One', 'metadata' => [], 'is_current' => true, ]); $tenant->makeCurrent(); $policy = Policy::create([ 'tenant_id' => $tenant->id, 'external_id' => 'policy-1', 'policy_type' => 'deviceConfiguration', 'display_name' => 'Policy A', 'platform' => 'windows', ]); $version = PolicyVersion::create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'policy_type' => $policy->policy_type, 'platform' => $policy->platform, 'created_by' => 'tester@example.com', 'captured_at' => CarbonImmutable::now(), 'snapshot' => [ 'displayName' => 'Policy A', 'settings' => [ ['displayName' => 'Enable feature', 'value' => ['value' => 'on']], ], ], ]); $user = User::factory()->create(); $response = $this->actingAs($user) ->get(PolicyVersionResource::getUrl('view', ['record' => $version])); $response->assertOk(); $response->assertSee('Raw JSON'); $response->assertSee('displayName'); $response->assertSee('Normalized settings'); $response->assertSee('Enable feature'); $response->assertSee('Normalized diff'); }); test('policy version detail shows enrollment notification template settings', function () { $tenant = Tenant::create([ 'tenant_id' => 'tenant-enrollment-notify', 'name' => 'Tenant Enrollment Notify', 'metadata' => [], 'is_current' => true, ]); $tenant->makeCurrent(); $policy = Policy::create([ 'tenant_id' => $tenant->id, 'external_id' => 'enroll-notify-1', 'policy_type' => 'deviceEnrollmentNotificationConfiguration', 'display_name' => 'Enrollment Notifications', 'platform' => 'all', ]); $version = PolicyVersion::create([ 'tenant_id' => $tenant->id, 'policy_id' => $policy->id, 'version_number' => 1, 'policy_type' => $policy->policy_type, 'platform' => $policy->platform, 'created_by' => 'tester@example.com', 'captured_at' => CarbonImmutable::now(), 'snapshot' => [ '@odata.type' => '#microsoft.graph.deviceEnrollmentNotificationConfiguration', 'displayName' => 'Enrollment Notifications', 'priority' => 1, 'version' => 1, 'platformType' => 'windows', 'notificationTemplates' => ['Email_email-template-1', 'Push_push-template-1'], 'notificationTemplateSnapshots' => [ [ 'channel' => 'Email', 'template_id' => 'email-template-1', 'template' => [ 'id' => 'email-template-1', 'displayName' => 'Email Template', 'defaultLocale' => 'en-us', 'brandingOptions' => 'none', ], 'localized_notification_messages' => [ [ 'locale' => 'en-us', 'subject' => 'Email Subject', 'messageTemplate' => 'Email Body', 'isDefault' => true, ], ], ], [ 'channel' => 'Push', 'template_id' => 'push-template-1', 'template' => [ 'id' => 'push-template-1', 'displayName' => 'Push Template', 'defaultLocale' => 'en-us', 'brandingOptions' => 'none', ], 'localized_notification_messages' => [ [ 'locale' => 'en-us', 'subject' => 'Push Subject', 'messageTemplate' => 'Push Body', 'isDefault' => true, ], ], ], ], ], ]); $user = User::factory()->create(); $response = $this->actingAs($user) ->get(PolicyVersionResource::getUrl('view', ['record' => $version]).'?tab=normalized-settings'); $response->assertOk(); $response->assertSee('Enrollment notifications'); $response->assertSee('Notification templates'); $response->assertSee('Email (en-us) Subject'); $response->assertSee('Email Subject'); $response->assertSee('Email (en-us) Message'); $response->assertSee('Email Body'); $response->assertSee('Push (en-us) Subject'); $response->assertSee('Push Subject'); $response->assertSee('Push (en-us) Message'); $response->assertSee('Push Body'); });