function testSelectPattern() { $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="autoincrement"/> <property name="name" fieldname="name" datatype="string" required="true" selectpattern="%s"/> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $result = $generator->GetSelectClause(); $this->assertEqualOrDiff('SELECT `product_test`.`id`, `product_test`.`name`, `product_test`.`price`', $result); $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="autoincrement"/> <property name="name" fieldname="name" datatype="string" required="true" selectpattern="TOUPPER(%s)"/> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $result = $generator->GetSelectClause(); $this->assertEqualOrDiff('SELECT `product_test`.`id`, TOUPPER(`product_test`.`name`) as `name`, `product_test`.`price`', $result); $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="p" realname="product_test" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="autoincrement"/> <property name="name" fieldname="name" datatype="string" required="true" selectpattern="TOUPPER(%s)"/> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $result = $generator->GetSelectClause(); $this->assertEqualOrDiff('SELECT `p`.`id`, TOUPPER(`p`.`name`) as `name`, `p`.`price`', $result); $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="autoincrement"/> <property name="name" fieldname="name" datatype="string" required="true" selectpattern="TOUPPER(name)"/> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $result = $generator->GetSelectClause(); $this->assertEqualOrDiff('SELECT `product_test`.`id`, TOUPPER(name) as `name`, `product_test`.`price`', $result); $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="autoincrement"/> <property name="name" fieldname="name" datatype="string" required="true" selectpattern="CONCAT(name,\' \',price)"/> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $result = $generator->GetSelectClause(); $this->assertEqualOrDiff('SELECT `product_test`.`id`, CONCAT(name,\\\' \\\',price) as `name`, `product_test`.`price`', $result); }
function testInsertQuery() { $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="code" /> </datasources> <record> <property name="code" fieldname="code" datatype="string" insertpattern="now()"/> <property name="name" fieldname="name" datatype="string" /> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $fieldList = $generator->GetPropertiesBy('PrimaryTable'); list($fields, $values) = $generator->PrepareValues($fieldList, 'insertPattern', 'record->'); $this->assertEqual("now()", $values['code']); $doc = '<?xml version="1.0"?> <dao xmlns="http://jelix.org/ns/dao/1.0"> <datasources> <primarytable name="product_test" primarykey="code" /> </datasources> <record> <property name="code" fieldname="code" datatype="string" insertpattern="now(%s)"/> <property name="name" fieldname="name" datatype="string" /> <property name="price" fieldname="price" datatype="float"/> </record> </dao>'; $parser = new jDaoParser($this->_selector); $parser->parse(simplexml_load_string($doc), $this->_tools); $generator = new testMysqlDaoGenerator($this->_selector, $this->_tools, $parser); $fieldList = $generator->GetPropertiesBy('PrimaryTable'); list($fields, $values) = $generator->PrepareValues($fieldList, 'insertPattern', 'record->'); $this->assertEqual('now(\'.($record->code === null ? \'NULL\' : $this->_conn->quote2($record->code,false)).\')', $values['code']); }