diff --git a/spec/Assigner/ChannelsAssignerSpec.php b/spec/Assigner/ChannelsAssignerSpec.php
index c11119c2f..5fc38fc80 100644
--- a/spec/Assigner/ChannelsAssignerSpec.php
+++ b/spec/Assigner/ChannelsAssignerSpec.php
@@ -34,8 +34,7 @@ public function it_assigns_channels(
ChannelInterface $posChannel,
ChannelsAwareInterface $channelsAware,
): void {
- $channelRepository->findOneBy(['code' => 'web'])->willReturn($webChannel);
- $channelRepository->findOneBy(['code' => 'pos'])->willReturn($posChannel);
+ $channelRepository->findBy(['code' => ['web', 'pos']])->willReturn([$webChannel, $posChannel]);
$channelsAware->addChannel($webChannel)->shouldBeCalled();
$channelsAware->addChannel($posChannel)->shouldBeCalled();
diff --git a/spec/Assigner/CollectionsAssignerSpec.php b/spec/Assigner/CollectionsAssignerSpec.php
index 53b3a7bee..0e95b878e 100644
--- a/spec/Assigner/CollectionsAssignerSpec.php
+++ b/spec/Assigner/CollectionsAssignerSpec.php
@@ -34,8 +34,7 @@ public function it_assigns_collections(
CollectionInterface $blogCollection,
CollectibleInterface $collectionsAware,
): void {
- $collectionRepository->findOneBy(['code' => 'about'])->willReturn($aboutCollection);
- $collectionRepository->findOneBy(['code' => 'blog'])->willReturn($blogCollection);
+ $collectionRepository->findBy(['code' => ['about', 'blog']])->willReturn([$aboutCollection, $blogCollection]);
$collectionsAware->addCollection($aboutCollection)->shouldBeCalled();
$collectionsAware->addCollection($blogCollection)->shouldBeCalled();
diff --git a/spec/Assigner/LocalesAssignerSpec.php b/spec/Assigner/LocalesAssignerSpec.php
index 4f4f7d1b1..7e2da73fb 100644
--- a/spec/Assigner/LocalesAssignerSpec.php
+++ b/spec/Assigner/LocalesAssignerSpec.php
@@ -37,7 +37,7 @@ public function it_assigns_locales_to_locale_aware_entity(
$locale1->getCode()->willReturn('en_US');
$locale2->getCode()->willReturn('fr_FR');
- $localeRepository->findAll()->willReturn([$locale1, $locale2]);
+ $localeRepository->findBy(['code' => ['en_US', 'fr_FR']])->willReturn([$locale1, $locale2]);
$localesAware->addLocale($locale1)->shouldBeCalled();
$localesAware->addLocale($locale2)->shouldBeCalled();
diff --git a/spec/Assigner/ProductsAssignerSpec.php b/spec/Assigner/ProductsAssignerSpec.php
index 25394a93e..e79e07ee3 100644
--- a/spec/Assigner/ProductsAssignerSpec.php
+++ b/spec/Assigner/ProductsAssignerSpec.php
@@ -34,8 +34,7 @@ public function it_assigns_products(
ProductInterface $tshirtProduct,
ProductsAwareInterface $productsAware,
): void {
- $productRepository->findOneBy(['code' => 'mug'])->willReturn($mugProduct);
- $productRepository->findOneBy(['code' => 't-shirt'])->willReturn($tshirtProduct);
+ $productRepository->findBy(['code' => ['mug', 't-shirt']])->willReturn([$mugProduct, $tshirtProduct]);
$productsAware->addProduct($mugProduct)->shouldBeCalled();
$productsAware->addProduct($tshirtProduct)->shouldBeCalled();
diff --git a/spec/Assigner/ProductsInTaxonsAssignerSpec.php b/spec/Assigner/ProductsInTaxonsAssignerSpec.php
index 581c2aea7..4b98ad9ce 100644
--- a/spec/Assigner/ProductsInTaxonsAssignerSpec.php
+++ b/spec/Assigner/ProductsInTaxonsAssignerSpec.php
@@ -37,8 +37,7 @@ public function it_assigns_taxons_to_products_in_taxons_aware_entity(
$taxon1->getCode()->willReturn('taxon_code_1');
$taxon2->getCode()->willReturn('taxon_code_2');
- $taxonRepository->findOneBy(['code' => 'taxon_code_1'])->willReturn($taxon1);
- $taxonRepository->findOneBy(['code' => 'taxon_code_2'])->willReturn($taxon2);
+ $taxonRepository->findBy(['code' => ['taxon_code_1', 'taxon_code_2']])->willReturn([$taxon1, $taxon2]);
$productsInTaxonsAware->addProductsInTaxon($taxon1)->shouldBeCalled();
$productsInTaxonsAware->addProductsInTaxon($taxon2)->shouldBeCalled();
diff --git a/spec/Assigner/TaxonsAssignerSpec.php b/spec/Assigner/TaxonsAssignerSpec.php
index 8992b1aec..b8933ff98 100644
--- a/spec/Assigner/TaxonsAssignerSpec.php
+++ b/spec/Assigner/TaxonsAssignerSpec.php
@@ -34,8 +34,7 @@ public function it_assigns_taxons(
TaxonInterface $stickersTaxon,
TaxonAwareInterface $taxonsAware,
): void {
- $taxonRepository->findOneBy(['code' => 'mugs'])->willReturn($mugsTaxon);
- $taxonRepository->findOneBy(['code' => 'stickers'])->willReturn($stickersTaxon);
+ $taxonRepository->findBy(['code' => ['mugs', 'stickers']])->willReturn([$mugsTaxon, $stickersTaxon]);
$taxonsAware->addTaxon($mugsTaxon)->shouldBeCalled();
$taxonsAware->addTaxon($stickersTaxon)->shouldBeCalled();
diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
index 8a373efd2..9f30f0f0d 100644
--- a/src/DependencyInjection/Configuration.php
+++ b/src/DependencyInjection/Configuration.php
@@ -137,7 +137,7 @@ private function addResourcesSection(ArrayNodeDefinition $node): void
->children()
->scalarNode('model')->defaultValue(MediaTranslation::class)->cannotBeEmpty()->end()
->scalarNode('interface')->defaultValue(MediaTranslationInterface::class)->cannotBeEmpty()->end()
- ->scalarNode('factory')->defaultValue(TranslatableFactory::class)->cannotBeEmpty()->end()
+ ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
->end()
->end()
->end()
@@ -167,7 +167,7 @@ private function addResourcesSection(ArrayNodeDefinition $node): void
->children()
->scalarNode('model')->defaultValue(PageTranslation::class)->cannotBeEmpty()->end()
->scalarNode('interface')->defaultValue(PageTranslationInterface::class)->cannotBeEmpty()->end()
- ->scalarNode('factory')->defaultValue(TranslatableFactory::class)->cannotBeEmpty()->end()
+ ->scalarNode('factory')->defaultValue(Factory::class)->cannotBeEmpty()->end()
->end()
->end()
->end()
diff --git a/src/Resources/config/api_resources/Block.xml b/src/Resources/config/api_resources/Block.xml
index 7ccf8e59f..d1bec15bc 100644
--- a/src/Resources/config/api_resources/Block.xml
+++ b/src/Resources/config/api_resources/Block.xml
@@ -41,10 +41,14 @@
+
+
+
-
-
+
+
+
diff --git a/src/Resources/config/serialization/Block.xml b/src/Resources/config/serialization/Block.xml
index 725457432..ad39aa163 100644
--- a/src/Resources/config/serialization/Block.xml
+++ b/src/Resources/config/serialization/Block.xml
@@ -12,16 +12,23 @@
sylius_cms:block:read:index
sylius_cms:block:read:show
-
+
sylius_cms:block:read:index
sylius_cms:block:read:show
-
+
+ sylius_cms:block:read:index
sylius_cms:block:read:show
sylius_cms:block:read:show
+
+ sylius_cms:block:read:show
+
+
+ sylius_cms:block:read:show
+
sylius_cms:block:read:show
diff --git a/src/Resources/config/serialization/Collection.xml b/src/Resources/config/serialization/Collection.xml
index f41c0c7de..90182810b 100644
--- a/src/Resources/config/serialization/Collection.xml
+++ b/src/Resources/config/serialization/Collection.xml
@@ -13,6 +13,7 @@
sylius_cms:collection:read:show
+ sylius_cms:collection:read:index
sylius_cms:collection:read:show
diff --git a/src/Resources/config/serialization/Media.xml b/src/Resources/config/serialization/Media.xml
index 97d14203d..24f4c722b 100644
--- a/src/Resources/config/serialization/Media.xml
+++ b/src/Resources/config/serialization/Media.xml
@@ -20,14 +20,14 @@
sylius_cms:media:read:index
sylius_cms:media:read:show
-
+
+ sylius_cms:media:read:index
sylius_cms:media:read:show
-
+
sylius_cms:media:read:show
-
- sylius_cms:media:read:index
+
sylius_cms:media:read:show
diff --git a/tests/Functional/DataFixtures/ORM/Api/BlockTest/block.yml b/tests/Functional/DataFixtures/ORM/Api/BlockTest/block.yml
index a0f540e01..822e4510c 100644
--- a/tests/Functional/DataFixtures/ORM/Api/BlockTest/block.yml
+++ b/tests/Functional/DataFixtures/ORM/Api/BlockTest/block.yml
@@ -74,25 +74,34 @@ Sylius\Component\Core\Model\ProductVariant:
Sylius\CmsPlugin\Entity\Block:
block1:
code: 'block1-code'
+ name: 'block1-name'
enabled: true
collections:
- '@collection1'
channels:
- '@channel'
+ locales:
+ - '@locale'
block2:
code: 'block2-code'
+ name: 'block2-name'
enabled: true
collections:
- '@collection2'
channels:
- '@channel'
+ locales:
+ - '@locale'
block3:
code: 'block3-code'
- enabled: false
+ name: 'block3-name'
+ enabled: true
collections:
- '@collection3'
channels:
- '@channel'
+ locales:
+ - '@locale'
Sylius\CmsPlugin\Entity\Collection:
collection1:
code: 'collection1-code'
diff --git a/tests/Functional/DataFixtures/ORM/Api/CollectionTest/collection.yml b/tests/Functional/DataFixtures/ORM/Api/CollectionTest/collection.yml
index 809961d83..30e109511 100644
--- a/tests/Functional/DataFixtures/ORM/Api/CollectionTest/collection.yml
+++ b/tests/Functional/DataFixtures/ORM/Api/CollectionTest/collection.yml
@@ -21,9 +21,12 @@ Sylius\CmsPlugin\Entity\Collection:
collection1:
code: 'collection1-code'
name: 'collection1-name'
+ type: 'page'
collection2:
code: 'collection2-code'
name: 'collection2-name'
+ type: 'block'
collection3:
code: 'collection3-code'
name: 'collection3-name'
+ type: 'media'
diff --git a/tests/Functional/DataFixtures/ORM/Api/MediaTest/media.yml b/tests/Functional/DataFixtures/ORM/Api/MediaTest/media.yml
index 05ea75ac8..7dd0bd8df 100644
--- a/tests/Functional/DataFixtures/ORM/Api/MediaTest/media.yml
+++ b/tests/Functional/DataFixtures/ORM/Api/MediaTest/media.yml
@@ -113,7 +113,7 @@ Sylius\CmsPlugin\Entity\Media:
media3:
code: 'media3-code'
name: 'media3-name'
- enabled: false
+ enabled: true
type: 'image'
path: '/path/to/media3'
collections:
diff --git a/tests/Functional/DataFixtures/ORM/Api/PageTest/page.yml b/tests/Functional/DataFixtures/ORM/Api/PageTest/page.yml
index 444a7b836..1e4919a85 100644
--- a/tests/Functional/DataFixtures/ORM/Api/PageTest/page.yml
+++ b/tests/Functional/DataFixtures/ORM/Api/PageTest/page.yml
@@ -109,7 +109,7 @@ Sylius\CmsPlugin\Entity\Page:
- '@page2_translation'
page3:
code: 'page3-code'
- enabled: false
+ enabled: true
collections:
- '@collection3'
channels:
diff --git a/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_block_by_id.json b/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_block_by_id.json
index dbc9c1802..33c79870c 100644
--- a/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_block_by_id.json
+++ b/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_block_by_id.json
@@ -4,18 +4,17 @@
"@type": "Block",
"id": "@integer@",
"code": "block1-code",
+ "name": "block1-name",
"enabled": true,
"collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection1-code"
- }
+ "/api/v2/shop/cms-plugin/collections/@integer@"
],
"channels": [
"/api/v2/shop/channels/code"
],
+ "locales": [
+ "/api/v2/shop/locales/@string@"
+ ],
"contentElements": [],
"products": [],
"taxons": [],
diff --git a/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_blocks.json b/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_blocks.json
index c163c76eb..d434f94f6 100644
--- a/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_blocks.json
+++ b/tests/Functional/Responses/Expected/Api/BlockTest/test_it_get_blocks.json
@@ -8,66 +8,24 @@
"@type": "Block",
"id": "@integer@",
"code": "block1-code",
- "enabled": true,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection1-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "contentElements": [],
- "products": [],
- "taxons": [],
- "productsInTaxons": []
+ "name": "block1-name",
+ "enabled": true
},
{
"@id": "/api/v2/shop/cms-plugin/blocks/@integer@",
"@type": "Block",
"id": "@integer@",
"code": "block2-code",
- "enabled": true,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection2-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "contentElements": [],
- "products": [],
- "taxons": [],
- "productsInTaxons": []
+ "name": "block2-name",
+ "enabled": true
},
{
"@id": "/api/v2/shop/cms-plugin/blocks/@integer@",
"@type": "Block",
"id": "@integer@",
"code": "block3-code",
- "enabled": false,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection3-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "contentElements": [],
- "products": [],
- "taxons": [],
- "productsInTaxons": []
+ "name": "block3-name",
+ "enabled": true
}
],
"hydra:totalItems": 3
diff --git a/tests/Functional/Responses/Expected/Api/CollectionTest/test_it_get_collection_by_id.json b/tests/Functional/Responses/Expected/Api/CollectionTest/test_it_get_collection_by_id.json
index 314c8ffc6..8652ee2b8 100644
--- a/tests/Functional/Responses/Expected/Api/CollectionTest/test_it_get_collection_by_id.json
+++ b/tests/Functional/Responses/Expected/Api/CollectionTest/test_it_get_collection_by_id.json
@@ -3,5 +3,9 @@
"@id": "/api/v2/shop/cms-plugin/collections/@integer@",
"@type": "Collection",
"id": "@integer@",
- "code": "collection1-code"
+ "code": "collection1-code",
+ "type": "page",
+ "pages": [],
+ "blocks": [],
+ "media": []
}
diff --git a/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media.json b/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media.json
index fd285cf70..541780b75 100644
--- a/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media.json
+++ b/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media.json
@@ -10,31 +10,7 @@
"type": "image",
"code": "media1-code",
"name": "media1-name",
- "path": "/path/to/media1",
- "mimeType": null,
- "width": null,
- "height": null,
- "saveWithOriginalName": false,
- "enabled": true,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection1-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "translations": {
- "en_US": {
- "@type": "MediaTranslation",
- "content": "translation_content_en_US",
- "alt": null,
- "link": "translation_link_en_US"
- }
- }
+ "enabled": true
},
{
"@id": "/api/v2/shop/cms-plugin/media/@integer@",
@@ -43,31 +19,7 @@
"type": "image",
"code": "media2-code",
"name": "media2-name",
- "path": "/path/to/media2",
- "mimeType": null,
- "width": null,
- "height": null,
- "saveWithOriginalName": false,
- "enabled": true,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection2-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "translations": {
- "en_US": {
- "@type": "MediaTranslation",
- "content": "translation_content_en_US",
- "alt": null,
- "link": "translation_link_en_US"
- }
- }
+ "enabled": true
},
{
"@id": "/api/v2/shop/cms-plugin/media/@integer@",
@@ -76,31 +28,7 @@
"type": "image",
"code": "media3-code",
"name": "media3-name",
- "path": "/path/to/media3",
- "mimeType": null,
- "width": null,
- "height": null,
- "saveWithOriginalName": false,
- "enabled": false,
- "collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection3-code"
- }
- ],
- "channels": [
- "/api/v2/shop/channels/code"
- ],
- "translations": {
- "en_US": {
- "@type": "MediaTranslation",
- "content": "translation_content_en_US",
- "alt": null,
- "link": "translation_link_en_US"
- }
- }
+ "enabled": true
}
],
"hydra:totalItems": 3
diff --git a/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media_by_id.json b/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media_by_id.json
index 24ad5c7d0..1a9134592 100644
--- a/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media_by_id.json
+++ b/tests/Functional/Responses/Expected/Api/MediaTest/test_it_get_media_by_id.json
@@ -13,12 +13,7 @@
"saveWithOriginalName": false,
"enabled": true,
"collections": [
- {
- "@id": "/api/v2/shop/cms-plugin/collections/@integer@",
- "@type": "Collection",
- "id": "@integer@",
- "code": "collection1-code"
- }
+ "/api/v2/shop/cms-plugin/collections/@integer@"
],
"channels": [
"/api/v2/shop/channels/code"
diff --git a/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_page_by_id.json b/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_page_by_id.json
index 2c367e69b..5e08fe1ed 100644
--- a/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_page_by_id.json
+++ b/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_page_by_id.json
@@ -6,10 +6,10 @@
"code": "page1-code",
"name": null,
"publishAt": null,
+ "contentElements": [],
"translations": {
"en_US": {
"@type": "PageTranslation",
- "id": "@integer@",
"slug": "translation1_slug_en_US",
"metaKeywords": "html,application",
"metaDescription": null,
diff --git a/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_pages.json b/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_pages.json
index a0809ef35..cdadae79c 100644
--- a/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_pages.json
+++ b/tests/Functional/Responses/Expected/Api/PageTest/test_it_get_pages.json
@@ -8,54 +8,21 @@
"@type": "Page",
"id": "@integer@",
"code": "page1-code",
- "name": null,
- "publishAt": null,
- "translations": {
- "en_US": {
- "@type": "PageTranslation",
- "id": "@integer@",
- "slug": "translation1_slug_en_US",
- "metaKeywords": "html,application",
- "metaDescription": null,
- "title": "Amazing article1"
- }
- }
+ "name": null
},
{
"@id": "/api/v2/shop/cms-plugin/pages/@integer@",
"@type": "Page",
"id": "@integer@",
"code": "page2-code",
- "name": null,
- "publishAt": null,
- "translations": {
- "en_US": {
- "@type": "PageTranslation",
- "id": "@integer@",
- "slug": "translation2_slug_en_US",
- "metaKeywords": "html,application",
- "metaDescription": null,
- "title": "Amazing article2"
- }
- }
+ "name": null
},
{
"@id": "/api/v2/shop/cms-plugin/pages/@integer@",
"@type": "Page",
"id": "@integer@",
"code": "page3-code",
- "name": null,
- "publishAt": null,
- "translations": {
- "en_US": {
- "@type": "PageTranslation",
- "id": "@integer@",
- "slug": "translation3_slug_en_US",
- "metaKeywords": "html,application",
- "metaDescription": null,
- "title": "Amazing article3"
- }
- }
+ "name": null
}
],
"hydra:totalItems": 3