/**
  * @dataProvider queryBuilderDataProvider
  * @param string $type
  */
 public function testGetMarketingListEntitiesQueryBuilder($type)
 {
     $marketingList = $this->getMarketingList($type);
     $from = $this->getMockBuilder('Doctrine\\ORM\\Query\\Expr\\From')->disableOriginalConstructor()->getMock();
     $from->expects($this->once())->method('getAlias')->will($this->returnValue('alias'));
     $queryBuilder = $this->assertEntitiesQueryBuilder($marketingList, 'alias');
     $queryBuilder->expects($this->once())->method('getDQLPart')->with('from')->will($this->returnValue([$from]));
     $this->assertInstanceOf('Doctrine\\ORM\\QueryBuilder', $this->provider->getMarketingListEntitiesQueryBuilder($marketingList));
 }
 /**
  * @param StaticSegment $staticSegment
  *
  * @throws \InvalidArgumentException
  * @return QueryBuilder
  */
 protected function getIteratorQueryBuilder(StaticSegment $staticSegment)
 {
     $marketingList = $staticSegment->getMarketingList();
     $qb = $this->marketingListProvider->getMarketingListEntitiesQueryBuilder($marketingList, MarketingListProvider::FULL_ENTITIES_MIXIN);
     $this->prepareIteratorPart($qb);
     /** @var From[] $from */
     $from = $qb->getDQLPart('from');
     $entityAlias = $from[0]->getAlias();
     $parts = $this->formatter->extractNamePartsPaths($marketingList->getEntity(), $entityAlias);
     $qb->resetDQLPart('select');
     if (isset($parts['first_name'])) {
         $qb->addSelect(sprintf('%s AS %s', $parts['first_name'], MemberSyncDataConverter::FIRST_NAME_KEY));
     }
     if (isset($parts['last_name'])) {
         $qb->addSelect(sprintf('%s AS %s', $parts['last_name'], MemberSyncDataConverter::LAST_NAME_KEY));
     }
     $this->marketingListQueryBuilderAdapter->prepareMarketingListEntities($staticSegment, $qb);
     return $qb;
 }
 public function testGetMarketingListEntitiesQueryBuilderManual()
 {
     $marketingList = $this->getMarketingList(MarketingListType::TYPE_MANUAL);
     $this->assertNull($this->provider->getMarketingListEntitiesQueryBuilder($marketingList));
 }