20250801
This commit is contained in:
48
tests/classes/ConditionBuilderTest.php
Normal file
48
tests/classes/ConditionBuilderTest.php
Normal 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());
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user