/**
  * @dataProvider hasAssignmentsProvider
  */
 public function testHasAssignments($records, $expectedResult)
 {
     $actualSql = '';
     $statement = $this->createFetchStatementMock($records);
     $this->getDriverConnectionMock($this->em)->expects($this->any())->method('prepare')->will($this->returnCallback(function ($prepareString) use(&$statement, &$actualSql) {
         $actualSql = $prepareString;
         return $statement;
     }));
     $checker = new OwnerAssignmentChecker();
     $actualResult = $checker->hasAssignments(1, 'Oro\\Bundle\\OrganizationBundle\\Tests\\Unit\\Ownership\\Fixture\\Entity\\TestEntity', 'owner', $this->em);
     $expectedSql = 'SELECT t0_.id AS id_0' . ' FROM TestEntity t1_' . ' INNER JOIN TestOwnerEntity t0_ ON t1_.owner_id = t0_.id' . ' WHERE t0_.id = ? LIMIT 1';
     $this->assertEquals($expectedSql, $actualSql);
     $this->assertEquals($expectedResult, $actualResult);
 }
 /**
  * {@inheritdoc}
  */
 protected function getHasAssignmentsQueryBuilder($ownerId, $entityClassName, $ownerFieldName, EntityManager $em)
 {
     $qb = parent::getHasAssignmentsQueryBuilder($ownerId, $entityClassName, $ownerFieldName, $em);
     // if a default calendar (its name is NULL) has no events assume that it can be deleted
     // without any confirmation and as result we can remove such calendar from assignment list
     $qb->andWhere($qb->expr()->orX($qb->expr()->isNotNull('entity.name'), $qb->expr()->andX($qb->expr()->isNull('entity.name'), $qb->expr()->exists($em->getRepository('OroCalendarBundle:CalendarEvent')->createQueryBuilder('calendarEvents')->innerJoin('calendarEvents.calendar', 'calendar')->where('calendar.id = entity.id')))));
     return $qb;
 }