RemembersRowNumberTest.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace Maatwebsite\Excel\Tests\Concerns;
  3. use Maatwebsite\Excel\Concerns\Importable;
  4. use Maatwebsite\Excel\Concerns\RemembersRowNumber;
  5. use Maatwebsite\Excel\Concerns\ToModel;
  6. use Maatwebsite\Excel\Concerns\WithBatchInserts;
  7. use Maatwebsite\Excel\Concerns\WithChunkReading;
  8. use Maatwebsite\Excel\Tests\TestCase;
  9. class RemembersRowNumberTest extends TestCase
  10. {
  11. /**
  12. * @test
  13. */
  14. public function can_set_and_get_row_number()
  15. {
  16. $import = new class
  17. {
  18. use Importable;
  19. use RemembersRowNumber;
  20. };
  21. $import->rememberRowNumber(50);
  22. $this->assertEquals(50, $import->getRowNumber());
  23. }
  24. /**
  25. * @test
  26. */
  27. public function can_access_row_number_on_import_to_model()
  28. {
  29. $import = new class implements ToModel
  30. {
  31. use Importable;
  32. use RemembersRowNumber;
  33. public $rowNumbers = [];
  34. public function model(array $row)
  35. {
  36. $this->rowNumbers[] = $this->getRowNumber();
  37. }
  38. };
  39. $import->import('import-batches.xlsx');
  40. $this->assertEquals([46, 47, 48, 49, 50, 51, 52, 53, 54, 55], array_slice($import->rowNumbers, 45, 10));
  41. }
  42. /**
  43. * @test
  44. */
  45. public function can_access_row_number_on_import_to_array_in_chunks()
  46. {
  47. $import = new class implements ToModel, WithChunkReading
  48. {
  49. use Importable;
  50. use RemembersRowNumber;
  51. public $rowNumbers = [];
  52. public function chunkSize(): int
  53. {
  54. return 50;
  55. }
  56. public function model(array $row)
  57. {
  58. $this->rowNumbers[] = $this->getRowNumber();
  59. }
  60. };
  61. $import->import('import-batches.xlsx');
  62. $this->assertEquals([46, 47, 48, 49, 50, 51, 52, 53, 54, 55], array_slice($import->rowNumbers, 45, 10));
  63. }
  64. /**
  65. * @test
  66. */
  67. public function can_access_row_number_on_import_to_array_in_chunks_with_batch_inserts()
  68. {
  69. $import = new class implements ToModel, WithChunkReading, WithBatchInserts
  70. {
  71. use Importable;
  72. use RemembersRowNumber;
  73. public $rowNumbers = [];
  74. public function chunkSize(): int
  75. {
  76. return 50;
  77. }
  78. public function model(array $row)
  79. {
  80. $this->rowNumbers[] = $this->rowNumber;
  81. }
  82. public function batchSize(): int
  83. {
  84. return 50;
  85. }
  86. };
  87. $import->import('import-batches.xlsx');
  88. $this->assertEquals([46, 47, 48, 49, 50, 51, 52, 53, 54, 55], array_slice($import->rowNumbers, 45, 10));
  89. }
  90. }