public function testApplyJoins() { $joins = ['emails' => null, 'phones', 'contacts' => [], 'accounts' => ['join' => 'accounts_field'], 'users' => ['join' => 'accounts.users_field', 'condition' => 'users.active = true', 'conditionType' => 'WITH'], 'products' => ['condition' => 'products.active = true']]; $qb = $this->getMockBuilder('Doctrine\\ORM\\QueryBuilder')->disableOriginalConstructor()->getMock(); $qb->expects($this->once())->method('distinct')->with(true); $qb->expects($this->once())->method('getRootAliases')->willReturn(['root_alias']); $qb->expects($this->at(2))->method('leftJoin')->with('root_alias.emails', 'emails'); $qb->expects($this->at(3))->method('leftJoin')->with('root_alias.phones', 'phones'); $qb->expects($this->at(4))->method('leftJoin')->with('root_alias.contacts', 'contacts'); $qb->expects($this->at(5))->method('leftJoin')->with('root_alias.accounts_field', 'accounts'); $qb->expects($this->at(6))->method('leftJoin')->with('accounts.users_field', 'users', 'WITH', 'users.active = true'); $qb->expects($this->at(7))->method('leftJoin')->with('root_alias.products', 'products', 'WITH', 'products.active = true'); QueryUtils::applyJoins($qb, $joins); }