public function testQueryOperators() {
$query = new Query(array('type' => 'read', 'model' => $this->_model, 'conditions' => array(
'score' => array('between' => array(90, 100))
)));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} WHERE ({score} ";
$sql .= "BETWEEN 90 AND 100);";
$this->assertEqual($sql, $this->db->renderCommand($query));
$query = new Query(array('type' => 'read', 'model' => $this->_model, 'conditions' => array(
'score' => array('>' => 90, '<' => 100)
)));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} WHERE ";
$sql .= "({score} > 90 AND {score} < 100);";
$this->assertEqual($sql, $this->db->renderCommand($query));
$query = new Query(array('type' => 'read', 'model' => $this->_model, 'conditions' => array(
'score' => array('!=' => array(98, 99, 100))
)));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} ";
$sql .= "WHERE ({score} NOT IN (98, 99, 100));";
$this->assertEqual($sql, $this->db->renderCommand($query));
$query = new Query(array('type' => 'read', 'model' => $this->_model, 'conditions' => array(
'scorer' => array('like' => '%howard%')
)));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} ";
$sql .= "WHERE ({scorer} like '%howard%');";
$this->assertEqual($sql, $this->db->renderCommand($query));
$conditions = "custom conditions string";
$query = new Query(compact('conditions') + array(
'type' => 'read', 'model' => $this->_model
));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} WHERE {$conditions};";
$this->assertEqual($sql, $this->db->renderCommand($query));
$query = new Query(array(
'type' => 'read', 'model' => $this->_model,
'conditions' => array(
'field' => array('like' => '%value%', 'not like' => '%value2%')
)
));
$sql = "SELECT * FROM {mock_database_posts} AS {MockDatabasePost} WHERE ";
$sql .= "({field} like '%value%' AND {field} not like '%value2%');";
$this->assertEqual($sql, $this->db->renderCommand($query));
}