20250711 1.1.1 Beta 3

This commit is contained in:
2025-07-11 19:40:30 +03:00
parent 83a76dc8e2
commit 3fbb7dc81c
7 changed files with 1001 additions and 10 deletions

View File

@@ -0,0 +1,71 @@
<?php
namespace goodboyalex\php_components_pack\tests\extensions;
use goodboyalex\php_components_pack\extensions\GUIDExtension;
use goodboyalex\php_components_pack\extensions\TypeExtension;
use goodboyalex\php_components_pack\tests\data\MenuCssClassModel;
use goodboyalex\php_components_pack\tests\data\MenuItemModel;
use goodboyalex\php_components_pack\tests\data\MenuItems;
use goodboyalex\php_components_pack\tests\data\MenuModel;
use PHPUnit\Framework\TestCase;
class TypeExtensionTest extends TestCase
{
public function testFromArray ()
{
}
public function testToArray ()
{
$this->PrepareForTest();
$menu = new MenuModel();
$menu->Id = GUIDExtension::Generate();
$menu->Name = 'Menu';
$menu->Description = 'Description';
$menu->AllowSubMenu = true;
$menu->Css = new MenuCssClassModel();
$menu->Css->MenuClass = "menuClass";
$menu->Css->ItemClass = "itemClass";
$menu->Css->SubItemClass = "subItemClass";
$menu->Css->ItemSubMenuClass = "itemSubMenuClass";
$menuItem1 = new MenuItemModel();
$menuItem1->Id = GUIDExtension::Generate();
$menuItem1->Name = 'MenuItem1';
$menuItem1->Description = 'Description';
$menuItem1->Order = 1;
$menuItem1->ParentId = GUIDExtension::GUIDEmpty;
$menuItem1->URL = 'https://www.google.com';
$menu->Items->AddItem($menuItem1);
$menuItem2 = new MenuItemModel();
$menuItem2->Id = GUIDExtension::Generate();
$menuItem2->Name = 'MenuItem2';
$menuItem2->Description = 'Description';
$menuItem2->ParentId = $menuItem1->Id;
$menuItem2->Order = 1;
$menuItem2->URL = 'https://www.google.ru';
$menu->Items->AddItem($menuItem2);
$closure = fn (object $class) => $class::class == MenuItems::class ? $class->Serialize()
: TypeExtension::ToArray($class, TypeExtension::DEFAULT_TO_ARRAY_ON_CLASS());
$array = TypeExtension::ToArray($menu, $closure);
file_put_contents(__DIR__ . "/class.txt", json_encode($array, JSON_PRETTY_PRINT));
var_dump($array);
die();
}
private function PrepareForTest (): void
{
require_once __DIR__ . '/../../sources/exceptions/TypeException.php';
require_once __DIR__ . '/../../sources/extensions/TypeExtension.php';
require_once __DIR__ . '/../data/MenuItemModel.php';
require_once __DIR__ . '/../data/MenuCssClassModel.php';
require_once __DIR__ . '/../data/MenuItems.php';
require_once __DIR__ . '/../data/MenuModel.php';
}
}