diff --git a/tests/Builder/HtmlPdfBuilderTest.php b/tests/Builder/HtmlPdfBuilderTest.php index f29a406..c905449 100644 --- a/tests/Builder/HtmlPdfBuilderTest.php +++ b/tests/Builder/HtmlPdfBuilderTest.php @@ -3,6 +3,7 @@ namespace Sensiolabs\GotenbergBundle\Tests\Builder; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\UsesClass; use Sensiolabs\GotenbergBundle\Builder\HtmlPdfBuilder; use Sensiolabs\GotenbergBundle\Client\GotenbergClientInterface; use Sensiolabs\GotenbergBundle\Exception\ExtraHttpHeadersJsonEncodingException; @@ -12,16 +13,14 @@ use Symfony\Component\Mime\Part\DataPart; #[CoversClass(HtmlPdfBuilder::class)] +#[UsesClass(AssetBaseDirFormatter::class)] +#[UsesClass(Filesystem::class)] final class HtmlPdfBuilderTest extends AbstractBuilderTestCase { public function testWithConfigurations(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturn(self::FIXTURE_DIR.'/templates/content.html') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter); $builder->contentFile('content.html'); @@ -62,11 +61,7 @@ public function testWithConfigurations(): void public function testWithTemplate(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturn(self::FIXTURE_DIR.'/templates/content.html') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter, self::$twig); $builder->content('content.html.twig'); @@ -84,11 +79,7 @@ public function testWithTemplate(): void public function testWithAssets(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->exactly(2)) - ->method('resolve') - ->willReturnOnConsecutiveCalls(self::FIXTURE_DIR.'/templates/content.html', self::FIXTURE_DIR.'/assets/logo.png') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter); $builder->contentFile('content.html'); @@ -108,11 +99,7 @@ public function testWithAssets(): void public function testWithHeader(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->exactly(2)) - ->method('resolve') - ->willReturnOnConsecutiveCalls(self::FIXTURE_DIR.'/templates/header.html', self::FIXTURE_DIR.'/templates/content.html') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter); $builder->headerFile('header.html'); @@ -135,10 +122,7 @@ public function testInvalidTwigTemplate(): void $this->expectExceptionMessage('Could not render template "invalid.html.twig" into PDF part "index.html".'); $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->never()) - ->method('resolve') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter, self::$twig); @@ -151,9 +135,7 @@ public function testInvalidExtraHttpHeaders(): void $this->expectExceptionMessage('Could not encode extra HTTP headers into JSON'); $client = $this->createMock(GotenbergClientInterface::class); - $filesystem = $this->createMock(Filesystem::class); - - $assetBaseDirFormatter = new AssetBaseDirFormatter($filesystem, self::FIXTURE_DIR, self::FIXTURE_DIR); + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new HtmlPdfBuilder($client, $assetBaseDirFormatter); $builder->contentFile('content.html'); diff --git a/tests/Builder/LibreOfficePdfBuilderTest.php b/tests/Builder/LibreOfficePdfBuilderTest.php index 00df934..1d92e3b 100644 --- a/tests/Builder/LibreOfficePdfBuilderTest.php +++ b/tests/Builder/LibreOfficePdfBuilderTest.php @@ -4,12 +4,16 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; +use PHPUnit\Framework\Attributes\UsesClass; use Sensiolabs\GotenbergBundle\Builder\LibreOfficePdfBuilder; use Sensiolabs\GotenbergBundle\Client\GotenbergClientInterface; use Sensiolabs\GotenbergBundle\Formatter\AssetBaseDirFormatter; +use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Mime\Part\DataPart; #[CoversClass(LibreOfficePdfBuilder::class)] +#[UsesClass(AssetBaseDirFormatter::class)] +#[UsesClass(Filesystem::class)] final class LibreOfficePdfBuilderTest extends AbstractBuilderTestCase { private const OFFICE_DOCUMENTS_DIR = 'assets/office'; @@ -30,11 +34,7 @@ public static function provideValidOfficeFiles(): iterable public function testOfficeFiles(string $filePath, string $contentType): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturn(self::FIXTURE_DIR.'/'.$filePath) - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new LibreOfficePdfBuilder($client, $assetBaseDirFormatter); $builder->files($filePath); diff --git a/tests/Builder/MarkdownPdfBuilderTest.php b/tests/Builder/MarkdownPdfBuilderTest.php index 8d5ea5b..cf1b281 100644 --- a/tests/Builder/MarkdownPdfBuilderTest.php +++ b/tests/Builder/MarkdownPdfBuilderTest.php @@ -3,22 +3,22 @@ namespace Sensiolabs\GotenbergBundle\Tests\Builder; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\UsesClass; use Sensiolabs\GotenbergBundle\Builder\MarkdownPdfBuilder; use Sensiolabs\GotenbergBundle\Client\GotenbergClientInterface; use Sensiolabs\GotenbergBundle\Formatter\AssetBaseDirFormatter; +use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Mime\Part\DataPart; #[CoversClass(MarkdownPdfBuilder::class)] +#[UsesClass(AssetBaseDirFormatter::class)] +#[UsesClass(Filesystem::class)] final class MarkdownPdfBuilderTest extends AbstractBuilderTestCase { public function testMarkdownFile(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturnOnConsecutiveCalls(self::FIXTURE_DIR.'/templates/template.html', self::FIXTURE_DIR.'/assets/file.md', self::FIXTURE_DIR.'/assets/file.md') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new MarkdownPdfBuilder($client, $assetBaseDirFormatter); $builder diff --git a/tests/Builder/UrlPdfBuilderTest.php b/tests/Builder/UrlPdfBuilderTest.php index c2ec353..cdcee5d 100644 --- a/tests/Builder/UrlPdfBuilderTest.php +++ b/tests/Builder/UrlPdfBuilderTest.php @@ -3,21 +3,22 @@ namespace Sensiolabs\GotenbergBundle\Tests\Builder; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\UsesClass; use Sensiolabs\GotenbergBundle\Builder\HtmlPdfBuilder; use Sensiolabs\GotenbergBundle\Builder\UrlPdfBuilder; use Sensiolabs\GotenbergBundle\Client\GotenbergClientInterface; use Sensiolabs\GotenbergBundle\Formatter\AssetBaseDirFormatter; +use Symfony\Component\Filesystem\Filesystem; #[CoversClass(HtmlPdfBuilder::class)] +#[UsesClass(AssetBaseDirFormatter::class)] +#[UsesClass(Filesystem::class)] final class UrlPdfBuilderTest extends AbstractBuilderTestCase { public function testUrl(): void { $client = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->never()) - ->method('resolve') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), self::FIXTURE_DIR, self::FIXTURE_DIR); $builder = new UrlPdfBuilder($client, $assetBaseDirFormatter); $builder->url('https://google.com'); diff --git a/tests/Pdf/GotenbergTest.php b/tests/Pdf/GotenbergTest.php index 2a7b9ed..42f8ac6 100644 --- a/tests/Pdf/GotenbergTest.php +++ b/tests/Pdf/GotenbergTest.php @@ -3,23 +3,24 @@ namespace Sensiolabs\GotenbergBundle\Tests\Pdf; use PHPUnit\Framework\Attributes\CoversClass; +use PHPUnit\Framework\Attributes\UsesClass; use PHPUnit\Framework\TestCase; use Sensiolabs\GotenbergBundle\Client\GotenbergClientInterface; use Sensiolabs\GotenbergBundle\Formatter\AssetBaseDirFormatter; use Sensiolabs\GotenbergBundle\Pdf\Gotenberg; +use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Mime\Part\DataPart; use Twig\Environment; #[CoversClass(Gotenberg::class)] +#[UsesClass(AssetBaseDirFormatter::class)] +#[UsesClass(Filesystem::class)] final class GotenbergTest extends TestCase { public function testUrlBuilderFactory(): void { $gotenbergClient = $this->createMock(GotenbergClientInterface::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->never()) - ->method('resolve') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), __DIR__.'/../Fixtures', __DIR__.'/../Fixtures'); $gotenberg = new Gotenberg( $gotenbergClient, @@ -36,11 +37,7 @@ public function testHtmlBuilderFactory(): void { $gotenbergClient = $this->createMock(GotenbergClientInterface::class); $twig = $this->createMock(Environment::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->exactly(1)) - ->method('resolve') - ->willReturn(__DIR__.'/..Fixtures/templates/content.html') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), __DIR__.'/../Fixtures', __DIR__.'/../Fixtures'); $gotenberg = new Gotenberg( $gotenbergClient, @@ -72,11 +69,7 @@ public function testMarkdownBuilderFactory(): void { $gotenbergClient = $this->createMock(GotenbergClientInterface::class); $twig = $this->createMock(Environment::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturnOnConsecutiveCalls(__DIR__.'/../Fixtures/assets/file.md', __DIR__.'/../Fixtures/assets/file.md', __DIR__.'/../Fixtures/templates/wrapper.html') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), __DIR__.'/../Fixtures', __DIR__.'/../Fixtures'); $gotenberg = new Gotenberg( $gotenbergClient, @@ -108,11 +101,7 @@ public function testOfficeBuilderFactory(): void { $gotenbergClient = $this->createMock(GotenbergClientInterface::class); $twig = $this->createMock(Environment::class); - $assetBaseDirFormatter = $this->createMock(AssetBaseDirFormatter::class); - $assetBaseDirFormatter->expects($this->any()) - ->method('resolve') - ->willReturn(__DIR__.'/../Fixtures/assets/office/document.odt') - ; + $assetBaseDirFormatter = new AssetBaseDirFormatter(new Filesystem(), __DIR__.'/../Fixtures', __DIR__.'/../Fixtures'); $gotenberg = new Gotenberg( $gotenbergClient,