QueuedQueryExportTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace Maatwebsite\Excel\Tests;
  3. use Maatwebsite\Excel\SettingsProvider;
  4. use Maatwebsite\Excel\Tests\Data\Stubs\AfterQueueExportJob;
  5. use Maatwebsite\Excel\Tests\Data\Stubs\Database\User;
  6. use Maatwebsite\Excel\Tests\Data\Stubs\FromUsersQueryExport;
  7. use Maatwebsite\Excel\Tests\Data\Stubs\FromUsersQueryExportWithMapping;
  8. use Maatwebsite\Excel\Tests\Data\Stubs\FromUsersScoutExport;
  9. class QueuedQueryExportTest extends TestCase
  10. {
  11. /**
  12. * Setup the test environment.
  13. */
  14. protected function setUp(): void
  15. {
  16. parent::setUp();
  17. $this->loadLaravelMigrations(['--database' => 'testing']);
  18. $this->withFactories(__DIR__ . '/Data/Stubs/Database/Factories');
  19. factory(User::class)->times(100)->create([]);
  20. }
  21. /**
  22. * @test
  23. */
  24. public function can_queue_an_export()
  25. {
  26. $export = new FromUsersQueryExport();
  27. $export->queue('queued-query-export.xlsx')->chain([
  28. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-query-export.xlsx'),
  29. ]);
  30. $actual = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-query-export.xlsx', 'Xlsx');
  31. $this->assertCount(100, $actual);
  32. // 6 of the 7 columns in export, excluding the "hidden" password column.
  33. $this->assertCount(6, $actual[0]);
  34. }
  35. /**
  36. * @test
  37. */
  38. public function can_queue_an_export_with_batch_cache_and_file_store()
  39. {
  40. config()->set('queue.default', 'sync');
  41. config()->set('excel.cache.driver', 'batch');
  42. config()->set('excel.cache.illuminate.store', 'file');
  43. // Reset the cache settings
  44. $this->app->make(SettingsProvider::class)->provide();
  45. $export = new FromUsersQueryExport();
  46. $export->queue('queued-query-export.xlsx')->chain([
  47. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-query-export.xlsx'),
  48. ]);
  49. $actual = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-query-export.xlsx', 'Xlsx');
  50. $this->assertCount(100, $actual);
  51. }
  52. /**
  53. * @test
  54. */
  55. public function can_queue_an_export_with_mapping()
  56. {
  57. $export = new FromUsersQueryExportWithMapping();
  58. $export->queue('queued-query-export-with-mapping.xlsx')->chain([
  59. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-query-export-with-mapping.xlsx'),
  60. ]);
  61. $actual = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-query-export-with-mapping.xlsx', 'Xlsx');
  62. $this->assertCount(100, $actual);
  63. // Only 1 column when using map()
  64. $this->assertCount(1, $actual[0]);
  65. $this->assertEquals(User::value('name'), $actual[0][0]);
  66. }
  67. /**
  68. * @test
  69. */
  70. public function can_queue_scout_export()
  71. {
  72. if (!class_exists('\Laravel\Scout\Engines\DatabaseEngine')) {
  73. $this->markTestSkipped('Laravel Scout is too old');
  74. return;
  75. }
  76. $export = new FromUsersScoutExport();
  77. $export->queue('queued-scout-export.xlsx')->chain([
  78. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-scout-export.xlsx'),
  79. ]);
  80. $actual = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-scout-export.xlsx', 'Xlsx');
  81. $this->assertCount(100, $actual);
  82. // 6 of the 7 columns in export, excluding the "hidden" password column.
  83. $this->assertCount(6, $actual[0]);
  84. }
  85. }