QueuedViewExportTest.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Maatwebsite\Excel\Tests;
  3. use Illuminate\Support\Collection;
  4. use Maatwebsite\Excel\Tests\Data\Stubs\AfterQueueExportJob;
  5. use Maatwebsite\Excel\Tests\Data\Stubs\Database\User;
  6. use Maatwebsite\Excel\Tests\Data\Stubs\FromViewExportWithMultipleSheets;
  7. use Maatwebsite\Excel\Tests\Data\Stubs\SheetForUsersFromView;
  8. class QueuedViewExportTest extends TestCase
  9. {
  10. /**
  11. * Setup the test environment.
  12. */
  13. protected function setUp(): void
  14. {
  15. parent::setUp();
  16. $this->loadLaravelMigrations(['--database' => 'testing']);
  17. $this->withFactories(__DIR__ . '/Data/Stubs/Database/Factories');
  18. }
  19. /**
  20. * @test
  21. */
  22. public function can_queue_an_export()
  23. {
  24. $users = factory(User::class)->times(100)->create([]);
  25. $export = new SheetForUsersFromView($users);
  26. $export->queue('queued-view-export.xlsx')->chain([
  27. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-view-export.xlsx'),
  28. ]);
  29. $actual = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-view-export.xlsx', 'Xlsx');
  30. $this->assertCount(101, $actual);
  31. }
  32. /**
  33. * @test
  34. */
  35. public function can_export_multiple_sheets_from_view()
  36. {
  37. /** @var Collection|User[] $users */
  38. $users = factory(User::class)->times(300)->make();
  39. $export = new FromViewExportWithMultipleSheets($users);
  40. $export->queue('queued-multiple-view-export.xlsx')->chain([
  41. new AfterQueueExportJob(__DIR__ . '/Data/Disks/Local/queued-multiple-view-export.xlsx'),
  42. ]);
  43. $contents = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-multiple-view-export.xlsx', 'Xlsx', 0);
  44. $expected = $users->forPage(1, 100)->map(function (User $user) {
  45. return [
  46. $user->name,
  47. $user->email,
  48. ];
  49. })->prepend(['Name', 'Email'])->toArray();
  50. $this->assertEquals(101, sizeof($contents));
  51. $this->assertEquals($expected, $contents);
  52. $contents = $this->readAsArray(__DIR__ . '/Data/Disks/Local/queued-multiple-view-export.xlsx', 'Xlsx', 2);
  53. $expected = $users->forPage(3, 100)->map(function (User $user) {
  54. return [
  55. $user->name,
  56. $user->email,
  57. ];
  58. })->prepend(['Name', 'Email'])->toArray();
  59. $this->assertEquals(101, sizeof($contents));
  60. $this->assertEquals($expected, $contents);
  61. }
  62. }