Exemplo n.º 1
0
 public function testDynamicApply()
 {
     $dynamicSegmentStub = new Segment();
     $dynamicSegmentStub->setType(new SegmentType(SegmentType::TYPE_DYNAMIC));
     $dynamicSegmentStub->setEntity('Oro\\Bundle\\SegmentBundle\\Tests\\Unit\\Stub\\Entity\\CmsUser');
     $filterData = ['value' => $dynamicSegmentStub];
     $em = $this->getEM();
     $qb = $em->createQueryBuilder()->select(['t1.name'])->from('OroSegmentBundle:CmsUser', 't1');
     $queryBuilder = new QueryBuilder($em);
     $queryBuilder->select(['ts1.id'])->from('OroSegmentBundle:CmsUser', 'ts1')->andWhere('ts1.name LIKE :param1')->setParameter('param1', self::TEST_PARAM_VALUE);
     $ds = new OrmFilterDatasourceAdapter($qb);
     $this->dynamicSegmentQueryBuilder->expects(static::once())->method('getQueryBuilder')->with($dynamicSegmentStub)->will(static::returnValue($queryBuilder));
     $this->filter->init('someName', [FilterUtility::DATA_NAME_KEY => self::TEST_FIELD_NAME]);
     $this->filter->apply($ds, $filterData);
     $expectedResult = ['SELECT t1.name FROM OroSegmentBundle:CmsUser t1', 'WHERE EXISTS(SELECT ts1.id FROM OroSegmentBundle:CmsUser ts1' . ' WHERE ts1.name LIKE :param1 AND ts1.id = t1.id)'];
     $expectedResult = implode(' ', $expectedResult);
     static::assertEquals($expectedResult, $ds->getQueryBuilder()->getDQL());
     $params = $ds->getQueryBuilder()->getParameters();
     static::assertCount(1, $params, 'Should pass params to main query builder');
     static::assertEquals(self::TEST_PARAM_VALUE, $params[0]->getValue());
 }
Exemplo n.º 2
0
 public function testDynamicApply()
 {
     $dynamicSegmentStub = new Segment();
     $dynamicSegmentStub->setType(new SegmentType(SegmentType::TYPE_DYNAMIC));
     $filterData = ['value' => $dynamicSegmentStub];
     $subquery = 'SELECT ts1.id FROM OroSegmentBundle:CmsUser ts1 WHERE ts1.name LIKE :param1';
     $em = $this->getTestEntityManager();
     $qb = new QueryBuilder($em);
     $qb->select(['t1.name'])->from('OroSegmentBundle:CmsUser', 't1');
     $ds = new OrmFilterDatasourceAdapter($qb);
     $query = new Query($em);
     $query->setDQL($subquery);
     $query->setParameter('param1', self::TEST_PARAM_VALUE);
     $this->dynamicSegmentQueryBuilder->expects($this->once())->method('build')->with($dynamicSegmentStub)->will($this->returnValue($query));
     $this->filter->init('someName', [FilterUtility::DATA_NAME_KEY => self::TEST_FIELD_NAME]);
     $this->filter->apply($ds, $filterData);
     $expectedResult = ['SELECT t1.name FROM OroSegmentBundle:CmsUser t1', 'WHERE t1.id IN(SELECT ts1.id FROM OroSegmentBundle:CmsUser ts1 WHERE ts1.name LIKE :param1)'];
     $expectedResult = implode(' ', $expectedResult);
     $this->assertEquals($expectedResult, $ds->getQueryBuilder()->getDQL());
     $params = $ds->getQueryBuilder()->getParameters();
     $this->assertCount(1, $params, 'Should pass params to main query builder');
     $this->assertEquals(self::TEST_PARAM_VALUE, $params[0]->getValue());
 }