Core/tests/AbstractBaseTestCase.php

87 lines
2.7 KiB
PHP
Raw Normal View History

<?php
2024-04-14 13:48:14 +00:00
declare(strict_types=1);
namespace Benzine\Tests;
use Faker\Factory as FakerFactory;
2024-04-14 16:05:21 +00:00
use Faker\Generator as Faker;
use Faker\Provider;
2020-09-01 03:15:02 +00:00
abstract class AbstractBaseTestCase extends AbstractTestCase
{
2024-04-14 16:05:21 +00:00
private static Faker $faker;
2024-04-14 16:05:21 +00:00
public function __construct($name = null)
{
2024-04-14 16:05:21 +00:00
parent::__construct($name);
// Force Kint into CLI mode.
\Kint::$mode_default = \Kint::MODE_CLI;
}
2020-09-28 16:36:25 +00:00
public static function setUpBeforeClass(): void
{
parent::setUpBeforeClass();
self::$faker = FakerFactory::create();
self::$faker->addProvider(new Provider\Base(self::$faker));
self::$faker->addProvider(new Provider\DateTime(self::$faker));
self::$faker->addProvider(new Provider\Lorem(self::$faker));
self::$faker->addProvider(new Provider\Internet(self::$faker));
self::$faker->addProvider(new Provider\Payment(self::$faker));
self::$faker->addProvider(new Provider\en_US\Person(self::$faker));
self::$faker->addProvider(new Provider\en_US\Address(self::$faker));
self::$faker->addProvider(new Provider\en_US\PhoneNumber(self::$faker));
self::$faker->addProvider(new Provider\en_US\Company(self::$faker));
}
2024-04-14 16:05:21 +00:00
public static function getFaker(): Faker
{
return self::$faker;
}
/**
* Call protected/private method of a class.
*
* @param object &$object Instantiated object that we will run method on
* @param string $methodName Method name to call
* @param array $parameters array of parameters to pass into method
*
* @return mixed method return
*/
2024-04-14 19:16:04 +00:00
public function invokeMethod(&$object, $methodName, array $parameters = []): mixed
{
2024-04-14 13:48:14 +00:00
$reflection = new \ReflectionClass($object::class);
$method = $reflection->getMethod($methodName);
$method->setAccessible(true);
return $method->invokeArgs($object, $parameters);
}
2024-04-14 19:16:04 +00:00
public function setProtectedProperty(&$object, $property, $value): self
{
2024-04-14 13:48:14 +00:00
$reflection = new \ReflectionClass($object::class);
$prop = $reflection->getProperty($property);
$prop->setAccessible(true);
2024-04-14 16:05:21 +00:00
$prop->setValue($object, $value);
2024-04-14 16:05:21 +00:00
return $this;
}
public function getProtectedProperty(&$object, $property)
{
2024-04-14 13:48:14 +00:00
$reflection = new \ReflectionClass($object::class);
$prop = $reflection->getProperty($property);
$prop->setAccessible(true);
return $prop->getValue($object);
}
public function assertArraysEquitable($expected, $actual): void
{
sort($expected);
sort($actual);
$this->assertEquals($expected, $actual);
}
}