diff --git a/core/lib/Thelia/Controller/Admin/ImportController.php b/core/lib/Thelia/Controller/Admin/ImportController.php index a879b308a..674b46306 100644 --- a/core/lib/Thelia/Controller/Admin/ImportController.php +++ b/core/lib/Thelia/Controller/Admin/ImportController.php @@ -197,7 +197,7 @@ class ImportController extends BaseAdminController return $content; } - protected function retrieveFormatTools( + public function retrieveFormatTools( $fileName, ImportHandler $handler, FormatterManager $formatterManager, @@ -250,7 +250,7 @@ class ImportController extends BaseAdminController ); } - protected function checkFileExtension($fileName, $uploadFormat) + public function checkFileExtension($fileName, $uploadFormat) { $splitName = explode(".", $fileName); $ext = ""; @@ -271,7 +271,7 @@ class ImportController extends BaseAdminController } } - protected function processImport( + public function processImport( $content, ImportHandler $handler, AbstractFormatter $formatter = null, diff --git a/core/lib/Thelia/ImportExport/Import/Type/ProductStockImport.php b/core/lib/Thelia/ImportExport/Import/Type/ProductStockImport.php index 44bc7dfc9..fdc0e20a4 100644 --- a/core/lib/Thelia/ImportExport/Import/Type/ProductStockImport.php +++ b/core/lib/Thelia/ImportExport/Import/Type/ProductStockImport.php @@ -19,7 +19,7 @@ use Thelia\ImportExport\Import\ImportHandler; use Thelia\Model\ProductSaleElementsQuery; /** - * Class ProductStockImport + * Class ImportTestBase * @package Thelia\ImportExport\Import * @author Benjamin Perche */ diff --git a/core/lib/Thelia/Tests/FileFormat/Formatting/Formatter/XMLFormatterTest.php b/core/lib/Thelia/Tests/FileFormat/Formatting/Formatter/XMLFormatterTest.php index 3823c0f62..85bcbf2a5 100644 --- a/core/lib/Thelia/Tests/FileFormat/Formatting/Formatter/XMLFormatterTest.php +++ b/core/lib/Thelia/Tests/FileFormat/Formatting/Formatter/XMLFormatterTest.php @@ -152,8 +152,6 @@ class XMLFormatterTest extends \PHPUnit_Framework_TestCase $data = $this->formatter->decode($raw); - var_dump($data->getData()); - $this->assertEquals(["foo" => "bar"], $data->getData()); } diff --git a/core/lib/Thelia/Tests/ImportExport/Import/ImportTestBase.php b/core/lib/Thelia/Tests/ImportExport/Import/ImportTestBase.php new file mode 100644 index 000000000..1f317f528 --- /dev/null +++ b/core/lib/Thelia/Tests/ImportExport/Import/ImportTestBase.php @@ -0,0 +1,93 @@ + + */ +class ImportTestBase extends \PHPUnit_Framework_TestCase +{ + protected $import; + + protected $container; + protected $session; + + /** @var ImportController */ + protected $controller; + + public function getContainer() + { + $container = new \Symfony\Component\DependencyInjection\ContainerBuilder(); + $container->set("thelia.translator", new Translator(new Container())); + + $dispatcher = $this->getMock("Symfony\Component\EventDispatcher\EventDispatcherInterface"); + + $container->set("event_dispatcher", $dispatcher); + + $archiveBuilderManager = (new ArchiveBuilderManager("dev")) + ->add(new ZipArchiveBuilder()) + ->add(new TarArchiveBuilder()) + ->add(new TarBz2ArchiveBuilder()) + ->add(new TarGzArchiveBuilder()) + ; + $container->set("thelia.manager.archive_builder_manager", $archiveBuilderManager); + + $formatterManager = (new FormatterManager()) + ->add(new XMLFormatter()) + ->add(new JsonFormatter()) + ; + + $container->set("thelia.manager.formatter_manager", $archiveBuilderManager); + + $request = new Request(); + $request->setSession($this->session); + + $container->set("request", $request); + + return $container; + } + + public function getSession() + { + return new Session(); + } + + public function setUp() + { + + Tlog::getNewInstance(); + + $this->session = $this->getSession(); + $this->container = $this->getContainer(); + $this->controller = new ImportController(); + $this->controller->setContainer($this->container); + + } + +} \ No newline at end of file diff --git a/core/lib/Thelia/Tests/ImportExport/Import/ProductStockImportTest.php b/core/lib/Thelia/Tests/ImportExport/Import/ProductStockImportTest.php new file mode 100644 index 000000000..eaa6e19aa --- /dev/null +++ b/core/lib/Thelia/Tests/ImportExport/Import/ProductStockImportTest.php @@ -0,0 +1,83 @@ + + * + * This class tests the import controller too + */ +class ProductStockImportTest extends ImportTestBase +{ + public function setUp() + { + parent::setUp(); + + $this->import = new ProductStockImport($this->container); + } + + public function testUpdateStock() + { + $query = ProductSaleElementsQuery::create() + ->addAscendingOrderByColumn('RAND()') + ->limit(3) + ->find() + ; + + $jsonData = []; + $data = []; + + /** @var \Thelia\Model\ProductSaleElements $pse */ + foreach ($query as $pse) { + + $entry = []; + + $entry["ref"] = $pse->getRef(); + /** + * Be sure to get a different value. + */ + while ($pse->getQuantity() === $entry["stock"] = rand(0, 1000)); + + $data[$pse->getId()] = $entry["stock"]; + + $jsonData[] = $entry; + } + + $jsonString = json_encode($jsonData); + + $this->assertEquals( + "Import successfully done", + $this->controller->processImport( + $jsonString, + $this->import, + new JsonFormatter(), + null + ) + ); + + $query = ProductSaleElementsQuery::create()->findPks(array_keys($data)); + + /** @var \Thelia\Model\ProductSaleElements $entry */ + foreach ($query as $entry) { + $this->assertEquals( + $data[$entry->getId()], + $entry->getQuantity() + ); + } + } +} \ No newline at end of file