<?php
use App\Service\Forms\FormLogicPropertyResolver;

it('can validate form logic property resolver', function ($property, $formData, $expectedResult) {
    $isRequired = FormLogicPropertyResolver::isRequired($property, $formData);
    expect($isRequired)->toBe($expectedResult);
})->with([
    [
        [
            'id' => "title",
            'name' => "Name",
            'type' => 'text',
            'hidden' => false,
            'required' => true,
            'logic' => [
                "conditions" => [
                    "operatorIdentifier"=> "and",
                    "children"=> [
                        [
                            "identifier"=> "user",
                            "value"=> [
                                "operator"=> "is_not_empty",
                                "property_meta"=> [
                                    'id'=> "93ea3198-353f-440b-8dc9-2ac9a7bee124",
                                    "type"=> "select",
                                ],
                                "value"=> true
                            ]
                        ]
                    ]
                ],
                "actions" => ['make-it-optional']
            ]
        ],
        ['93ea3198-353f-440b-8dc9-2ac9a7bee124'=>["One"]],
        false
    ],
    [
        [
            'id' => "title",
            'name' => "Name",
            'type' => 'text',
            'hidden' => false,
            'required' => true,
            'logic' => [
                "conditions" => [
                    "operatorIdentifier"=> "and",
                    "children"=> [
                        [
                            "identifier"=> "user",
                            "value"=> [
                                "operator"=> "is_not_empty",
                                "property_meta"=> [
                                    'id'=> "93ea3198-353f-440b-8dc9-2ac9a7bee124",
                                    "type"=> "select",
                                ],
                                "value"=> true
                            ]
                        ]
                    ]
                ],
                "actions" => ['make-it-optional']
            ]
        ],
        ['93ea3198-353f-440b-8dc9-2ac9a7bee124'=>[]],
        true
    ],
    [
        [
            'id' => "title",
            'name' => "Name",
            'type' => 'text',
            'hidden' => false,
            'required' => true,
            'logic' => [
                "conditions" => [
                    "operatorIdentifier"=> "or",
                    "children"=> [
                        [
                            "identifier"=> "user",
                            "value"=> [
                                "operator"=> "is_not_empty",
                                "property_meta"=> [
                                    'id'=> "93ea3198-353f-440b-8dc9-2ac9a7bee124",
                                    "type"=> "select",
                                ],
                                "value"=> true
                            ]
                        ],
                        [
                            "identifier"=> "email",
                            "value"=> [
                                "operator"=> "contains",
                                "property_meta"=> [
                                    'id'=> "93ea3198-353f-440b-8dc9-2ac9a7bee222",
                                    "type"=> "email",
                                ],
                                "value"=> "abc"
                            ]
                        ]
                    ]
                ],
                "actions" => ['make-it-optional']
            ]
        ],
        ['93ea3198-353f-440b-8dc9-2ac9a7bee124'=>[], '93ea3198-353f-440b-8dc9-2ac9a7bee222'=>['abc']],
        false
    ]
]);