From e6a41fc3fc846630c382bc0b29db4a8a8b87b15b Mon Sep 17 00:00:00 2001 From: tpetry Date: Sat, 11 Jun 2022 15:30:12 +0200 Subject: [PATCH] feat: support for setting image with the @seo blade tag (resolves #22) --- src/SEOServiceProvider.php | 9 ++++++++- tests/Pest/FlippTest.php | 7 +++++++ tests/Pest/PreviewifyTest.php | 7 +++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/SEOServiceProvider.php b/src/SEOServiceProvider.php index f867390..8a2ed89 100644 --- a/src/SEOServiceProvider.php +++ b/src/SEOServiceProvider.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace ArchTech\SEO; use ArchTech\SEO\Commands\GenerateFaviconsCommand; +use Illuminate\Support\Arr; use Illuminate\Support\ServiceProvider; use ImLiam\BladeHelper\BladeHelperServiceProvider; use ImLiam\BladeHelper\Facades\BladeHelper; @@ -46,7 +47,13 @@ class SEOServiceProvider extends ServiceProvider // An array means we don't return anything, e.g. `@seo(['title' => 'foo']) if (is_array($args[0])) { - seo($args[0]); + foreach ($args[0] as $type => $value) { + if (in_array($type, ['flipp', 'previewify'], true)) { + seo()->{$type}(...Arr::wrap($value)); + } else { + seo()->set($type, $value); + } + } return null; } diff --git a/tests/Pest/FlippTest.php b/tests/Pest/FlippTest.php index b440540..5874ee4 100644 --- a/tests/Pest/FlippTest.php +++ b/tests/Pest/FlippTest.php @@ -68,3 +68,10 @@ test('flipp uses the raw title and description', function () { ->toContain('s.useflipp.com/abcdefg') ->toContain(base64_encode(json_encode(['title' => 'foo', 'description' => 'bar']))); }); + +test('the @seo helper can be used for setting a flipp image', function () { + seo()->flipp('blog', 'abcdefg'); + blade("@seo(['flipp' => ['blog', ['title' => 'abc', 'excerpt' => 'def']]])"); + + expect(seo('image'))->toContain('s.useflipp.com/abcdefg'); +}); diff --git a/tests/Pest/PreviewifyTest.php b/tests/Pest/PreviewifyTest.php index 80ca652..ebc4030 100644 --- a/tests/Pest/PreviewifyTest.php +++ b/tests/Pest/PreviewifyTest.php @@ -68,3 +68,10 @@ test('previewify uses the raw title and description', function () { ->toContain('previewify.app/generate/templates/1') ->toContain(base64_encode(json_encode(['title' => 'foo', 'description' => 'bar']))); }); + +test('the @seo helper can be used for setting a previewify image', function () { + seo()->previewify('blog', 1); + blade("@seo(['previewify' => ['blog', ['title' => 'abc', 'excerpt' => 'def']]])"); + + expect(seo('image'))->toContain('previewify.app/generate/templates/1'); +});