<?php

declare(strict_types=1);

namespace {{ tree.getFullNameSpaceOfFile(file, entity, action) }};

{% for dependency in dependencyzz %}
use {{ dependency }};{% endfor %}
use App\Models\User;
use Tests\API\AbstractApiTestBase;

abstract class {{ helper.getClassName(file, entity, action) }} extends AbstractApiTestBase
{

    /**
     * @param User $User
     * @param array<string, mixed> $Map
     */
    public static function makeItem(User $User, array $Map = []): {{ helper.getClassName(helper.findFile('Model'), entity, action) }}
    {
        $Item = {{ helper.getClassName(helper.findFile('Factory'), entity, action) }}::new()
            ->for($User, 'User')
            ->makeOne($Map);
        return $Item;
    }

    /**
     * @return array<int, string>
     */
    protected function getMissingKeyzz(): array
    {
        $Item = new {{ helper.getClassName(helper.findFile('Model'), entity, action) }}();

        return $Item->getHidden();
    }

    /**
     * @return string[]
     */
    public static function getStructure(): array
    {
        return {{ helper.getClassName(helper.findFile('Model'), entity, action) }}::getKeyzz();
    }

}
