From c1ea60d08a4981da67c2180e9116786260ee1fec Mon Sep 17 00:00:00 2001 From: Mischa Sigtermans Date: Fri, 23 Aug 2024 20:13:46 +0200 Subject: [PATCH] Update tests --- tests/Pest/PreviewLinksTest.php | 77 +++++++++++++++++++++++++++++++++ tests/Pest/PreviewifyTest.php | 77 --------------------------------- 2 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 tests/Pest/PreviewLinksTest.php delete mode 100644 tests/Pest/PreviewifyTest.php diff --git a/tests/Pest/PreviewLinksTest.php b/tests/Pest/PreviewLinksTest.php new file mode 100644 index 0000000..4a54dc0 --- /dev/null +++ b/tests/Pest/PreviewLinksTest.php @@ -0,0 +1,77 @@ + config(['services.previewlinks.key' => 'abc'])); + +test('previewlink templates can be set', function () { + seo()->previewlink('blog', 1); + + expect(seo()->meta('previewlink.templates')) + ->toHaveCount(1) + ->toHaveKey('blog', '1'); +}); + +test('previewlink makes a request to the template not the alias', function () { + seo()->previewlink('blog', 1); + expect(seo()->previewlink('blog')) + ->toContain('previewlinks.io/generate/templates/1'); +}); + +test('previewlink templates can be given data', function () { + seo()->previewlink('blog', 1); + expect(seo()->previewlink('blog', ['title' => 'abc', 'previewlinks:excerpt' => 'def'])) + ->toContain('previewlinks.io/generate/templates/1') + ->toContain(base64_encode(json_encode(['previewlinks:title' => 'abc', 'previewlinks:excerpt' => 'def']))); +}); + +test('the previewlink method returns a link to a signed url', function () { + seo()->previewlink('blog', 1); + + expect(seo()->previewlink('blog', ['title' => 'abc'])) + ->toContain('?signature=' . hash_hmac('sha256', base64_encode(json_encode(['previewlinks:title' => 'abc'])), config('services.previewlinks.key'))); +}); + +test("previewlink templates use default data when they're not passed any data explicitly", function () { + seo()->previewlink('blog', 1); + + seo()->title('foo')->description('bar'); + + expect(seo()->previewlink('blog')) + ->toContain('previewlinks.io/generate/templates/1') + ->toContain(base64_encode(json_encode(['previewlinks:title' => 'foo', 'previewlinks:description' => 'bar']))); +}); + +test('previewlink images are used as the cover images', function () { + seo()->previewlink('blog', 1); + + seo()->title('foo')->description('bar'); + + expect(seo()->previewlink('blog')) + ->toBe(seo('image')); +}); + +test('the blade directive can be used with previewlinks', function () { + seo()->previewlink('blog', 1); + + seo()->title('foo')->description('bar'); + + expect(blade("@seo('previewlink', 'blog')"))->toBe(seo()->previewlink('blog')); + expect(blade("@seo('previewlink', 'blog', ['title' => 'abc'])"))->toBe(seo()->previewlink('blog', ['title' => 'abc'])); +}); + +test('previewlink uses the raw title and description', function () { + seo()->previewlink('blog', 1); + + seo()->title(modify: fn (string $title) => $title . ' - modified'); + seo()->title('foo')->description('bar'); + + expect(seo()->previewlink('blog')) + ->toContain('previewlinks.io/generate/templates/1') + ->toContain(base64_encode(json_encode(['previewlinks:title' => 'foo', 'previewlinks:description' => 'bar']))); +}); + +test('the @seo helper can be used for setting a previewlinks image', function () { + seo()->previewlink('blog', 1); + blade("@seo(['previewlink' => ['blog', ['title' => 'abc', 'excerpt' => 'def']]])"); + + expect(seo('image'))->toContain('previewlinks.io/generate/templates/1'); +}); diff --git a/tests/Pest/PreviewifyTest.php b/tests/Pest/PreviewifyTest.php deleted file mode 100644 index 9ac59c8..0000000 --- a/tests/Pest/PreviewifyTest.php +++ /dev/null @@ -1,77 +0,0 @@ - config(['services.previewify.key' => 'abc'])); - -test('previewify templates can be set', function () { - seo()->previewify('blog', 1); - - expect(seo()->meta('previewify.templates')) - ->toHaveCount(1) - ->toHaveKey('blog', '1'); -}); - -test('previewify makes a request to the template not the alias', function () { - seo()->previewify('blog', 1); - expect(seo()->previewify('blog')) - ->toContain('previewify.app/generate/templates/1'); -}); - -test('previewify templates can be given data', function () { - seo()->previewify('blog', 1); - expect(seo()->previewify('blog', ['title' => 'abc', 'previewify:excerpt' => 'def'])) - ->toContain('previewify.app/generate/templates/1') - ->toContain(base64_encode(json_encode(['previewify:title' => 'abc', 'previewify:excerpt' => 'def']))); -}); - -test('the previewify method returns a link to a signed url', function () { - seo()->previewify('blog', 1); - - expect(seo()->previewify('blog', ['title' => 'abc'])) - ->toContain('?signature=' . hash_hmac('sha256', base64_encode(json_encode(['previewify:title' => 'abc'])), config('services.previewify.key'))); -}); - -test("previewify templates use default data when they're not passed any data explicitly", function () { - seo()->previewify('blog', 1); - - seo()->title('foo')->description('bar'); - - expect(seo()->previewify('blog')) - ->toContain('previewify.app/generate/templates/1') - ->toContain(base64_encode(json_encode(['previewify:title' => 'foo', 'previewify:description' => 'bar']))); -}); - -test('previewify images are used as the cover images', function () { - seo()->previewify('blog', 1); - - seo()->title('foo')->description('bar'); - - expect(seo()->previewify('blog')) - ->toBe(seo('image')); -}); - -test('the blade directive can be used with previewify', function () { - seo()->previewify('blog', 1); - - seo()->title('foo')->description('bar'); - - expect(blade("@seo('previewify', 'blog')"))->toBe(seo()->previewify('blog')); - expect(blade("@seo('previewify', 'blog', ['title' => 'abc'])"))->toBe(seo()->previewify('blog', ['title' => 'abc'])); -}); - -test('previewify uses the raw title and description', function () { - seo()->previewify('blog', 1); - - seo()->title(modify: fn (string $title) => $title . ' - modified'); - seo()->title('foo')->description('bar'); - - expect(seo()->previewify('blog')) - ->toContain('previewify.app/generate/templates/1') - ->toContain(base64_encode(json_encode(['previewify:title' => 'foo', 'previewify: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'); -});