public function testRun()
 {
     $app = new Application(self::$kernel);
     $app->addCommands([new LoadFixturesCommand()]);
     $command = $app->find('amstaffix:fixtures:load');
     $commandTester = new CommandTester($command);
     $commandTester->execute(['command' => $command->getName(), 'dir-with-fixtures' => $this->dirWithFixtures], ['interactive' => false]);
     $this->assertEquals(4, EntityHelper::getCountOfEntities($this->em, 'CoreTestFixture\\TestBundle\\Entity\\Article'));
     $this->assertEquals(3, EntityHelper::getCountOfEntities($this->em, 'CoreTestFixture\\TestBundle\\Entity\\Author'));
     $this->assertEquals(8, EntityHelper::getCountOfEntities($this->em, 'CoreTestFixture\\TestBundle\\Entity\\Book'));
 }
 /**
  * Метод осуществляет выборку сущностей из менеджера сущностей, создает контент и записывает в файл
  *
  * @param \Doctrine\ORM\EntityManager $em
  * @param string $dirForGeneratedFixtures директория, в которой будут созданы файлы с фикстурами
  * @param string $className полное имя класса для создания фикстур
  * @param int $entitiesPerClass кол-во сущностей на один класс
  * @param int $entitiesPerFile кол-во сущностей в одном файле
  */
 private function generateFixtureForEntityClass(EntityManager $em, $dirForGeneratedFixtures, $className, $entitiesPerClass = self::DEFAULT_MAX_ENTITIES_COUNT, $entitiesPerFile = self::DEFAULT_ENTITIES_PER_FILE)
 {
     $metadata = $em->getClassMetadata($className);
     $countEntitiesInDB = EntityHelper::getCountOfEntities($em, $className);
     $howManyEntitiesShouldBe = min($entitiesPerClass, $countEntitiesInDB);
     $countOfFiles = ceil($howManyEntitiesShouldBe / $entitiesPerFile);
     $shortClassName = Helper::getClassNameWithoutNamespace($className);
     for ($fileNo = 0; $fileNo < $countOfFiles; $fileNo++) {
         $entities = $em->getRepository($className)->findBy([], null, $entitiesPerFile, $entitiesPerFile * $fileNo);
         $content = "{$className}:\n";
         foreach ($entities as &$entity) {
             $id = $metadata->getSingleIdReflectionProperty()->getValue($entity);
             $content .= "  entity_{$id}:\n";
             $fieldNames = $metadata->getFieldNames();
             foreach ($fieldNames as $fieldName) {
                 $fieldValue = $metadata->getFieldValue($entity, $fieldName);
                 if ($fieldValue instanceof \DateTime) {
                     $fieldValue = "'" . $fieldValue->format(self::DATETIME_FORMAT) . "'";
                 } elseif (is_string($fieldValue)) {
                     $fieldValue = str_replace("\n", '', $fieldValue);
                     /*
                      * Этот кусок написан из-за того, что кавычки (" и ') являются частью YAML, и неожиданное их появление
                      * в строковых значение рушит парсер, так что там где встречаются кавычки, мы их обрамляем на "противоположенные", т.е.
                      * если есть ", то обрамим в ';
                      * если есть ', то обрамим в ";
                      *
                      * насчет появления обоих этих кавычек пока ничего сказать не могу...
                      */
                     if (strpos($fieldValue, '"') !== false) {
                         $fieldValue = "'{$fieldValue}'";
                     } elseif (strpos($fieldValue, "'") !== false) {
                         $fieldValue = sprintf('"%s"', $fieldValue);
                     }
                     /*
                      * Вот я не знаю что это за знак такой ... но вроде так работает...
                      */
                     $fieldValue = str_replace("\n", ' ', $fieldValue);
                 }
                 /*
                  * Т.к. true и false не записываются в текстовой файл, то для них сделаем такую штуку.
                  */
                 if (is_bool($fieldValue)) {
                     $fieldValue = $fieldValue ? 'true' : 'false';
                 }
                 $content .= "    {$fieldName}: {$fieldValue}\n";
             }
         }
         $filePath = $dirForGeneratedFixtures . "/{$shortClassName}_{$fileNo}." . self::FILE_EXTENSION;
         file_put_contents($filePath, $content);
         $em->clear();
     }
 }
 public function testGetAllWithSimpleNeqFilter()
 {
     $id = EntityHelper::getOneRandomEntityId($this->em, self::$shortEntityName);
     $requestCreator = (new ExtJSGetAllRequestCreator())->addFilter(new Filter($this->getEntityPKFieldName(), $id, Filter::OP_NEQ))->setLimit(999)->setPage(1)->setStart(0);
     $responseDataAsserter = function ($responseData) use($id) {
         $this->assertResponseData($responseData);
         $this->assertResponseObjectForSuccess($responseData, true);
         /* Приходится проверять именно так, ибо когда в БД всего одна запись, то и придет пустой ответ */
         if (isset($responseData->data)) {
             $this->assertTrue(is_array($responseData->data), "Данные в свойства 'data' должны являться массивом ");
             $founded = false;
             foreach ($responseData->data as $entityAsObj) {
                 if ($entityAsObj->{$this->getEntityPKFieldName()} == $id) {
                     $founded = true;
                     break;
                 }
             }
             $this->assertFalse($founded, "Выбраной заренее сущности, не должно было быть найдено");
         } else {
             $this->assertCount(1, EntityHelper::getCountOfEntities($this->em, self::$shortEntityName), "Если уж и пришел пустой ответ, то только в случае, когда кол-во записей в БД = 1");
         }
     };
     $action = (new GetAllAction())->setRequestParams($requestCreator->asArray())->addResponseDataAsserterCallback($responseDataAsserter);
     $this->initAction($action);
     $action->run();
 }
 public function testGetCountOfEntities()
 {
     $this->assertEquals(4, EntityHelper::getCountOfEntities($this->em, $this->clientFullClassName));
     $this->assertEquals(0, EntityHelper::getCountOfEntities($this->em, $this->authorFullClassName));
 }
 private function getCountOfEntities($className)
 {
     return EntityHelper::getCountOfEntities($this->em, $className);
 }