/** * Ensures that a SELECT query is properly built. */ public function testSelectQuery() { $query = Query::select(); $options = array('type' => 'SELECT', 'distinct' => true, 'expr' => 'jt.user_id, myt.user_name', 'table' => 'mytable', 'alias' => 'myt', 'joins' => array(array('type' => 'RIGHT', 'table' => 'joinedtable', 'alias' => 'jt', 'condition' => 'jt.user_id = myt.user_id')), 'condition' => 'jt.user_id > 0', 'groupBy' => 'jt.user_name ASC', 'having' => 'COUNT(*) > 1', 'orderBy' => 'jt.user_id ASC', 'limit' => 10, 'offset' => 20, 'variables' => array('myVar' => 100, 'anotherVar' => 'string')); $query->isDistinct($options['distinct'])->expr($options['expr'])->from($options['table'], $options['alias'])->join($options['joins'][0]['type'], $options['joins'][0]['table'], $options['joins'][0]['alias'], $options['joins'][0]['condition'])->where($options['condition'])->groupBy($options['groupBy'])->having($options['having'])->orderBy($options['orderBy'])->limit($options['limit'])->offset($options['offset'])->replace($options['variables']); $queryOptions = $query->getOptions(); foreach ($options as $key => $value) { $this->assertArrayHasKey($key, $queryOptions); $this->assertEquals($options[$key], $queryOptions[$key]); } }
/** * Tests updating data. */ public function testUpdate() { // Insert some fake data. $this->insertFakeData(3); $userName = '******'; // Update the table data. $result = Query::update()->table('users')->set(array('user_name' => '{string:user_name}'))->where('user_id = {int:user_id}')->replace(array('user_id' => 1, 'user_name' => $userName))->execute(); // Make sure it worked! $this->assertTrue($result->success()); $this->assertEquals(1, $result->getAffectedRows()); // Now we should select the data. $result = Query::select()->expr('user_name')->from('users')->where('user_id = {int:user_id}')->replace(array('user_id' => 1))->execute(); $this->assertTrue($result->success()); // Make sure it was actually updated. $row = $result->fetchAssoc(); $this->assertArrayHasKey('user_name', $row); $this->assertEquals($userName, $row['user_name']); }
/** * Tests to ensure the MySQL Driver generates SELECT queries properly. */ public function testSelectQuery() { $query = Query::select()->expr('mycolumn, anothercolumn')->from('mytable', 'myt')->join('INNER', 'users', 'u', 'u.user_id = myt.user_id')->where('u.user_id = 1')->groupBy('myt.user_group')->having('myt.user_id > 1')->orderBy('myt.user_id DESC')->limit(20)->offset(60); $result = MysqlDriver::generateQuery($query->getOptions()); $this->assertEquals(' SELECT mycolumn, anothercolumn FROM mytable AS myt INNER JOIN users AS u ON u.user_id = myt.user_id WHERE u.user_id = 1 GROUP BY myt.user_group HAVING myt.user_id > 1 ORDER BY myt.user_id DESC LIMIT 60, 20', $result); }
/** * Creates an instance of SelectQuery for testing. */ public function setUp() { $this->selectQuery = Query::select(); }