50 lines
1.9 KiB
PHP
50 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Esun\MultiLocaleTranslation\Test\Unit\Plugin\Adminhtml;
|
|
|
|
use Esun\MultiLocaleTranslation\Plugin\Adminhtml\BlogPostEditButton;
|
|
use Magento\Framework\App\RequestInterface;
|
|
use Magento\Framework\AuthorizationInterface;
|
|
use Magento\Framework\Registry;
|
|
use Mageplaza\Blog\Block\Adminhtml\Post\Edit;
|
|
use Mageplaza\Blog\Model\Post;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class BlogPostEditButtonTest extends TestCase
|
|
{
|
|
public function testAddsTranslateButtonThroughContainerApi(): void
|
|
{
|
|
$post = $this->createMock(Post::class);
|
|
$post->method('getId')->willReturn(1);
|
|
$registry = $this->createMock(Registry::class);
|
|
$registry->method('registry')->with('mageplaza_blog_post')->willReturn($post);
|
|
$authorization = $this->createMock(AuthorizationInterface::class);
|
|
$authorization->method('isAllowed')->with(
|
|
'Esun_MultiLocaleTranslation::translate_blog'
|
|
)->willReturn(true);
|
|
$request = $this->createMock(RequestInterface::class);
|
|
$request->method('getParam')->with('store')->willReturn(16);
|
|
$subject = $this->createMock(Edit::class);
|
|
$subject->method('getRequest')->willReturn($request);
|
|
$subject->method('getUrl')->willReturnCallback(
|
|
static fn (string $route): string => '/' . $route
|
|
);
|
|
$subject->expects(self::once())->method('addButton')->with(
|
|
'localetranslate_translate',
|
|
self::callback(
|
|
static fn (array $data): bool => (string)$data['label'] === 'Translate'
|
|
&& str_contains($data['onclick'], '"entityType":"blog_post"')
|
|
&& str_contains($data['onclick'], '"sourceStoreId":16')
|
|
),
|
|
0,
|
|
30
|
|
);
|
|
|
|
$plugin = new BlogPostEditButton($registry, $authorization);
|
|
|
|
self::assertSame([], $plugin->beforeToHtml($subject));
|
|
}
|
|
}
|