/**
  * @param Asserter $asserter    asserter
  * @param integer  $aliasNumber aliasNumber
  */
 public function createFromAsserter(Asserter $asserter, $aliasNumber)
 {
     $this->aliasNumber = $aliasNumber;
     $field = $asserter->getField();
     $this->location = QueryBuilder::getFieldLocation($field);
     $this->isNeedJoin = in_array($this->location, array('timeline', 'actionComponent', 'component'));
     $locationSql = $this->isNeedJoin ? $this->location . $aliasNumber : $this->location;
     $sqlDefinition = sprintf('%s.%s', $locationSql, $field);
     $parameterKey = str_replace('.', '_', $sqlDefinition) . uniqid();
     $this->parameters[$parameterKey] = $this->transformValue($asserter->getValue(), $field);
     $operator = $asserter->getOperator();
     switch ($operator) {
         case Asserter::ASSERTER_IN:
         case Asserter::ASSERTER_NOT_IN:
             $this->dql = $sqlDefinition . ' ' . $operator . ' (:' . $parameterKey . ')';
             break;
         default:
             $this->dql = $sqlDefinition . ' ' . $operator . ' :' . $parameterKey;
             break;
     }
 }
 public function testField()
 {
     $this->if($qb = new QueryBuilderTested())->exception(function () use($qb) {
         $qb->field('unknownfield');
     })->isInstanceOf('\\InvalidArgumentException')->hasMessage('Field "unknownfield" not supported, prefer: context, verb, createdAt, type, text, model, identifier')->and($resultExpected = new Asserter())->and($resultExpected->field('createdAt'))->object($qb->field('createdAt'))->isEqualTo($resultExpected);
 }
Example #3
0
 /**
  * @dataProvider getAsserters
  */
 public function testFromArray($method, $operator, $data)
 {
     $this->if($model = new TestedModel())->and($resultExpected = new TestedModel())->and($resultExpected->field('field'))->and($resultExpected->create($operator, $data))->and($arrayRepresentation = array('type' => 'expr', 'value' => array('field', $operator, $data)))->object($model->fromArray($arrayRepresentation))->isEqualTo($resultExpected);
 }