Add notnull property to <group> tag in conditions

This commit is contained in:
Kijin Sung 2025-05-29 23:08:05 +09:00
parent fda92b368d
commit 6e325526c8
5 changed files with 43 additions and 6 deletions

View file

@ -8,5 +8,9 @@
</columns>
<conditions>
<condition operation="equal" column="document_srl" var="document_srl" />
<group notnull="notnull">
<condition operation="equal" column="module_srl" var="module_srl" />
<condition operation="equal" column="member_srl" var="member_srl" pipe="or" />
</group>
</conditions>
</query>

View file

@ -512,32 +512,59 @@ class DBQueryParserTest extends \Codeception\Test\Unit
'user_name' => null,
'nick_name' => 'TEST',
'document_srl' => 1234,
'module_srl' => 5678,
));
$this->assertEquals('UPDATE `rx_documents` SET `nick_name` = ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['TEST', 1234], $query->getQueryParams());
$this->assertEquals('UPDATE `rx_documents` SET `nick_name` = ? WHERE `document_srl` = ? AND (`module_srl` = ?)', $sql);
$this->assertEquals(['TEST', 1234, 5678], $query->getQueryParams());
$sql = $query->getQueryString('rx_', array(
'user_name' => new \Rhymix\Framework\Parsers\DBQuery\NullValue,
'nick_name' => 'TEST',
'document_srl' => 1234,
'module_srl' => 5678,
'member_srl' => 9000,
));
$this->assertEquals('UPDATE `rx_documents` SET `user_name` = NULL, `nick_name` = ? WHERE `document_srl` = ?', $sql);
$this->assertEquals(['TEST', 1234], $query->getQueryParams());
$this->assertEquals('UPDATE `rx_documents` SET `user_name` = NULL, `nick_name` = ? WHERE `document_srl` = ? AND (`module_srl` = ? OR `member_srl` = ?)', $sql);
$this->assertEquals(['TEST', 1234, 5678, 9000], $query->getQueryParams());
$this->tester->expectThrowable('Exception', function() use($query) {
$this->tester->expectThrowable('Rhymix\Framework\Exceptions\QueryError', function() use($query) {
$query->getQueryString('rx_', array(
'nick_name' => 'TEST',
'document_srl' => 1234,
));
});
$this->tester->expectThrowable('Rhymix\Framework\Exceptions\QueryError', function() use($query) {
$query->getQueryString('rx_', array(
'nick_name' => 'TEST',
'document_srl' => 1234,
));
});
$this->tester->expectThrowable('Rhymix\Framework\Exceptions\QueryError', function() use($query) {
$query->getQueryString('rx_', array(
'nick_name' => new \Rhymix\Framework\Parsers\DBQuery\NullValue,
'document_srl' => 1234,
'module_srl' => 5678,
));
});
$this->tester->expectThrowable('Exception', function() use($query) {
$this->tester->expectThrowable('Rhymix\Framework\Exceptions\QueryError', function() use($query) {
$query->getQueryString('rx_', array(
'nick_name' => null,
'document_srl' => 1234,
'member_srl' => 5678,
));
});
// No exception
$query->getQueryString('rx_', array(
'nick_name' => 'TEST',
'document_srl' => 1234,
'module_srl' => new \Rhymix\Framework\Parsers\DBQuery\NullValue,
'member_srl' => null,
));
$query = Rhymix\Framework\Parsers\DBQueryParser::loadXML(\RX_BASEDIR . 'tests/_data/dbquery/nullValueTest2.xml');
$sql = $query->getQueryString('rx_', array(