Skip to content

Commit

Permalink
add missing jsonSerialize method to Image class
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas-Masson-Wizaplace committed May 23, 2019
1 parent 48abaae commit 22d62d7
Show file tree
Hide file tree
Showing 15 changed files with 91 additions and 51 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Next version

- Update `Wizaplace\SDK\Image\ImageService::getImageLink()` use the final image url instead of redirection
- Added `Wizaplace\SDK\Image\Image::` `getUrl()`, `getUrls()` and `jsonSerialize()` methods

## 1.57.0

Expand Down
25 changes: 13 additions & 12 deletions src/Catalog/DeclinationOption.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,33 @@
* @copyright Copyright (c) Wizacha
* @license Proprietary
*/
declare(strict_types = 1);
declare(strict_types=1);

namespace Wizaplace\SDK\Catalog;

use Wizaplace\SDK\Image\Image;

/**
* Class DeclinationOption
* @package Wizaplace\SDK\Catalog
* Class DeclinationOption.
*/
final class DeclinationOption implements \JsonSerializable
{
/** @var integer */
/** @var int */
private $id;

/** @var string */
private $name;

/** @var integer */
/** @var int */
private $variantId;

/** @var string */
private $variantName;

/** @var null|Image */
/** @var Image|null */
private $image;

/** @var integer */
/** @var int */
private $position;

/**
Expand Down Expand Up @@ -101,12 +100,14 @@ public function getPosition(): ?int
*/
public function jsonSerialize(): array
{
$image = $this->getImage();

return [
"id" => $this->getId(),
"name" => $this->getName(),
"variantId" => $this->getVariantId(),
"variantName" => $this->getVariantName(),
'image' => $this->getImage() ? ['id' => $this->getImage()->getId()] : null,
'id' => $this->getId(),
'name' => $this->getName(),
'variantId' => $this->getVariantId(),
'variantName' => $this->getVariantName(),
'image' => $image ? $image->jsonSerialize() : null,
'position' => $this->getPosition(),
];
}
Expand Down
11 changes: 6 additions & 5 deletions src/Catalog/OptionVariant.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,14 @@
* @copyright Copyright (c) Wizacha
* @license Proprietary
*/
declare(strict_types = 1);
declare(strict_types=1);

namespace Wizaplace\SDK\Catalog;

use Wizaplace\SDK\Image\Image;

/**
* Class OptionVariant
* @package Wizaplace\SDK\Catalog
* Class OptionVariant.
*/
final class OptionVariant implements \JsonSerializable
{
Expand All @@ -21,7 +20,7 @@ final class OptionVariant implements \JsonSerializable
/** @var string */
private $name;

/** @var null|Image */
/** @var Image|null */
private $image;

/**
Expand Down Expand Up @@ -65,10 +64,12 @@ public function getImage(): ?Image
*/
public function jsonSerialize(): array
{
$image = $this->getImage();

return [
'id' => $this->getId(),
'name' => $this->getName(),
'image' => $this->getImage() ? ['id' => $this->getImage()->getId()] : null,
'image' => $image ? $image->jsonSerialize() : null,
];
}
}
30 changes: 23 additions & 7 deletions src/Image/Image.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ final class Image
private $id;

/** @var UriInterface[] */
private $url;
private $urls;

/**
* @internal
Expand All @@ -31,8 +31,8 @@ public function __construct(array $data)
{
$this->id = $data['id'];

foreach ($data['url'] as $key => $val) {
$this->url[$key] = new Uri($val);
foreach ($data['urls'] as $key => $url) {
$this->urls[$key] = new Uri($url);
}
}

Expand All @@ -49,17 +49,33 @@ public function getId(): int
*/
public function getUrls(): array
{
return $this->url;
return $this->urls;
}

public function getUrl(string $size = 'original'): UriInterface
{
if (false === \array_key_exists($size, $this->url)) {
if (false === \array_key_exists($size, $this->urls)) {
throw new NotFound(
"Invalid size '$size'. Available sizes : ".implode(', ', array_keys($this->url))
"Invalid size '$size'. Available sizes : ".implode(', ', array_keys($this->urls))
);
}

return $this->url[$size];
return $this->urls[$size];
}

/**
* @return array
*/
public function jsonSerialize(): array
{
return [
'id' => $this->id,
'urls' => array_map(
function ($uri) {
return (string) $uri;
},
$this->urls
),
];
}
}
2 changes: 1 addition & 1 deletion tests/Basket/BasketServiceTest/testFullCheckout.yml
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@
X-Debug-Token: b0bd06
X-Debug-Token-Link: 'http://wizaplace.loc/_profiler/b0bd06'
X-Request-Id: f88d8d80566308ac8b812af7b2e1a566
body: '[{"id":1,"name":"CB","description":"Carte Bleue","position":0,"image":{"id":3,"url":{"original":"\/\/wizaplace.loc\/images\/payment\/0\/cc_msyt-98.png","large":"https:\/\/unsplash.it\/1900\/?image=130","medium":"https:\/\/unsplash.it\/900\/?image=130","small":"https:\/\/unsplash.it\/200\/?image=130"}},"type":"manual"},{"id":2,"name":"Visa","description":"Carte Visa","position":1,"image":null,"type":"manual"},{"id":3,"name":"MasterCard","description":"Carte MasterCard","position":2,"image":null,"type":"manual"},{"id":4,"name":"Paiement \u00e0 \u00e9ch\u00e9ance","description":"","position":3,"image":null,"type":"payment-deferment"}]'
body: '[{"id":1,"name":"CB","description":"Carte Bleue","position":0,"image":{"id":3,"urls":{"original":"\/\/wizaplace.loc\/images\/payment\/0\/cc_msyt-98.png","large":"https:\/\/unsplash.it\/1900\/?image=130","medium":"https:\/\/unsplash.it\/900\/?image=130","small":"https:\/\/unsplash.it\/200\/?image=130"}},"type":"manual"},{"id":2,"name":"Visa","description":"Carte Visa","position":1,"image":null,"type":"manual"},{"id":3,"name":"MasterCard","description":"Carte MasterCard","position":2,"image":null,"type":"manual"},{"id":4,"name":"Paiement \u00e0 \u00e9ch\u00e9ance","description":"","position":3,"image":null,"type":"payment-deferment"}]'
-
request:
method: POST
Expand Down
18 changes: 9 additions & 9 deletions tests/Catalog/CatalogServiceTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -403,7 +403,7 @@ public function testGetProductWithComplexAttributes()
'slug' => 'rouge',
'image' => [
'id' => 5,
'url' => [
'urls' => [
"original" => "//wizaplace.loc/images/feature_variant/0/logo-url_5an0-xy.jpg",
"large" => "https://unsplash.it/1900/?image=251",
"medium" => "https://unsplash.it/900/?image=251",
Expand Down Expand Up @@ -457,7 +457,7 @@ public function testGetProductWithComplexAttributes()
'slug' => 'orange',
'image' => [
'id' => 6,
'url' => [
'urls' => [
"original" => "//wizaplace.loc/images/feature_variant/0/logo-url_p6x7-z6.jpg",
"large" => "https://unsplash.it/1900/?image=1070",
"medium" => "https://unsplash.it/900/?image=1070",
Expand All @@ -483,7 +483,7 @@ public function testGetProductWithComplexAttributes()
'slug' => '44',
'image' => [
'id' => 7,
'url' => [
'urls' => [
"original" => "//wizaplace.loc/images/feature_variant/0/logo-url_06da-di.jpg",
"large" => "https://unsplash.it/1900/?image=512",
"medium" => "https://unsplash.it/900/?image=512",
Expand Down Expand Up @@ -1142,11 +1142,11 @@ public function testGetAttributeVariants()
'slug' => 'bleu',
'image' => [
'id' => 4,
"url" => [
"original" => "//wizaplace.loc/images/feature_variant/0/logo-url_w2j4-ol.jpg",
"large" => "https://unsplash.it/1900/?image=685",
"medium" => "https://unsplash.it/900/?image=685",
"small" => "https://unsplash.it/200/?image=685",
'urls' => [
'original' => "//wizaplace.loc/images/feature_variant/0/logo-url_w2j4-ol.jpg",
'large' => "https://unsplash.it/1900/?image=685",
'medium' => "https://unsplash.it/900/?image=685",
'small' => "https://unsplash.it/200/?image=685",
],
],
'description' => '',
Expand All @@ -1166,7 +1166,7 @@ public function testGetAttributeVariants()
'slug' => 'rouge',
'image' => [
'id' => 5,
'url' => [
'urls' => [
"original" => "//wizaplace.loc/images/feature_variant/0/logo-url_5an0-xy.jpg",
"large" => "https://unsplash.it/1900/?image=251",
"medium" => "https://unsplash.it/900/?image=251",
Expand Down
6 changes: 3 additions & 3 deletions tests/Catalog/CatalogServiceTest/testGetAllProducts.yml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@
X-Debug-Token: 30c99a
X-Debug-Token-Link: 'http://wizaplace.loc/_profiler/30c99a'
X-Request-Id: 0ef147bf7ad600366e9d955bbafd9628
body: '{"id":3,"attributeId":1,"name":"Rouge","slug":"rouge","description":"","image":{"id":5,"url":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_5an0-xy.jpg","large":"https:\/\/unsplash.it\/1900\/?image=251","medium":"https:\/\/unsplash.it\/900\/?image=251","small":"https:\/\/unsplash.it\/200\/?image=251"}},"seoData":{"title":"","description":""}}'
body: '{"id":3,"attributeId":1,"name":"Rouge","slug":"rouge","description":"","image":{"id":5,"urls":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_5an0-xy.jpg","large":"https:\/\/unsplash.it\/1900\/?image=251","medium":"https:\/\/unsplash.it\/900\/?image=251","small":"https:\/\/unsplash.it\/200\/?image=251"}},"seoData":{"title":"","description":""}}'
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,4 @@
X-Debug-Token: 0d1549
X-Debug-Token-Link: 'http://wizaplace.loc/_profiler/0d1549'
X-Request-Id: 8944828c59a75c92a6067d3174685bc2
body: '[{"id":1,"attributeId":1,"name":"Bleu","slug":"bleu","description":"","image":{"id":4,"url":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_w2j4-ol.jpg","large":"https:\/\/unsplash.it\/1900\/?image=685","medium":"https:\/\/unsplash.it\/900\/?image=685","small":"https:\/\/unsplash.it\/200\/?image=685"}},"seoData":{"title":"","description":""}},{"id":2,"attributeId":1,"name":"Blanc","slug":"blanc","description":"","image":null,"seoData":{"title":"","description":""}},{"id":3,"attributeId":1,"name":"Rouge","slug":"rouge","description":"","image":{"id":5,"url":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_5an0-xy.jpg","large":"https:\/\/unsplash.it\/1900\/?image=251","medium":"https:\/\/unsplash.it\/900\/?image=251","small":"https:\/\/unsplash.it\/200\/?image=251"}},"seoData":{"title":"","description":""}}]'
body: '[{"id":1,"attributeId":1,"name":"Bleu","slug":"bleu","description":"","image":{"id":4,"urls":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_w2j4-ol.jpg","large":"https:\/\/unsplash.it\/1900\/?image=685","medium":"https:\/\/unsplash.it\/900\/?image=685","small":"https:\/\/unsplash.it\/200\/?image=685"}},"seoData":{"title":"","description":""}},{"id":2,"attributeId":1,"name":"Blanc","slug":"blanc","description":"","image":null,"seoData":{"title":"","description":""}},{"id":3,"attributeId":1,"name":"Rouge","slug":"rouge","description":"","image":{"id":5,"urls":{"original":"\/\/wizaplace.loc\/images\/feature_variant\/0\/logo-url_5an0-xy.jpg","large":"https:\/\/unsplash.it\/1900\/?image=251","medium":"https:\/\/unsplash.it\/900\/?image=251","small":"https:\/\/unsplash.it\/200\/?image=251"}},"seoData":{"title":"","description":""}}]'
Loading

0 comments on commit 22d62d7

Please sign in to comment.