Files
2026-09-15 10:35:56 +08:00

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));
}
}