public function testNull()
 {
     $expression = ValueExpression::create(null);
     $this->assertNull($expression->getValue());
     $this->assertEquals('NULL', QueryAssembler::stringify($expression));
     $stmt = QueryBuilder::update('tbl', ['field' => $expression]);
     $assembler = new QueryAssembler($stmt);
     $this->assertEquals('UPDATE tbl SET field = ?', $assembler->getQuery());
     $this->assertEquals([null], $assembler->getParameters());
 }
 public function testAssemble()
 {
     $expression = new IncrementExpression();
     $expression->setField(FieldExpression::create('new_field'));
     $this->assertEquals('new_field + 0', QueryAssembler::stringify($expression));
     $expression->setIncrementValue('abc');
     $this->assertEquals('new_field + 0', QueryAssembler::stringify($expression));
     $expression->setIncrementValue('1');
     $this->assertEquals('new_field + 1', QueryAssembler::stringify($expression));
     $expression->setIncrementValue(1);
     $this->assertEquals('new_field + 1', QueryAssembler::stringify($expression));
     $stmt = QueryBuilder::update('tbl');
     $stmt->set('inc_field', $expression);
     $qa = new QueryAssembler($stmt);
     $this->assertEquals('UPDATE tbl SET inc_field = new_field + ?', $qa->getQuery());
     $this->assertEquals([1], $qa->getParameters());
 }
 public function testAssemble()
 {
     $statement = QueryBuilder::update('tbl', ['field1' => 'value1']);
     $this->assertEquals('UPDATE tbl SET field1 = "value1"', QueryAssembler::stringify($statement));
     $statement->where(['NOT' => ['username' => null]]);
     $this->assertEquals('UPDATE tbl SET field1 = "value1" WHERE username IS NOT NULL', QueryAssembler::stringify($statement));
     $statement->set('username', 'john');
     $statement->andWhere((new LikePredicate())->setField('name')->setExpression(StartsWithExpression::create('Joh')));
     $this->assertEquals('UPDATE tbl SET field1 = "value1", username = "******" ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%"', QueryAssembler::stringify($statement));
     $statement->set('bob', null);
     $this->assertEquals('UPDATE tbl SET field1 = "value1", username = "******", bob = NULL ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%"', QueryAssembler::stringify($statement));
     $statement->orderBy(['username' => 'asc']);
     $this->assertEquals('UPDATE tbl SET field1 = "value1", username = "******", bob = NULL ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ORDER BY username ASC', QueryAssembler::stringify($statement));
     $statement->orderBy(['username' => 'desc', 'field1' => 'asc']);
     $this->assertEquals('UPDATE tbl SET field1 = "value1", username = "******", bob = NULL ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'ORDER BY username DESC, field1 ASC', QueryAssembler::stringify($statement));
     $statement->limit(2);
     $this->assertEquals('UPDATE tbl SET field1 = "value1", username = "******", bob = NULL ' . 'WHERE username IS NOT NULL AND name LIKE "Joh%" ' . 'ORDER BY username DESC, field1 ASC LIMIT 2', QueryAssembler::stringify($statement));
 }
 public function testBoolean()
 {
     $expression = new BooleanExpression();
     $expression->setValue(true);
     $this->assertEquals('true', QueryAssembler::stringify($expression));
     $expression->setValue(1);
     $this->assertEquals('true', QueryAssembler::stringify($expression));
     $expression->setValue('abc');
     $this->assertEquals('true', QueryAssembler::stringify($expression));
     $expression->setValue(false);
     $this->assertEquals('false', QueryAssembler::stringify($expression));
     $expression->setValue(0);
     $this->assertEquals('false', QueryAssembler::stringify($expression));
     $expression->setValue('');
     $this->assertEquals('false', QueryAssembler::stringify($expression));
     $stmt = QueryBuilder::update('tbl', ['field' => $expression]);
     $assembler = new QueryAssembler($stmt);
     $this->assertEquals('UPDATE tbl SET field = ?', $assembler->getQuery());
     $this->assertEquals([false], $assembler->getParameters());
 }
 /**
  * @param $table
  * @param $keyValues
  *
  * @return CqlUpdateStatement
  */
 public static function update($table, array $keyValues = null)
 {
     return parent::update($table, $keyValues);
 }