/** * Test visitEqual. */ public function testVisitEqual() { $this->visitTest(Criteria::property('foo')->eq(10), function () { return $this->createQueryBuilder()->field('foo')->equals(10); }); $this->visitTest(Criteria::property('foo')->count()->eq(10), function () { return $this->createQueryBuilder()->field('foo')->size(10); }); $user = new User(UserId::next(), 'user', 20); $this->visitTest(Criteria::eq($user), function () use($user) { return $this->createQueryBuilder()->field('id')->equals($user->id()->toNative()); }); $this->visitTest(Criteria::property('id')->eq($user->id()), function () use($user) { return $this->createQueryBuilder()->field('id')->equals($user->id()->toNative()); }); $this->logicExceptionTest(Criteria::callback(function () { })->eq(10)); $this->logicExceptionTest(Criteria::property('foo')->eq(Criteria::property('bar'))); }
/** * @param QueryBuilder $queryBuilder1 * @param QueryBuilder $queryBuilder2 * * @return bool */ protected function hasSameOperator(QueryBuilder $queryBuilder1, QueryBuilder $queryBuilder2) { $intersection = new ArrayHashMap(\array_intersect_key($queryBuilder1->getQueryArray(), $queryBuilder2->getQueryArray())); return $intersection->keys()->findOne(Criteria::callback(function ($value) { return \strpos($value, '$') === 0; })) !== null; }
/** * Test callback. */ public function testCallback() { $this->given($criteria = Criteria::callback(function () { }))->then()->object($criteria)->isInstanceOf(Selector::class)->object($criteria->selector())->isInstanceOf(Callback::class); }