mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 17:21:39 +09:00
Add subquery unit tests for DBQueryParser
This commit is contained in:
parent
bb94e91fe0
commit
c6cb8f72b5
4 changed files with 105 additions and 2 deletions
20
tests/_data/dbquery/selectSubqueryTest1.xml
Normal file
20
tests/_data/dbquery/selectSubqueryTest1.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<query id="selectSubqueryTest1" action="select">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
<table query="true" alias="m">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member_srl" />
|
||||
<column name="nick_name" />
|
||||
</columns>
|
||||
</table>
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="documents.*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="documents.member_srl" default="m.member_srl" />
|
||||
</conditions>
|
||||
</query>
|
||||
19
tests/_data/dbquery/selectSubqueryTest2.xml
Normal file
19
tests/_data/dbquery/selectSubqueryTest2.xml
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<query id="selectSubqueryTest2" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="member.*" />
|
||||
<query alias="document_count">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="COUNT(*)" alias="count" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="documents.member_srl" />
|
||||
</conditions>
|
||||
</query>
|
||||
</columns>
|
||||
</query>
|
||||
22
tests/_data/dbquery/selectSubqueryTest3.xml
Normal file
22
tests/_data/dbquery/selectSubqueryTest3.xml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<query id="selectSubqueryTest3" action="select">
|
||||
<tables>
|
||||
<table name="member" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="*" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="notequal" column="is_admin" var="is_admin" default="N" />
|
||||
<query operation="equal" column="regdate" alias="document_max_regdate" pipe="or">
|
||||
<tables>
|
||||
<table name="documents" />
|
||||
</tables>
|
||||
<columns>
|
||||
<column name="MAX(regdate)" alias="max_regdate" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="member.member_srl" default="documents.member_srl" />
|
||||
</conditions>
|
||||
</query>
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -105,9 +105,51 @@ class DBQueryParserTest extends \Codeception\TestCase\Test
|
|||
$this->assertFalse($query->columns[1]->is_wildcard);
|
||||
}
|
||||
|
||||
public function testSubquery()
|
||||
public function testSubquery1()
|
||||
{
|
||||
|
||||
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectSubqueryTest1.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['m'] instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||
$this->assertEquals(1, count($query->tables['m']->tables));
|
||||
$this->assertEquals('member', $query->tables['m']->tables['member']->name);
|
||||
$this->assertEquals(2, count($query->tables['m']->columns));
|
||||
$this->assertEquals(1, count($query->columns));
|
||||
$this->assertEquals('documents.member_srl', $query->conditions[0]->column);
|
||||
$this->assertEquals('m.member_srl', $query->conditions[0]->default);
|
||||
}
|
||||
|
||||
public function testSubquery2()
|
||||
{
|
||||
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectSubqueryTest2.xml');
|
||||
$this->assertTrue($query instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||
$this->assertEquals(1, count($query->tables));
|
||||
$this->assertTrue($query->tables['member'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||
$this->assertEquals(2, count($query->columns));
|
||||
$this->assertTrue($query->columns[0] instanceof Rhymix\Framework\Parsers\DBQuery\ColumnRead);
|
||||
$this->assertTrue($query->columns[1] instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||
$this->assertTrue($query->columns[1]->tables['documents'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||
$this->assertTrue($query->columns[1]->columns[0] instanceof Rhymix\Framework\Parsers\DBQuery\ColumnRead);
|
||||
$this->assertTrue($query->columns[1]->columns[0]->is_expression);
|
||||
$this->assertFalse($query->columns[1]->columns[0]->is_wildcard);
|
||||
}
|
||||
|
||||
public function testSubquery3()
|
||||
{
|
||||
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/selectSubqueryTest3.xml');
|
||||
$this->assertTrue($query instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||
$this->assertEquals(1, count($query->tables));
|
||||
$this->assertTrue($query->tables['member'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||
$this->assertEquals(1, count($query->columns));
|
||||
$this->assertTrue($query->columns[0] instanceof Rhymix\Framework\Parsers\DBQuery\ColumnRead);
|
||||
$this->assertEquals(2, count($query->conditions));
|
||||
$this->assertTrue($query->conditions[1] instanceof Rhymix\Framework\Parsers\DBQuery\Query);
|
||||
$this->assertTrue($query->conditions[1]->tables['documents'] instanceof Rhymix\Framework\Parsers\DBQuery\Table);
|
||||
$this->assertTrue($query->conditions[1]->columns[0] instanceof Rhymix\Framework\Parsers\DBQuery\ColumnRead);
|
||||
$this->assertTrue($query->conditions[1]->columns[0]->is_expression);
|
||||
$this->assertEquals('member.member_srl', $query->conditions[1]->conditions[0]->column);
|
||||
$this->assertEquals('OR', $query->conditions[1]->pipe);
|
||||
}
|
||||
|
||||
public function testInsertQuery()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue