Build/Helper/Php/findMissingNullModelTest.php
Dennis Eichhorn b129d5718b fix tests
2024-03-20 03:00:23 +00:00

115 lines
3.5 KiB
PHP

<?php
/**
* Jingga
*
* PHP Version 8.1
*
* @package Helper
* @copyright Dennis Eichhorn
* @license OMS License 2.0
* @version 1.0.0
* @link https://jingga.app
*/
declare(strict_types=1);
// Find null models with no null model test and creates the tests
$modules = \scandir(__DIR__ . '/../../../Modules');
foreach ($modules as $module) {
if ($module === '..' || $module === '.'
|| !\is_dir(__DIR__ . '/../../../Modules/' . $module)
|| !\is_dir(__DIR__ . '/../../../Modules/' . $module . '/Models')
|| !\is_file(__DIR__ . '/../../../Modules/' . $module . '/info.json'))
{
continue;
}
$models = \scandir(__DIR__ . '/../../../Modules/' . $module . '/Models');
foreach ($models as $model) {
if ($model === '..' || $model === '.'
|| !\str_starts_with($model, 'Null')
) {
continue;
}
if (\stripos($model, '.php') === false) {
throw new Exception('invalid substr');
}
$model = \substr($model, 4, -4); // remove Null and .php from string
if (empty($model)) {
throw new Exception('invalid substr');
}
if (!\is_file(__DIR__ . '/../../../Modules/' . $module . '/tests/Models/Null' . $model . 'Test.php')) {
echo $module . ': Null' . $model . "\n";
if (!\is_dir(__DIR__ . '/../../../Modules/' . $module . '/tests')) {
\mkdir(__DIR__ . '/../../../Modules/' . $module . '/tests');
}
if (!\is_dir(__DIR__ . '/../../../Modules/' . $module . '/tests/Models')) {
\mkdir(__DIR__ . '/../../../Modules/' . $module . '/tests/Models');
}
$test = '<?php' . "\n"
. '/**' . "\n"
. ' * Jingga' . "\n"
. ' *' . "\n"
. ' * PHP Version 8.1' . "\n"
. ' *' . "\n"
. ' * @package tests' . "\n"
. ' * @copyright Dennis Eichhorn' . "\n"
. ' * @license OMS License 2.0' . "\n"
. ' * @version 1.0.0' . "\n"
. ' * @link https://jingga.app' . "\n"
. ' */' . "\n"
. 'declare(strict_types=1);' . "\n"
. "\n"
. 'namespace Modules\\' . $module . '\\tests\Models;' . "\n"
. "\n"
. 'use Modules\\' . $module . '\Models\Null' . $model . ';' . "\n"
. "\n"
. '/**' . "\n"
. ' * @internal' . "\n"
. ' */' . "\n"
. 'final class Null' . $model . 'Test extends \PHPUnit\Framework\TestCase' . "\n"
. '{' . "\n"
. ' /**' . "\n"
. ' * @covers \Modules\\' . $module . '\Models\Null' . $model . '' . "\n"
. ' * @group module' . "\n"
. ' */' . "\n"
. ' public function testNull() : void' . "\n"
. ' {' . "\n"
. ' self::assertInstanceOf(\'\Modules\\' . $module . '\Models\\' . $model . '\', new Null' . $model . '());' . "\n"
. ' }' . "\n"
. "\n"
. ' /**' . "\n"
. ' * @covers \Modules\\' . $module . '\Models\Null' . $model . '' . "\n"
. ' * @group module' . "\n"
. ' */' . "\n"
. ' public function testId() : void' . "\n"
. ' {' . "\n"
. ' $null = new Null' . $model . '(2);' . "\n"
. ' self::assertEquals(2, $null->id);' . "\n"
. ' }' . "\n"
. "\n"
. ' /**' . "\n"
. ' * @covers \Modules\\' . $module . '\Models\Null' . $model . '' . "\n"
. ' * @group module' . "\n"
. ' */' . "\n"
. ' public function testJsonSerialize() : void' . "\n"
. ' {' . "\n"
. ' $null = new Null' . $model . '(2);' . "\n"
. ' self::assertEquals([\'id\' => 2], $null);' . "\n"
. ' }' . "\n"
. '}' . "\n";
\file_put_contents(__DIR__ . '/../../../Modules/' . $module . '/tests/Models/Null' . $model . 'Test.php', $test);
}
}
}