<?php

use App\Support\Baselines\BaselineScope;

it('expands empty policy_types to supported policy types (excluding foundations) and defaults foundation_types to none', function () {
    config()->set('tenantpilot.supported_policy_types', [
        ['type' => 'deviceConfiguration', 'label' => 'Device Configuration'],
        ['type' => 'deviceCompliancePolicy', 'label' => 'Device Compliance'],
    ]);

    config()->set('tenantpilot.foundation_types', [
        ['type' => 'assignmentFilter', 'label' => 'Assignment Filter', 'baseline_compare' => ['supported' => true]],
    ]);

    $scope = BaselineScope::fromJsonb([
        'policy_types' => [],
        'foundation_types' => [],
    ])->expandDefaults();

    expect($scope->policyTypes)->toBe([
        'deviceCompliancePolicy',
        'deviceConfiguration',
    ]);

    expect($scope->foundationTypes)->toBe([]);
    expect($scope->allTypes())->toBe([
        'deviceCompliancePolicy',
        'deviceConfiguration',
    ]);
});

it('filters unknown types and does not allow foundations inside policy_types', function () {
    config()->set('tenantpilot.supported_policy_types', [
        ['type' => 'deviceConfiguration'],
    ]);

    config()->set('tenantpilot.foundation_types', [
        ['type' => 'assignmentFilter', 'baseline_compare' => ['supported' => true]],
    ]);

    $scope = BaselineScope::fromJsonb([
        'policy_types' => ['deviceConfiguration', 'assignmentFilter', 'unknown'],
        'foundation_types' => ['assignmentFilter', 'unknown'],
    ])->expandDefaults();

    expect($scope->policyTypes)->toBe(['deviceConfiguration']);
    expect($scope->foundationTypes)->toBe(['assignmentFilter']);
    expect($scope->allTypes())->toBe(['assignmentFilter', 'deviceConfiguration']);
});
