You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
<?php
|
|
|
|
namespace Tests\Unit\UI\Actions;
|
|
|
|
use App\UI\Actions\ResolveDynamicText;
|
|
use App\UI\Actions\SetSeoMetadata;
|
|
use App\Attributes\Seo;
|
|
use Artesaos\SEOTools\Facades\SEOTools;
|
|
use Illuminate\Http\Request;
|
|
use Mockery;
|
|
use Tests\TestCase;
|
|
|
|
uses(TestCase::class);
|
|
|
|
test('it applies seo metadata', function () {
|
|
$textResolver = Mockery::mock(ResolveDynamicText::class);
|
|
$action = new SetSeoMetadata($textResolver);
|
|
|
|
// We assume App\Attributes\Seo exists.
|
|
$seo = new Seo(title: 'Title', description: 'Desc', keywords: ['key'], image: 'img', context: 'target');
|
|
$viewData = ['id' => 1];
|
|
$request = Request::create('/', 'GET');
|
|
|
|
$textResolver->shouldReceive('execute')->times(3)->andReturnUsing(fn($value) => $value);
|
|
|
|
$metatagsMock = Mockery::mock();
|
|
$metatagsMock->shouldReceive('setCanonical')->once();
|
|
$metatagsMock->shouldReceive('setKeywords')->once();
|
|
|
|
$opengraphMock = Mockery::mock();
|
|
$opengraphMock->shouldReceive('addProperty')->once();
|
|
|
|
SEOTools::shouldReceive('setTitle')->once();
|
|
SEOTools::shouldReceive('setDescription')->once();
|
|
SEOTools::shouldReceive('metatags')->andReturn($metatagsMock);
|
|
SEOTools::shouldReceive('addImages')->once();
|
|
SEOTools::shouldReceive('opengraph')->andReturn($opengraphMock);
|
|
|
|
$action->applySeo($seo, $viewData, $request);
|
|
});
|
|
|