/** * Возвращает рандомную сущность из всех возможных * * @param EntityManager $em менеджер сущностей * @param string $entityFullClassName наименование сущности, которое поймет менеджер * * @throws \Doctrine\ORM\ORMException выкидывается, если не была найдена ни одна сущность * @return object сущность полученная из БД */ public static function getOneRandomEntity(EntityManager $em, $entityFullClassName) { $primaryKeyData = EntityHelper::getOneRandomEntityId($em, $entityFullClassName); // Сделал исключение, т.к. вызывая этот метод клиент должен быть уверен в том, что вернется какая-то сущность if ($primaryKeyData === null) { throw new ORMException("Случайная сущность {$entityFullClassName} не была найдена, скорее всего таблица пустая"); } if (is_array($primaryKeyData)) { $entity = $em->getRepository($entityFullClassName)->findOneBy($primaryKeyData); } else { $entity = $em->getRepository($entityFullClassName)->find($primaryKeyData); } return $entity; }
public function testGetOneRandomEntityIdReturnNullIfNoDataInDB() { $this->assertNull(EntityHelper::getOneRandomEntityId($this->em, $this->authorFullClassName)); }
public function testPatch() { if ($this->entityForPatch === null) { throw new \Exception("Необходимо задать entityForPatch"); } $setUpDataToChange = function ($object) { $object = (object) array_merge((array) $object, (array) $this->convertEntityToObj($this->entityForPatch, [Action::GROUP_PATCH])); return $object; }; $assertResponseData = function ($responseData) { $this->assertResponseData($responseData); $this->em->clear(); $entity = $this->em->getRepository(self::$shortEntityName)->find($responseData->data->{$this->getEntityPKFieldName()}); $this->assertNotNull($entity); $this->assertTwoObjects($this->convertEntityToObj($entity, [Action::GROUP_PATCH]), $responseData->data); }; $entityId = EntityHelper::getOneRandomEntityId(static::getEntityManager(), self::$shortEntityName); $action = (new PatchAction())->setEntityPKValue($entityId)->setDataAltererCallback($setUpDataToChange)->addResponseDataAsserterCallback($assertResponseData); $this->initAction($action); $action->run(); }