. // }}} /** * String formatting utilities * * @package GNUsocial * @category Util * * @author Hugo Sales * @copyright 2020-2021 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ namespace App\Util; use App\Core\GNUsocial; use Functional as F; use ReflectionClass; use Symfony\Bundle\FrameworkBundle\KernelBrowser; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Symfony\Component\HttpKernel\KernelInterface; class GNUsocialTestCase extends WebTestCase { private static GNUsocial $social; /** * Provide our own initialization for testing */ public static function createClient(array $options = [], array $server = []): KernelBrowser { $client = parent::createClient($options, $server); self::do_setup(); return $client; } public static function bootKernel(array $options = []): KernelInterface { $kernel = parent::bootKernel(); self::do_setup(); return $kernel; } private static function do_setup() { $container = self::$kernel->getContainer()->get('test.service_container'); $services = F\map( (new ReflectionClass(GNUsocial::class))->getMethod('__construct')->getParameters(), fn ($p) => $container->get((string) $p->getType()), ); self::$social = new GNUsocial(...$services); } }