public function testListCatalogues() { $client = $this->createAuthenticatedClient(); $client->request('GET', '/api/catalogues?flat=true&fields=id,locale&packageId=' . $this->package->getId()); $this->assertEquals('200', $client->getResponse()->getStatusCode()); $response = json_decode($client->getResponse()->getContent()); $this->assertEquals($this->catalogue->getId(), $response->_embedded->catalogues[0]->id); $this->assertEquals('EN', $response->_embedded->catalogues[0]->locale); }
public function testPutNotExistingLocation() { $request = ['code' => 'test.code.4', 'frontend' => '1', 'backend' => '0', 'length' => '20', 'package' => ['id' => $this->package2->getId()], 'location' => ['id' => 5123]]; $this->client->request('PUT', '/api/codes/' . $this->code1->getId(), $request); $this->assertEquals(500, $this->client->getResponse()->getStatusCode()); $this->client->request('GET', '/api/codes/' . $this->code1->getId()); $response = json_decode($this->client->getResponse()->getContent()); $this->assertEquals($this->code1->getCode(), $response->code); $this->assertEquals($this->code1->getBackend(), $response->backend); $this->assertEquals($this->code1->getFrontend(), $response->frontend); $this->assertEquals($this->code1->getLength(), $response->length); $this->assertEquals($this->code1->getLocation()->getId(), $response->location->id); }
public function setUp() { $this->em = $this->db('ORM')->getOm(); $this->purgeDatabase(); $package = new Package(); $package->setName('Sulu'); $this->package1 = $package; $catalogue = new Catalogue(); $catalogue->setPackage($package); $catalogue->setIsDefault(false); $catalogue->setLocale('EN'); $this->catalogue1 = $catalogue; $this->em->persist($catalogue); $this->em->persist($package); $package = new Package(); $package->setName('Global'); $this->em->persist($package); $package = new Package(); $package->setName('Portal'); $this->em->persist($package); $this->em->flush(); }
public function setUp() { $this->em = $this->db('ORM')->getOm(); $this->purgeDatabase(); $package1 = new Package(); $package1->setName('Package1'); $this->em->persist($package1); $this->package1 = $package1; $package2 = new Package(); $package2->setName('Package2'); $this->em->persist($package2); $catalogue1 = new Catalogue(); $catalogue1->setLocale('de'); $catalogue1->setIsDefault(true); $catalogue1->setPackage($package1); $this->em->persist($catalogue1); $this->catalogue1 = $catalogue1; $catalogue2 = new Catalogue(); $catalogue2->setLocale('fr'); $catalogue2->setIsDefault(false); $catalogue2->setPackage($package1); $this->em->persist($catalogue2); $this->catalogue2 = $catalogue2; $catalogue3 = new Catalogue(); $catalogue3->setLocale('fr'); $catalogue3->setIsDefault(false); $catalogue3->setPackage($package2); $this->em->persist($catalogue3); $code1 = new Code(); $code1->setCode('code.1'); $code1->setLength(100); $code1->setBackend(1); $code1->setFrontend(1); $code1->setPackage($package1); $this->em->persist($code1); $this->code1 = $code1; $code2 = new Code(); $code2->setCode('code.2'); $code2->setLength(100); $code2->setBackend(1); $code2->setFrontend(1); $code2->setPackage($package1); $this->em->persist($code2); $code3 = new Code(); $code3->setCode('code.3'); $code3->setLength(100); $code3->setBackend(1); $code3->setFrontend(1); $code3->setPackage($package2); $this->em->persist($code3); $this->em->flush(); $t1_1 = new Translation(); $t1_1->setValue('Code 1.1'); $t1_1->setCatalogue($catalogue1); $t1_1->setCode($code1); $this->em->persist($t1_1); $this->catalogue1Translation1 = $t1_1; $t1_2 = new Translation(); $t1_2->setValue('Code 1.2'); $t1_2->setCatalogue($catalogue2); $t1_2->setCode($code1); $this->em->persist($t1_2); $this->catalogue1Translation2 = $t1_2; $t2_2 = new Translation(); $t2_2->setValue('Code 2.2'); $t2_2->setCatalogue($catalogue2); $t2_2->setCode($code2); $this->em->persist($t2_2); $this->em->flush(); }
/** * Imports a single file. * * @param Package $package the package to import the file into * @param LoaderInterface $loader * @param string $path The path to the file * @param string $filename The filename * @param bool $backend True to make the file available in the backend * @param bool $frontend True to make the file available in the frontend * @param bool $throw If true the methods throws exception if the a file cannot be found * * @throws \Exception * @throws \InvalidArgumentException * @throws \Symfony\Component\Translation\Exception\NotFoundResourceException */ private function importFile($package, $loader, $path, $filename, $backend = true, $frontend = false, $throw = false) { try { $this->output->writeln($filename); $filePath = $path ? $path . '/' . $filename : $filename; $file = $loader->load($filePath, $this->locale); // find the catalogue from this package matching the given locale $catalogue = null; $newCatalogue = true; foreach ($package->getCatalogues() as $packageCatalogue) { /** @var $packageCatalogue Catalogue */ if ($packageCatalogue->getLocale() === $this->locale) { $catalogue = $packageCatalogue; $newCatalogue = false; } } // if no catalogue is found create a new one if ($newCatalogue === true) { $catalogue = new Catalogue(); if ($this->locale === $this->defaultLocale) { $catalogue->setIsDefault(true); } else { $catalogue->setIsDefault(false); } $catalogue->setPackage($package); $package->addCatalogue($catalogue); $catalogue->setLocale($this->locale); $this->em->persist($catalogue); $this->em->flush(); } $allMessages = $file->all()['messages']; $progress = new ProgressHelper(); $progress->start($this->output, count($allMessages)); // loop through all translation units in the file foreach ($allMessages as $key => $message) { // Check if code is already existing in current catalogue if (!$newCatalogue && ($translate = $catalogue->findTranslation($key))) { // Update the old translate $translate->setValue($message); } else { // Create new code, if not already existing $code = $package->findCode($key); if (!$code) { $code = new Code(); $code->setPackage($package); $code->setCode($key); $code->setBackend($backend); $code->setFrontend($frontend); $this->em->persist($code); $this->em->flush(); } // Create new translate $translate = new Translation(); $translate->setCode($code); $translate->setValue($message); $translate->setCatalogue($catalogue); $this->em->persist($translate); } $progress->advance(); } $this->em->flush(); $progress->finish(); } catch (\InvalidArgumentException $e) { if ($e instanceof NotFoundResourceException) { if ($throw === true) { throw $e; } } else { throw $e; } } }
protected function processCatalogues($catalogues, Package $package) { /** @var EntityManager $em */ $em = $this->getDoctrine()->getManager(); $delete = function ($catalogue) use($package, $em) { $package->removeCatalogue($catalogue); $em->remove($catalogue); return true; }; $update = function ($catalogue, $entry) { return $this->updateCatalogue($catalogue, $entry); }; $add = function ($catalogue) use($package) { return $this->addCatalogue($package, $catalogue); }; $get = function ($catalogue) { return $catalogue->getId(); }; /** @var RestHelperInterface $restHelper */ $restHelper = $this->get('sulu_core.doctrine_rest_helper'); return $restHelper->processSubEntities($package->getCatalogues(), $catalogues, $get, $add, $update, $delete); }
public function setUp() { $this->em = $this->db('ORM')->getOm(); $this->purgeDatabase(); $this->export = new Export($this->em); // // Package - id 1 // ------------------------------- //Insert some data in the database $package = new Package(); $package->setName('Export'); $this->package1 = $package; $this->em->persist($package); $catalogue = new Catalogue(); $catalogue->setPackage($package); $catalogue->setIsDefault(false); $catalogue->setLocale('en'); $this->em->persist($catalogue); $location1 = new Location(); $location1->setName('Newsletter'); $location1->setPackage($package); $this->em->persist($location1); $location2 = new Location(); $location2->setName('Portals'); $location2->setPackage($package); $this->em->persist($location2); $code1 = new Code(); $code1->setPackage($package); $code1->setCode('export.easy'); $code1->setBackend(true); $code1->setFrontend(true); $code1->setLocation($location1); $this->em->persist($code1); $code2 = new Code(); $code2->setPackage($package); $code2->setCode('export.great'); $code2->setBackend(true); $code2->setFrontend(false); $code2->setLocation($location1); $this->em->persist($code2); $code3 = new Code(); $code3->setPackage($package); $code3->setCode('export.configurable'); $code3->setBackend(false); $code3->setFrontend(true); $code3->setLocation($location2); $this->em->persist($code3); $this->em->flush(); $translation1 = new Translation(); $translation1->setCatalogue($catalogue); $translation1->setCode($code1); $translation1->setValue('Exports made easy'); $this->em->persist($translation1); $translation2 = new Translation(); $translation2->setCatalogue($catalogue); $translation2->setCode($code2); $translation2->setValue('Exports are great'); $this->em->persist($translation2); $translation3 = new Translation(); $translation3->setCatalogue($catalogue); $translation3->setCode($code3); $translation3->setValue('Exports are configurable'); $this->em->persist($translation3); // // Package - id 2 // ------------------------------- //Insert some data in the database $package2 = new Package(); $package2->setName('Export2'); $this->em->persist($package2); $catalogue2 = new Catalogue(); $catalogue2->setPackage($package2); $catalogue2->setIsDefault(false); $catalogue2->setLocale('en'); $this->em->persist($catalogue2); $location21 = new Location(); $location21->setName('Newsletter'); $location21->setPackage($package2); $this->em->persist($location21); $location22 = new Location(); $location22->setName('Portals'); $location22->setPackage($package2); $this->em->persist($location22); $code21 = new Code(); $code21->setPackage($package2); $code21->setCode('export.easy2'); $code21->setBackend(true); $code21->setFrontend(true); $code21->setLocation($location21); $this->em->persist($code21); $code22 = new Code(); $code22->setPackage($package2); $code22->setCode('export.great2'); $code22->setBackend(true); $code22->setFrontend(false); $code22->setLocation($location21); $this->em->persist($code22); $code23 = new Code(); $code23->setPackage($package2); $code23->setCode('export.configurable2'); $code23->setBackend(false); $code23->setFrontend(true); $code23->setLocation($location22); $this->em->persist($code23); $this->em->flush(); $translation21 = new Translation(); $translation21->setCatalogue($catalogue2); $translation21->setCode($code21); $translation21->setValue('Exports made super easy'); $this->em->persist($translation21); $translation22 = new Translation(); $translation22->setCatalogue($catalogue2); $translation22->setCode($code22); $translation22->setValue('Exports are super great'); $this->em->persist($translation22); $translation23 = new Translation(); $translation23->setCatalogue($catalogue2); $translation23->setCode($code23); $translation23->setValue('Exports are super configurable'); $this->em->persist($translation23); $this->em->flush(); }