/** * @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; }