DelegatedMacroableTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace Maatwebsite\Excel\Tests;
  3. use Maatwebsite\Excel\Concerns\Exportable;
  4. use Maatwebsite\Excel\Concerns\RegistersEventListeners;
  5. use Maatwebsite\Excel\Concerns\WithEvents;
  6. use Maatwebsite\Excel\Events\BeforeExport;
  7. use Maatwebsite\Excel\Events\BeforeSheet;
  8. use Maatwebsite\Excel\Sheet;
  9. use Maatwebsite\Excel\Writer;
  10. use PhpOffice\PhpSpreadsheet\Document\Properties;
  11. class DelegatedMacroableTest extends TestCase
  12. {
  13. /**
  14. * @test
  15. */
  16. public function can_call_methods_from_delegate()
  17. {
  18. $export = new class implements WithEvents
  19. {
  20. use RegistersEventListeners, Exportable;
  21. public static function beforeExport(BeforeExport $event)
  22. {
  23. // ->getProperties() will be called via __call on the ->getDelegate()
  24. TestCase::assertInstanceOf(Properties::class, $event->writer->getProperties());
  25. }
  26. };
  27. $export->download('some-file.xlsx');
  28. }
  29. /**
  30. * @test
  31. */
  32. public function can_use_writer_macros()
  33. {
  34. $called = false;
  35. Writer::macro('test', function () use (&$called) {
  36. $called = true;
  37. });
  38. $export = new class implements WithEvents
  39. {
  40. use RegistersEventListeners, Exportable;
  41. public static function beforeExport(BeforeExport $event)
  42. {
  43. // call macro method
  44. $event->writer->test();
  45. }
  46. };
  47. $export->download('some-file.xlsx');
  48. $this->assertTrue($called);
  49. }
  50. /**
  51. * @test
  52. */
  53. public function can_use_sheet_macros()
  54. {
  55. $called = false;
  56. Sheet::macro('test', function () use (&$called) {
  57. $called = true;
  58. });
  59. $export = new class implements WithEvents
  60. {
  61. use RegistersEventListeners, Exportable;
  62. public static function beforeSheet(BeforeSheet $event)
  63. {
  64. // call macro method
  65. $event->sheet->test();
  66. }
  67. };
  68. $export->download('some-file.xlsx');
  69. $this->assertTrue($called);
  70. }
  71. }