mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-08 11:11:39 +09:00
Add some unit tests for DBQueryParser (more to come)
This commit is contained in:
parent
8bb01edf86
commit
10302ea44e
4 changed files with 186 additions and 0 deletions
21
tests/_data/dbquery/selectJoinTest1.xml
Normal file
21
tests/_data/dbquery/selectJoinTest1.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<query id="selectJoinTest1" action="select">
|
||||||
|
<tables>
|
||||||
|
<table name="documents" />
|
||||||
|
<table name="member" />
|
||||||
|
</tables>
|
||||||
|
<columns>
|
||||||
|
<column name="member.member_srl" />
|
||||||
|
<column name="COUNT(*)" alias="count" />
|
||||||
|
</columns>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="equal" column="documents.member_srl" var="member.member_srl" />
|
||||||
|
<condition operation="equal" column="documents.member_srl" default="member.member_srl" />
|
||||||
|
<condition operation="in" column="documents.document_srl" var="document_srl_list" pipe="and" />
|
||||||
|
</conditions>
|
||||||
|
<groups>
|
||||||
|
<group column="member.member_srl" />
|
||||||
|
<having>
|
||||||
|
<condition operation="notequal" column="member.member_srl" var="exclude_member_srl" notnull="notnull" />
|
||||||
|
</having>
|
||||||
|
</groups>
|
||||||
|
</query>
|
||||||
17
tests/_data/dbquery/selectJoinTest2.xml
Normal file
17
tests/_data/dbquery/selectJoinTest2.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
<query id="selectJoinTest2" action="select">
|
||||||
|
<tables>
|
||||||
|
<table name="documents" />
|
||||||
|
<table name="member" type="left join">
|
||||||
|
<conditions>
|
||||||
|
<condition operation="equal" column="documents.member_srl" default="member.member_srl" />
|
||||||
|
</conditions>
|
||||||
|
</table>
|
||||||
|
</tables>
|
||||||
|
<columns>
|
||||||
|
<column name="documents.*" />
|
||||||
|
<column name="member.regdate" alias="member_regdate" />
|
||||||
|
</columns>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="in" column="documents.document_srl" var="document_srl_list" pipe="and" />
|
||||||
|
</conditions>
|
||||||
|
</query>
|
||||||
21
tests/_data/dbquery/selectTest.xml
Normal file
21
tests/_data/dbquery/selectTest.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
<query id="selectTest" action="select">
|
||||||
|
<tables>
|
||||||
|
<table name="documents" />
|
||||||
|
</tables>
|
||||||
|
<columns distinct="true">
|
||||||
|
<column name="*" />
|
||||||
|
</columns>
|
||||||
|
<conditions>
|
||||||
|
<condition operation="in" column="member_srl" var="member_srl" filter="number" notnull="notnull" />
|
||||||
|
<group pipe="and">
|
||||||
|
<condition operation="gte" column="regdate" var="regdate_more" notnull="notnull" />
|
||||||
|
<condition operation="equal" column="status" var="status_list" default="PUBLIC" pipe="or" />
|
||||||
|
</group>
|
||||||
|
</conditions>
|
||||||
|
<navigation>
|
||||||
|
<index var="sort_index" default="list_order" order="order_type" />
|
||||||
|
<list_count var="list_count" default="20" />
|
||||||
|
<page_count var="page_count" default="10" />
|
||||||
|
<page var="page" default="1" />
|
||||||
|
</navigation>
|
||||||
|
</query>
|
||||||
127
tests/unit/framework/parsers/DBQueryParserTest.php
Normal file
127
tests/unit/framework/parsers/DBQueryParserTest.php
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class DBQueryParserTest extends \Codeception\TestCase\Test
|
||||||
|
{
|
||||||
|
public function testLoadXML()
|
||||||
|
{
|
||||||
|
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectTest.xml');
|
||||||
|
$this->assertTrue($query instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||||
|
$this->assertEquals('selectTest', $query->name);
|
||||||
|
$this->assertEquals('SELECT', $query->type);
|
||||||
|
$this->assertTrue($query->select_distinct);
|
||||||
|
|
||||||
|
$this->assertTrue($query->tables['documents'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||||
|
$this->assertEquals('documents', $query->tables['documents']->alias);
|
||||||
|
|
||||||
|
$this->assertEquals(1, count($query->columns));
|
||||||
|
$this->assertEquals('*', $query->columns[0]->name);
|
||||||
|
$this->assertTrue($query->columns[0]->is_expression);
|
||||||
|
$this->assertTrue($query->columns[0]->is_wildcard);
|
||||||
|
|
||||||
|
$this->assertEquals(2, count($query->conditions));
|
||||||
|
$this->assertTrue($query->conditions[0] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||||
|
$this->assertTrue($query->conditions[1] instanceof Rhymix\Framework\Parsers\DBQuery\ConditionGroup);
|
||||||
|
$this->assertTrue($query->conditions[1]->conditions[0] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||||
|
$this->assertTrue($query->conditions[1]->conditions[1] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||||
|
$this->assertEquals('regdate', $query->conditions[1]->conditions[0]->column);
|
||||||
|
$this->assertEquals('gte', $query->conditions[1]->conditions[0]->operation);
|
||||||
|
$this->assertTrue($query->conditions[1]->conditions[0]->not_null);
|
||||||
|
$this->assertEquals('status_list', $query->conditions[1]->conditions[1]->var);
|
||||||
|
$this->assertEquals('PUBLIC', $query->conditions[1]->conditions[1]->default);
|
||||||
|
$this->assertFalse($query->conditions[1]->conditions[1]->not_null);
|
||||||
|
$this->assertEquals('OR', $query->conditions[1]->conditions[1]->pipe);
|
||||||
|
|
||||||
|
$this->assertTrue($query->navigation instanceof Rhymix\Framework\Parsers\DBQuery\Navigation);
|
||||||
|
$this->assertTrue($query->navigation->orderby[0] instanceof Rhymix\Framework\Parsers\DBQuery\OrderBy);
|
||||||
|
$this->assertEquals('sort_index', $query->navigation->orderby[0]->var);
|
||||||
|
$this->assertEquals('list_order', $query->navigation->orderby[0]->default);
|
||||||
|
$this->assertEquals('order_type', $query->navigation->orderby[0]->order_var);
|
||||||
|
$this->assertEquals('ASC', $query->navigation->orderby[0]->order_default);
|
||||||
|
$this->assertTrue($query->navigation->list_count instanceof Rhymix\Framework\Parsers\DBQuery\VariableBase);
|
||||||
|
$this->assertEquals('list_count', $query->navigation->list_count->var);
|
||||||
|
$this->assertEquals('20', $query->navigation->list_count->default);
|
||||||
|
$this->assertTrue($query->navigation->page instanceof Rhymix\Framework\Parsers\DBQuery\VariableBase);
|
||||||
|
$this->assertEquals('page', $query->navigation->page->var);
|
||||||
|
$this->assertEquals('1', $query->navigation->page->default);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testJoin1()
|
||||||
|
{
|
||||||
|
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectJoinTest1.xml');
|
||||||
|
$this->assertTrue($query instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||||
|
$this->assertEquals(2, count($query->tables));
|
||||||
|
$this->assertTrue($query->tables['documents'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||||
|
$this->assertTrue($query->tables['member'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||||
|
$this->assertNull($query->tables['member']->join_type);
|
||||||
|
$this->assertEmpty($query->tables['member']->join_conditions);
|
||||||
|
|
||||||
|
$this->assertEquals(2, count($query->columns));
|
||||||
|
$this->assertEquals('member.member_srl', $query->columns[0]->name);
|
||||||
|
$this->assertFalse($query->columns[0]->is_expression);
|
||||||
|
$this->assertFalse($query->columns[0]->is_wildcard);
|
||||||
|
$this->assertEquals('COUNT(*)', $query->columns[1]->name);
|
||||||
|
$this->assertEquals('count', $query->columns[1]->alias);
|
||||||
|
$this->assertTrue($query->columns[1]->is_expression);
|
||||||
|
$this->assertFalse($query->columns[1]->is_wildcard);
|
||||||
|
|
||||||
|
$this->assertEquals(3, count($query->conditions));
|
||||||
|
$this->assertEquals('documents.member_srl', $query->conditions[0]->column);
|
||||||
|
$this->assertEquals('member.member_srl', $query->conditions[0]->default);
|
||||||
|
$this->assertNull($query->conditions[0]->var);
|
||||||
|
$this->assertEquals('documents.member_srl', $query->conditions[1]->column);
|
||||||
|
$this->assertEquals('member.member_srl', $query->conditions[1]->default);
|
||||||
|
$this->assertNull($query->conditions[1]->var);
|
||||||
|
$this->assertEquals('AND', $query->conditions[1]->pipe);
|
||||||
|
|
||||||
|
$this->assertTrue($query->groupby instanceof Rhymix\Framework\Parsers\DBQuery\GroupBy);
|
||||||
|
$this->assertEquals('member.member_srl', $query->groupby->columns[0]);
|
||||||
|
$this->assertEquals(1, count($query->groupby->having));
|
||||||
|
$this->assertTrue($query->groupby->having[0] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||||
|
$this->assertEquals('member.member_srl', $query->groupby->having[0]->column);
|
||||||
|
$this->assertEquals('notequal', $query->groupby->having[0]->operation);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testJoin2()
|
||||||
|
{
|
||||||
|
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectJoinTest2.xml');
|
||||||
|
$this->assertTrue($query instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||||
|
$this->assertEquals(2, count($query->tables));
|
||||||
|
$this->assertTrue($query->tables['documents'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||||
|
$this->assertTrue($query->tables['member'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||||
|
$this->assertEquals('LEFT JOIN', $query->tables['member']->join_type);
|
||||||
|
$this->assertEquals(1, count($query->tables['member']->join_conditions));
|
||||||
|
$this->assertTrue($query->tables['member']->join_conditions[0] instanceof Rhymix\Framework\Parsers\DBQuery\Condition);
|
||||||
|
$this->assertEquals('documents.member_srl', $query->tables['member']->join_conditions[0]->column);
|
||||||
|
$this->assertEquals('member.member_srl', $query->tables['member']->join_conditions[0]->default);
|
||||||
|
$this->assertNull($query->tables['member']->join_conditions[0]->var);
|
||||||
|
|
||||||
|
$this->assertEquals(2, count($query->columns));
|
||||||
|
$this->assertEquals('documents.*', $query->columns[0]->name);
|
||||||
|
$this->assertTrue($query->columns[0]->is_expression);
|
||||||
|
$this->assertTrue($query->columns[0]->is_wildcard);
|
||||||
|
$this->assertEquals('member.regdate', $query->columns[1]->name);
|
||||||
|
$this->assertEquals('member_regdate', $query->columns[1]->alias);
|
||||||
|
$this->assertFalse($query->columns[1]->is_expression);
|
||||||
|
$this->assertFalse($query->columns[1]->is_wildcard);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testSubquery()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testInsertQuery()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateQuery()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testDeleteQuery()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue