Skip to content

Commit f2fcaab

Browse files
committed
BUGFIX: Convert tags for collections
1 parent b2766a3 commit f2fcaab

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

Classes/GraphQL/Resolver/Type/AssetCollectionResolver.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
use Neos\Flow\Annotations as Flow;
2121
use Neos\Flow\Persistence\PersistenceManagerInterface;
2222
use Neos\Media\Domain\Model\AssetCollection;
23+
use Neos\Media\Domain\Model\Tag;
2324
use Neos\Media\Domain\Repository\AssetCollectionRepository;
2425
use Neos\Media\Domain\Repository\AssetRepository;
2526
use Neos\Neos\Domain\Model\Site;
@@ -83,8 +84,14 @@ public function tags(Types\AssetCollection $assetCollection): Types\Tags
8384
{
8485
/** @var AssetCollection $originalAssetCollection */
8586
$originalAssetCollection = $this->assetCollectionRepository->findByIdentifier($assetCollection->id->value);
86-
return $originalAssetCollection ?
87-
Types\Tags::fromArray($originalAssetCollection->getTags()->toArray()) : Types\Tags::empty();
87+
88+
return $originalAssetCollection ? Types\Tags::fromArray(array_map(
89+
fn(Tag $tag) => instantiate(Types\Tag::class, [
90+
'id' => $this->persistenceManager->getIdentifierByObject($tag),
91+
'label' => $tag->getLabel(),
92+
]),
93+
$originalAssetCollection->getTags()->toArray()
94+
)) : Types\Tags::empty();
8895
}
8996

9097
public function parent(Types\AssetCollection $assetCollection): ?Types\AssetCollectionParent

Tests/Functional/GraphQL/TagApiTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
use Flowpack\Media\Ui\GraphQL\MediaApi;
18+
use Flowpack\Media\Ui\GraphQL\Resolver\Type\AssetCollectionResolver;
1819
use Flowpack\Media\Ui\GraphQL\Types;
1920
use Flowpack\Media\Ui\Tests\Functional\AbstractMediaTestCase;
2021
use Neos\Flow\Persistence\Doctrine\PersistenceManager;
@@ -37,6 +38,7 @@ public function setUp(): void
3738
}
3839

3940
$this->mediaApi = $this->objectManager->get(MediaApi::class);
41+
$this->assetCollectionResolver = $this->objectManager->get(AssetCollectionResolver::class);
4042
}
4143

4244
public function testCreateTag(): void
@@ -63,4 +65,21 @@ public function testDeleteTag(): void
6365
$deletedTag = $this->mediaApi->tag($tag->id);
6466
$this->assertNull($deletedTag);
6567
}
68+
69+
public function testTagAssetCollection(): void
70+
{
71+
$assetCollection = $this->mediaApi->createAssetCollection(
72+
Types\AssetCollectionTitle::fromString('Test Collection')
73+
);
74+
$tag = $this->mediaApi->createTag('Test Tag', $assetCollection->id);
75+
$createdTag = $this->mediaApi->tag($tag->id);
76+
77+
$resolvedTags = $this->assetCollectionResolver->tags($assetCollection);
78+
$this->assertCount(1, $resolvedTags->tags);
79+
$this->assertEquals(
80+
$createdTag,
81+
$resolvedTags->tags[0],
82+
'The tag should be associated with the asset collection'
83+
);
84+
}
6685
}

0 commit comments

Comments
 (0)