This commit is contained in:
2025-08-01 18:29:11 +03:00
parent 2f3dd81d0a
commit ccdcc3e047
10 changed files with 1226 additions and 51 deletions

View File

@@ -0,0 +1,48 @@
<?php
namespace goodboyalex\php_db_components_pack\tests\classes;
use goodboyalex\php_db_components_pack\classes\Condition;
use goodboyalex\php_db_components_pack\classes\ConditionBuilder;
use goodboyalex\php_db_components_pack\classes\ConditionGroup;
use PHPUnit\Framework\TestCase;
class ConditionBuilderTest extends TestCase
{
public function testBuild ()
{
// Требуемое условие
$requireCondition =
"`id` = 1 AND `age` >= 18 OR `profile` <= 12 AND (`Name` = 'Alex' AND (`Age` > 18 OR `FirstName` = 'Titanic'))";
// Создаем условие методом цепочек
$condition = new ConditionBuilder()->WhereEquals('id', 1)->And()->WhereGreaterThanEqual('age', 18)->Or()
->WhereLessThanEqual('profile', 12)->And()->AddGroup(Condition::LOGIC_AND, [
new Condition("Name", '=', "Alex"),
new ConditionGroup(Condition::LOGIC_OR, [
new Condition("Age", '>', 18), new Condition("FirstName",
'=',
"Titanic")
]),
])->Build();
var_dump($condition->Get(0));
var_dump($condition->Get(1));
// Проверяем его
$this->assertEquals($requireCondition, $condition);
// Задаем условие методом массива
$conditionArray = [
"id" => 1, 'AND', "age" => ['>=', 18], 'OR', "profile" => ['<=', 12], 'AND', [
'AND', "Name" => "Alex", ['OR', "Age" => ['>', 18], "FirstName" => "Titanic"]
]
];
// Создаем ConditionBuilder
$builder = ConditionBuilder::Parse($conditionArray);
// Проверяем его
$this->assertEquals($requireCondition, $builder->Build());
}
}