/** * @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); }
/** * @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); }