+ {% do prefetch_article_card_covers(tiles) %}
{% for tile in tiles %}
{% set _hue = (tile.categoryTitle|default('x')|length * 47) % 360 %}
{% set item = tile.article %}
diff --git a/templates/components/Organisms/HomeMagazineArticleStrip.html.twig b/templates/components/Organisms/HomeMagazineArticleStrip.html.twig
index b4c84a8..9c8dd5c 100644
--- a/templates/components/Organisms/HomeMagazineArticleStrip.html.twig
+++ b/templates/components/Organisms/HomeMagazineArticleStrip.html.twig
@@ -8,6 +8,7 @@
aria-label="{{ (website_name ~ ' — featured articles')|e('html_attr') }}"
>
+ {% do prefetch_article_card_covers(tiles) %}
{% for tile in tiles %}
{% set item = tile.article %}
{% set article_href = (item.pubkey and npub_from_hex(item.pubkey) != '') ? path('article', { npub: npub_from_hex(item.pubkey), slug: item.slug }) : path('article-legacy-redirect', { slug: item.slug }) %}
diff --git a/tests/Service/ArticleBodyHighlightInjectorTest.php b/tests/Service/ArticleBodyHighlightInjectorTest.php
index 0dfcc2b..d4d8d98 100644
--- a/tests/Service/ArticleBodyHighlightInjectorTest.php
+++ b/tests/Service/ArticleBodyHighlightInjectorTest.php
@@ -134,6 +134,7 @@ final class ArticleBodyHighlightInjectorTest extends TestCase
private function createInjector(): ArticleBodyHighlightInjector
{
$meta = $this->createMock(HighlightAuthorMetadataProvider::class);
+ $meta->method('prefetchMetadataForNpubs');
$meta->method('getMetadata')->willReturn(
(object) [
'display_name' => 'Test',
diff --git a/tests/Service/ArticleHighlightCommonMarkPipelineTest.php b/tests/Service/ArticleHighlightCommonMarkPipelineTest.php
index 74e7134..9ab8804 100644
--- a/tests/Service/ArticleHighlightCommonMarkPipelineTest.php
+++ b/tests/Service/ArticleHighlightCommonMarkPipelineTest.php
@@ -104,6 +104,7 @@ final class ArticleHighlightCommonMarkPipelineTest extends KernelTestCase
private function createInjector(): ArticleBodyHighlightInjector
{
$meta = $this->createMock(HighlightAuthorMetadataProvider::class);
+ $meta->method('prefetchMetadataForNpubs');
$meta->method('getMetadata')->willReturn(
(object) ['display_name' => 'Test', 'name' => 'Test', 'picture' => ''],
);
diff --git a/tests/Service/NostrWireEventMergeTest.php b/tests/Service/NostrWireEventMergeTest.php
index 31e27f9..97bad35 100644
--- a/tests/Service/NostrWireEventMergeTest.php
+++ b/tests/Service/NostrWireEventMergeTest.php
@@ -94,4 +94,28 @@ final class NostrWireEventMergeTest extends TestCase
$this->assertFalse($this->m->isNip33ParameterizedKind(29_999));
$this->assertFalse($this->m->isNip33ParameterizedKind(40_000));
}
+
+ public function testMagazineEventToPublicationEntityAcceptsDecodedWireArray(): void
+ {
+ $pk = str_repeat('e', 64);
+ $id = str_repeat('f', 64);
+ $data = [
+ 'kind' => 30_040,
+ 'id' => $id,
+ 'pubkey' => $pk,
+ 'content' => 'summary',
+ 'created_at' => 1_700_000_000,
+ 'tags' => [['d', 'newsroom-magazine-on-imwald-by-laeserin-category-bitcoin']],
+ 'sig' => str_repeat('a', 128),
+ ];
+
+ $entity = $this->m->magazineEventToPublicationEntity($data);
+ $this->assertNotNull($entity);
+ $this->assertSame($id, $entity->getId());
+ $this->assertSame(30_040, $entity->getKind());
+ $this->assertSame($pk, $entity->getPubkey());
+ $this->assertSame('summary', $entity->getContent());
+ $this->assertSame(1_700_000_000, $entity->getCreatedAt());
+ $this->assertSame($data['tags'], $entity->getTags());
+ }
}