Skip to content

Commit

Permalink
refact: Merge EE client into this project
Browse files Browse the repository at this point in the history
  • Loading branch information
LevFlavien committed Feb 15, 2022
1 parent cf65304 commit c57e9b8
Show file tree
Hide file tree
Showing 98 changed files with 6,412 additions and 29 deletions.
1 change: 1 addition & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

<testsuite name="Integration">
<directory>tests/</directory>
<directory suffix="Integration.php">tests/</directory>
</testsuite>

<filter>
Expand Down
145 changes: 140 additions & 5 deletions spec/AkeneoPimClientSpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,19 @@

use Akeneo\Pim\ApiClient\AkeneoPimClient;
use Akeneo\Pim\ApiClient\AkeneoPimClientInterface;
use Akeneo\Pim\ApiClient\Api\AssetApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetCategoryApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetManager\AssetApiInterface as AssetManagerApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetManager\AssetAttributeApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetManager\AssetAttributeOptionApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetManager\AssetFamilyApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetManager\AssetMediaFileApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetReferenceFileApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetTagApiInterface;
use Akeneo\Pim\ApiClient\Api\AssetVariationFileApiInterface;
use Akeneo\Pim\ApiClient\Api\AssociationTypeApiInterface;
use Akeneo\Pim\ApiClient\Api\AttributeApiInterface;
use Akeneo\Pim\ApiClient\Api\AttributeGroupApi;
use Akeneo\Pim\ApiClient\Api\AttributeGroupApiInterface;
use Akeneo\Pim\ApiClient\Api\AttributeOptionApiInterface;
use Akeneo\Pim\ApiClient\Api\CategoryApiInterface;
use Akeneo\Pim\ApiClient\Api\ChannelApiInterface;
Expand All @@ -18,7 +28,15 @@
use Akeneo\Pim\ApiClient\Api\MeasurementFamilyApiInterface;
use Akeneo\Pim\ApiClient\Api\MediaFileApiInterface;
use Akeneo\Pim\ApiClient\Api\ProductApiInterface;
use Akeneo\Pim\ApiClient\Api\ProductDraftApiInterface;
use Akeneo\Pim\ApiClient\Api\ProductModelApiInterface;
use Akeneo\Pim\ApiClient\Api\ProductModelDraftApiInterface;
use Akeneo\Pim\ApiClient\Api\PublishedProductApiInterface;
use Akeneo\Pim\ApiClient\Api\ReferenceEntityApiInterface;
use Akeneo\Pim\ApiClient\Api\ReferenceEntityAttributeApiInterface;
use Akeneo\Pim\ApiClient\Api\ReferenceEntityAttributeOptionApiInterface;
use Akeneo\Pim\ApiClient\Api\ReferenceEntityMediaFileApiInterface;
use Akeneo\Pim\ApiClient\Api\ReferenceEntityRecordApiInterface;
use Akeneo\Pim\ApiClient\Security\Authentication;
use PhpSpec\ObjectBehavior;

Expand All @@ -30,7 +48,7 @@ function let(
CategoryApiInterface $categoryApi,
AttributeApiInterface $attributeApi,
AttributeOptionApiInterface $attributeOptionApi,
AttributeGroupApi $attributeGroupApi,
AttributeGroupApiInterface $attributeGroupApi,
FamilyApiInterface $familyApi,
MediaFileApiInterface $productMediaFileApi,
LocaleApiInterface $localeApi,
Expand All @@ -40,15 +58,34 @@ function let(
MeasurementFamilyApiInterface $measurementFamilyApi,
AssociationTypeApiInterface $associationTypeApi,
FamilyVariantApiInterface $familyVariantApi,
ProductModelApiInterface $productModelApi
ProductModelApiInterface $productModelApi,
ProductModelDraftApiInterface $productModelDraftApi,
PublishedProductApiInterface $publishedProductApi,
ProductDraftApiInterface $productDraftApi,
AssetApiInterface $assetApi,
AssetCategoryApiInterface $assetCategoryApi,
AssetTagApiInterface $assetTagApi,
AssetReferenceFileApiInterface $assetReferenceFileApi,
AssetVariationFileApiInterface $assetVariationFileApi,
ReferenceEntityRecordApiInterface $referenceEntityRecordApi,
ReferenceEntityMediaFileApiInterface $referenceEntityMediaFileApi,
ReferenceEntityAttributeApiInterface $referenceEntityAttributeApi,
ReferenceEntityAttributeOptionApiInterface $referenceEntityAttributeOptionApi,
ReferenceEntityApiInterface $referenceEntityApi,
AssetManagerApiInterface $assetManagerApi,
AssetFamilyApiInterface $assetFamilyApi,
AssetAttributeApiInterface $assetAttributeApi,
AssetAttributeOptionApiInterface $assetAttributeOptionApi,
AssetMediaFileApiInterface $assetMediaFileApi
) {
$this->beConstructedWith(
$authentication,
$productApi,
$categoryApi,
$attributeApi,
$attributeOptionApi,
$attributeGroupApi, $familyApi,
$attributeGroupApi,
$familyApi,
$productMediaFileApi,
$localeApi,
$channelApi,
Expand All @@ -57,7 +94,25 @@ function let(
$measurementFamilyApi,
$associationTypeApi,
$familyVariantApi,
$productModelApi
$productModelApi,
$productModelDraftApi,
$publishedProductApi,
$productDraftApi,
$assetApi,
$assetCategoryApi,
$assetTagApi,
$assetReferenceFileApi,
$assetVariationFileApi,
$referenceEntityRecordApi,
$referenceEntityMediaFileApi,
$referenceEntityAttributeApi,
$referenceEntityAttributeOptionApi,
$referenceEntityApi,
$assetManagerApi,
$assetFamilyApi,
$assetAttributeApi,
$assetAttributeOptionApi,
$assetMediaFileApi
);
}

Expand Down Expand Up @@ -150,4 +205,84 @@ function it_gets_product_model_api($productModelApi)
{
$this->getProductModelApi()->shouldReturn($productModelApi);
}

function it_gets_published_product_api($publishedProductApi)
{
$this->getPublishedProductApi()->shouldReturn($publishedProductApi);
}

function it_gets_draft_product_api($productDraftApi)
{
$this->getProductDraftApi()->shouldReturn($productDraftApi);
}

function it_gets_draft_product_model_api($productModelDraftApi)
{
$this->getProductModelDraftApi()->shouldReturn($productModelDraftApi);
}

function it_gets_asset_api($assetApi)
{
$this->getAssetApi()->shouldReturn($assetApi);
}

function it_gets_asset_category_api($assetCategoryApi)
{
$this->getAssetCategoryApi()->shouldReturn($assetCategoryApi);
}

function it_gets_asset_tags_api($assetTagApi)
{
$this->getAssetTagApi()->shouldReturn($assetTagApi);
}

function it_gets_asset_reference_file_api($assetReferenceFileApi)
{
$this->getAssetReferenceFileApi()->shouldReturn($assetReferenceFileApi);
}

function it_gets_reference_entity_record_api($referenceEntityRecordApi)
{
$this->getReferenceEntityRecordApi()->shouldReturn($referenceEntityRecordApi);
}

function it_gets_reference_entity_media_file_api($referenceEntityMediaFileApi)
{
$this->getReferenceEntityMediaFileApi()->shouldReturn($referenceEntityMediaFileApi);
}

function it_gets_reference_entity_attribute_api($referenceEntityAttributeApi)
{
$this->getReferenceEntityAttributeApi()->shouldReturn($referenceEntityAttributeApi);
}

function it_gets_reference_entity_api($referenceEntityApi)
{
$this->getReferenceEntityApi()->shouldReturn($referenceEntityApi);
}

function it_gets_asset_manager_api($assetManagerApi)
{
$this->getAssetManagerApi()->shouldReturn($assetManagerApi);
}

function it_gets_asset_family_api($assetFamilyApi)
{
$this->getAssetFamilyApi()->shouldReturn($assetFamilyApi);
}

function it_gets_asset_attribute_api($assetAttributeApi)
{
$this->getAssetAttributeApi()->shouldReturn($assetAttributeApi);
}

function it_gets_asset_attribute_option_api($assetAttributeOptionApi)
{
$this->getAssetAttributeOptionApi()->shouldReturn($assetAttributeOptionApi);
}

function it_gets_asset_media_file_api($assetMediaFileApi)
{
$this->getAssetMediaFileApi()->shouldReturn($assetMediaFileApi);
}
}
177 changes: 177 additions & 0 deletions spec/Api/AssetApiSpec.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
<?php

namespace spec\Akeneo\Pim\ApiClient\Api;

use Akeneo\Pim\ApiClient\Api\AssetApi;
use Akeneo\Pim\ApiClient\Client\ResourceClientInterface;
use Akeneo\Pim\ApiClient\Exception\InvalidArgumentException;
use Akeneo\Pim\ApiClient\Pagination\PageFactoryInterface;
use Akeneo\Pim\ApiClient\Pagination\PageInterface;
use Akeneo\Pim\ApiClient\Pagination\ResourceCursorFactoryInterface;
use Akeneo\Pim\ApiClient\Pagination\ResourceCursorInterface;
use Akeneo\Pim\ApiClient\Stream\UpsertResourceListResponse;
use PhpSpec\ObjectBehavior;

class AssetApiSpec extends ObjectBehavior
{
function let(
ResourceClientInterface $resourceClient,
PageFactoryInterface $pageFactory,
ResourceCursorFactoryInterface $cursorFactory
) {
$this->beConstructedWith($resourceClient, $pageFactory, $cursorFactory);
}

function it_is_initializable()
{
$this->shouldHaveType(AssetApi::class);
}

function it_gets_an_asset($resourceClient)
{
$asset = [
'code' => 'akeneo_logo',
'localized' => false,
'description' => 'Akeneo logo',
'end_of_use' => null,
'tags' => [],
'categories' => ['asset_main_catalog'],
'variation_files' => [],
'reference_files' => [],
];

$resourceClient->getResource(AssetApi::ASSET_URI, ['akeneo_logo'])->willReturn($asset);

$this->get('akeneo_logo')->shouldReturn($asset);
}

function it_returns_a_list_of_assets_with_default_parameters(
$resourceClient,
$pageFactory,
PageInterface $page
) {
$resourceClient
->getResources(AssetApi::ASSETS_URI, [], 10, false, [])
->willReturn([]);
$pageFactory->createPage([])->willReturn($page);
$this->listPerPage()->shouldReturn($page);
}

function it_returns_a_list_of_assets_with_limit_and_count(
$resourceClient,
$pageFactory,
PageInterface $page
) {
$resourceClient
->getResources(AssetApi::ASSETS_URI, [], 10, true, [])
->willReturn([]);
$pageFactory->createPage([])->willReturn($page);
$this->listPerPage(10, true)->shouldReturn($page);
}

function it_returns_a_cursor_on_the_list_of_assets(
$resourceClient,
$pageFactory,
$cursorFactory,
PageInterface $page,
ResourceCursorInterface $cursor
) {
$resourceClient
->getResources(
AssetApi::ASSETS_URI,
[],
10,
false,
['pagination_type' => 'search_after']
)
->willReturn([]);
$pageFactory->createPage([])->willReturn($page);
$cursorFactory->createCursor(10, $page)->willReturn($cursor);
$this->all(10, [])->shouldReturn($cursor);
}

function it_returns_a_list_of_assets_with_additional_query_parameters(
$resourceClient,
$pageFactory,
PageInterface $page
) {
$resourceClient
->getResources(AssetApi::ASSETS_URI, [], 10, true, ['foo' => 'bar'])
->willReturn([]);
$pageFactory->createPage([])->willReturn($page);
$this->listPerPage(10, true, ['foo' => 'bar'])->shouldReturn($page);
}

function it_creates_an_asset($resourceClient)
{
$resourceClient->createResource(AssetApi::ASSETS_URI, [], [
'code' => 'unicorn',
'localized' => false,
'description' => 'The wonderful unicorn',
'end_of_use' => null,
'tags' => [],
'categories' => ['asset_main_catalog'],
'variation_files' => [],
'reference_files' => [],
])->willReturn(201);

$this->create('unicorn', [
'localized' => false,
'description' => 'The wonderful unicorn',
'end_of_use' => null,
'tags' => [],
'categories' => ['asset_main_catalog'],
'variation_files' => [],
'reference_files' => [],
])->shouldReturn(201);
}

function it_throws_an_exception_if_code_is_provided_in_data_when_creating_an_asset()
{
$this
->shouldThrow(new InvalidArgumentException('The parameter "code" should not be defined in the data parameter'))
->during('create', ['unicorn', ['code' => 'unicorn', 'localized' => false]]);
}

function it_upserts_an_asset($resourceClient)
{
$resourceClient
->upsertResource(AssetApi::ASSET_URI, ['akeneo_logo'], [
'localized' => false,
'description' => 'Akeneo logo updated',
'categories' => ['asset_main_catalog'],
])
->willReturn(204);

$this->upsert('akeneo_logo', [
'localized' => false,
'description' => 'Akeneo logo updated',
'categories' => ['asset_main_catalog'],
])->shouldReturn(204);
}

function it_upserts_a_list_of_assets($resourceClient, UpsertResourceListResponse $response)
{
$resourceClient->upsertStreamResourceList(AssetApi::ASSETS_URI, [], [
[
'code' => 'akeneo_logo',
'description' => 'Akeneo logo updated',
],
[
'code' => 'unicorn',
'description' => 'Created asset',
]
])->willReturn($response);

$this->upsertList([
[
'code' => 'akeneo_logo',
'description' => 'Akeneo logo updated',
],
[
'code' => 'unicorn',
'description' => 'Created asset',
]
])->shouldReturn($response);
}
}
Loading

0 comments on commit c57e9b8

Please sign in to comment.