/** * @covers BindParamGenerator::on_duplicate_key_update * @covers BindParamGenerator::generate */ public function test_on_duplicate_key_update() { $gen = new BindParamGenerator(); $gen->insert_values(array('field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'))->on_duplicate_key_update(array()); $param = $gen->generate(); $actual = $param->getPhraseStr(); $expected = "(field1,field2,field3) VALUES (:field1_0,:field2_1,:field3_2)"; $this->assertEquals($expected, $actual); $gen = new BindParamGenerator(); $gen->insert_values(array('ID' => '2', 'field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3'))->on_duplicate_key_update(array('field2' => 'value2_duplicate')); $param = $gen->generate(); $actual = $param->getPhraseStr(); $expected = "(ID,field1,field2,field3) VALUES (:ID_0,:field1_1,:field2_2,:field3_3) ON DUPLICATE KEY UPDATE field2=:field2_4"; $this->assertEquals($expected, $actual); $actual = $param->getParamArray(); $expected = array('ID_0' => 2, 'field1_1' => 'value1', 'field2_2' => 'value2', 'field3_3' => 'value3', 'field2_4' => 'value2_duplicate'); $this->assertEquals($expected, $actual); }
/** * @covers SQLAdapter::__construct * @covers SQLAdapter::select * @covers SQLAdapter::insert */ public function test_insert() { $config = new PDOConfig(array('database' => 'test', 'pass' => '')); $pdo = new PDOExtended($config); # # Insert # $adapter = new SQLAdapter($pdo); $generator = new BindParamGenerator(); $generator->insert_values(array('ID' => 5, 'FIELD1' => 'f5_1', 'FIELD2' => 'f5_2', 'FIELD3' => 'f5_3')); $response = $adapter->insert('TBL_TEST', $generator->generate()); $actual = $response->getErrorCode(); $expected = '00000'; $this->assertEquals($expected, $actual, __CLASS__ . "::" . __METHOD__ . ": line " . __LINE__); # # Select with WHERE IN and ORDER BY # $adapter = new SQLAdapter($pdo); $generator = new BindParamGenerator(); $generator->equal_('ID', 5); $response = $adapter->select('TBL_TEST', array('ID', 'FIELD1', 'FIELD3'), $generator->generate()); $actual = $response->fetchAll(); $expected = array(0 => array('ID' => '5', 'FIELD1' => 'f5_1', 'FIELD3' => 'f5_3')); $this->assertEquals($expected, $actual, __CLASS__ . "::" . __METHOD__ . ": line " . __LINE__); # # insert on duplicate key update ... # $adapter = new SQLAdapter($pdo); $generator = new BindParamGenerator(); $generator->insert_values(array('ID' => 5, 'FIELD1' => 'f5_1', 'FIELD2' => 'f5_2', 'FIELD3' => 'f5_3'))->on_duplicate_key_update(array('FIELD3' => 'f5_3_duplicate')); $response = $adapter->insert('TBL_TEST', $generator->generate()); $actual = $response->getErrorCode(); $expected = '00000'; $this->assertEquals($expected, $actual, __CLASS__ . "::" . __METHOD__ . ": line " . __LINE__); # # Select # $adapter = new SQLAdapter($pdo); $generator = new BindParamGenerator(); $generator->equal_('ID', 5); $response = $adapter->select('TBL_TEST', array('ID', 'FIELD1', 'FIELD3'), $generator->generate()); $actual = $response->fetchAll(); $expected = array(0 => array('ID' => '5', 'FIELD1' => 'f5_1', 'FIELD3' => 'f5_3_duplicate')); $this->assertEquals($expected, $actual, __CLASS__ . "::" . __METHOD__ . ": line " . __LINE__); }