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