AssetsExtensionTest.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Tests\Unit\Service\Twig;
  3. use App\Entity\Core\File;
  4. use App\Service\File\Manager\AbstractFileManager;
  5. use App\Service\Twig\AssetsExtension;
  6. use App\Service\Utils\Path;
  7. use PHPUnit\Framework\TestCase;
  8. class AssetsExtensionTest extends TestCase
  9. {
  10. private AbstractFileManager $fileManager;
  11. public function setUp(): void {
  12. $this->fileManager = $this->getMockBuilder(AbstractFileManager::class)->disableOriginalConstructor()->getMock();
  13. }
  14. public function testGetFunctions(): void {
  15. $assetsExtension = $this
  16. ->getMockBuilder(AssetsExtension::class)
  17. ->setConstructorArgs([$this->fileManager])
  18. ->setMethodsExcept(['getFunctions'])
  19. ->getMock();
  20. $functions = $assetsExtension->getFunctions();
  21. $this->assertCount(2, $functions);
  22. $this->assertEquals('absPath', $functions[0]->getName());
  23. $this->assertEquals('toBase64Src', $functions[1]->getName());
  24. }
  25. public function testAbsPath(): void {
  26. $assetsExtension = $this
  27. ->getMockBuilder(AssetsExtension::class)
  28. ->setConstructorArgs([$this->fileManager])
  29. ->setMethodsExcept(['absPath'])
  30. ->getMock();
  31. $publicDir = Path::getProjectDir();
  32. $this->assertEquals(
  33. $publicDir . '/public/foo',
  34. $assetsExtension->absPath('foo')
  35. );
  36. $this->assertEquals(
  37. $publicDir . '/public/foo/bar',
  38. $assetsExtension->absPath('foo/bar')
  39. );
  40. $this->assertEquals(
  41. $publicDir . '/public',
  42. $assetsExtension->absPath('')
  43. );
  44. }
  45. public function testToBase64Src(): void {
  46. $assetsExtension = $this
  47. ->getMockBuilder(AssetsExtension::class)
  48. ->setConstructorArgs([$this->fileManager])
  49. ->setMethodsExcept(['toBase64Src'])
  50. ->getMock();
  51. $file = $this->getMockBuilder(File::class)->getMock();
  52. $file->method('getMimeType')->willReturn('mime');
  53. $this->fileManager->method('read')->with($file)->willReturn('foo');
  54. $this->assertEquals(
  55. 'data:mime;base64,' . base64_encode('foo'),
  56. $assetsExtension->toBase64Src($file)
  57. );
  58. }
  59. }