From e1f4f97c34ea757efe6cb34a4b50b9d5a4ff1e48 Mon Sep 17 00:00:00 2001 From: rem42 Date: Wed, 5 Jun 2024 10:15:09 +0200 Subject: [PATCH] feat: add cadomaestro package --- src/Entity/CadoMaestro/PrestashopPackage.php | 31 +++++++++++++ .../CadoMaestro/PrestashopPackageType.php | 13 ++++++ .../CadoMaestro/PrestashopPackageTypes.php | 15 +++++++ src/Entity/CadoMaestro/PrestashopPackages.php | 15 +++++++ src/Tools/ResourceMapping.php | 14 ++++++ tests/Api/PrestashopPackageApiTest.php | 44 +++++++++++++++++++ tests/Api/PrestashopPackageTypeApiTest.php | 44 +++++++++++++++++++ tests/fixtures/package.json | 30 +++++++++++++ tests/fixtures/package_type.json | 10 +++++ tests/fixtures/package_types.json | 10 +++++ tests/fixtures/packages.json | 10 +++++ 11 files changed, 236 insertions(+) create mode 100644 src/Entity/CadoMaestro/PrestashopPackage.php create mode 100644 src/Entity/CadoMaestro/PrestashopPackageType.php create mode 100644 src/Entity/CadoMaestro/PrestashopPackageTypes.php create mode 100644 src/Entity/CadoMaestro/PrestashopPackages.php create mode 100644 tests/Api/PrestashopPackageApiTest.php create mode 100644 tests/Api/PrestashopPackageTypeApiTest.php create mode 100644 tests/fixtures/package.json create mode 100644 tests/fixtures/package_type.json create mode 100644 tests/fixtures/package_types.json create mode 100644 tests/fixtures/packages.json diff --git a/src/Entity/CadoMaestro/PrestashopPackage.php b/src/Entity/CadoMaestro/PrestashopPackage.php new file mode 100644 index 0000000..532772f --- /dev/null +++ b/src/Entity/CadoMaestro/PrestashopPackage.php @@ -0,0 +1,31 @@ + */ + public array $name = []; + /** @var array */ + public array $picto = []; + public ?string $default = null; + public ?string $actif = null; + public ?string $dateAdd = null; + public ?string $dateUpd = null; + + public function addName(PrestashopItem $name): self + { + $this->name[] = $name; + return $this; + } + + public function addPicto(PrestashopItem $picto): self + { + $this->picto[] = $picto; + return $this; + } +} diff --git a/src/Entity/CadoMaestro/PrestashopPackageType.php b/src/Entity/CadoMaestro/PrestashopPackageType.php new file mode 100644 index 0000000..31b5970 --- /dev/null +++ b/src/Entity/CadoMaestro/PrestashopPackageType.php @@ -0,0 +1,13 @@ + */ + public array $packageTypes = []; + + public function addPackageType(PrestashopPackageType $packageType): self + { + $this->packageTypes[] = $packageType; + return $this; + } +} diff --git a/src/Entity/CadoMaestro/PrestashopPackages.php b/src/Entity/CadoMaestro/PrestashopPackages.php new file mode 100644 index 0000000..ec0a80f --- /dev/null +++ b/src/Entity/CadoMaestro/PrestashopPackages.php @@ -0,0 +1,15 @@ + */ + public array $packages = []; + + public function addPackage(PrestashopPackage $package): self + { + $this->packages[] = $package; + return $this; + } +} diff --git a/src/Tools/ResourceMapping.php b/src/Tools/ResourceMapping.php index 62bb656..de26018 100644 --- a/src/Tools/ResourceMapping.php +++ b/src/Tools/ResourceMapping.php @@ -2,6 +2,10 @@ namespace Scraper\ScraperPrestashop\Tools; +use Scraper\ScraperPrestashop\Entity\CadoMaestro\PrestashopPackage; +use Scraper\ScraperPrestashop\Entity\CadoMaestro\PrestashopPackages; +use Scraper\ScraperPrestashop\Entity\CadoMaestro\PrestashopPackageType; +use Scraper\ScraperPrestashop\Entity\CadoMaestro\PrestashopPackageTypes; use Scraper\ScraperPrestashop\Entity\PrestashopAddress; use Scraper\ScraperPrestashop\Entity\PrestashopAddresses; use Scraper\ScraperPrestashop\Entity\PrestashopCarrier; @@ -430,6 +434,16 @@ class ResourceMapping 'rem42_webservices/orders/invoices' => [ 'isFile' => true, ], + 'package_types' => [ + 'list' => PrestashopPackageTypes::class, + 'one' => PrestashopPackageType::class, + 'singular' => 'package_type', + ], + 'packages' => [ + 'list' => PrestashopPackages::class, + 'one' => PrestashopPackage::class, + 'singular' => 'package', + ], ]; public static function find(PrestashopRequest $prestashopRequest): string diff --git a/tests/Api/PrestashopPackageApiTest.php b/tests/Api/PrestashopPackageApiTest.php new file mode 100644 index 0000000..b71b159 --- /dev/null +++ b/tests/Api/PrestashopPackageApiTest.php @@ -0,0 +1,44 @@ +executeGetApi( + 'packages', + 1, + 200, + 'package.json' + ); + + $this->assertInstanceOf(PrestashopPackage::class, $result); + + $this->assertEquals(1, $result->id); + } + + public function testList(): void + { + /** @var PrestashopStockAvailables $result */ + $result = $this->executeGetApi( + 'packages', + null, + 200, + 'packages.json' + ); + + $this->assertInstanceOf(PrestashopPackages::class, $result); + $this->assertCount(2, $result->packages); + $this->assertInstanceOf(PrestashopPackage::class, $result->packages[0]); + } +} diff --git a/tests/Api/PrestashopPackageTypeApiTest.php b/tests/Api/PrestashopPackageTypeApiTest.php new file mode 100644 index 0000000..da895c0 --- /dev/null +++ b/tests/Api/PrestashopPackageTypeApiTest.php @@ -0,0 +1,44 @@ +executeGetApi( + 'package_types', + 1, + 200, + 'package_type.json' + ); + + $this->assertInstanceOf(PrestashopPackageType::class, $result); + + $this->assertEquals(1, $result->id); + } + + public function testList(): void + { + /** @var PrestashopStockAvailables $result */ + $result = $this->executeGetApi( + 'package_types', + null, + 200, + 'package_types.json' + ); + + $this->assertInstanceOf(PrestashopPackageTypes::class, $result); + $this->assertCount(2, $result->packageTypes); + $this->assertInstanceOf(PrestashopPackageType::class, $result->packageTypes[0]); + } +} diff --git a/tests/fixtures/package.json b/tests/fixtures/package.json new file mode 100644 index 0000000..43cd86b --- /dev/null +++ b/tests/fixtures/package.json @@ -0,0 +1,30 @@ +{ + "package": { + "id": 1, + "id_package_type": "1", + "name": [ + { + "id": "1", + "value": "Papier ananas jaune" + }, + { + "id": "8", + "value": "Ananas - Ananas" + } + ], + "picto": [ + { + "id": "1", + "value": "/img/nq_packaging/pictos/package1-ananas.jpg" + }, + { + "id": "8", + "value": "/img/nq_packaging/pictos/package1-Ananas.jpg" + } + ], + "default": "0", + "actif": "1", + "date_add": "2019-11-13 14:52:10", + "date_upd": "2023-05-04 10:49:36" + } +} diff --git a/tests/fixtures/package_type.json b/tests/fixtures/package_type.json new file mode 100644 index 0000000..290144a --- /dev/null +++ b/tests/fixtures/package_type.json @@ -0,0 +1,10 @@ +{ + "package_type": { + "id": 1, + "name": "Papier cadeau", + "sentence": "Choisissez votre papier cadeau", + "price": "3.950000", + "id_product": "11587", + "actif": "0" + } +} diff --git a/tests/fixtures/package_types.json b/tests/fixtures/package_types.json new file mode 100644 index 0000000..3d5318e --- /dev/null +++ b/tests/fixtures/package_types.json @@ -0,0 +1,10 @@ +{ + "package_types": [ + { + "id": 1 + }, + { + "id": 2 + } + ] +} diff --git a/tests/fixtures/packages.json b/tests/fixtures/packages.json new file mode 100644 index 0000000..35c00ef --- /dev/null +++ b/tests/fixtures/packages.json @@ -0,0 +1,10 @@ +{ + "packages": [ + { + "id": 1 + }, + { + "id": 2 + } + ] +}