CreateByBatchTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. namespace Tests\Services\StationTaskCommodityService;
  3. use App\Batch;
  4. use App\Order;
  5. use App\OrderBin;
  6. use App\OrderCommodity;
  7. use App\Services\StationTaskCommodityService;
  8. use Tests\TestCase;
  9. use App\StationTaskCommodity;
  10. class CreateByBatchTest extends TestCase
  11. {
  12. /** @var StationTaskCommodityService $service */
  13. public $service;
  14. private $data;
  15. private $batchAmount=1;
  16. private $orderAmount=4;
  17. private $orderCommodityAmount=8;
  18. function setUp(): void
  19. {
  20. parent::setUp();
  21. $this->service = app('StationTaskCommodityService');
  22. $this->data['batches'] =
  23. factory(Batch::class,
  24. $this->batchAmount)
  25. ->create([
  26. 'status'=>'未处理',
  27. ]);
  28. $this->data['orders'] =
  29. factory(Order::class,
  30. $this->orderAmount)
  31. ->create([
  32. 'status'=>'未处理',
  33. 'batch_id'=>(function(){
  34. if(!isset($this->data['temBatchId_orders'])){
  35. $this->data['temBatchId_orders']=$this->batchAmount;
  36. }
  37. $this->data['temBatchId_orders']++;
  38. if($this->data['temBatchId_orders']>=$this->batchAmount)$this->data['temBatchId_orders']=0;
  39. return $this->data['batches'][$this->data['temBatchId_orders']];
  40. })(),
  41. ]);
  42. $this->data['ordersBins'] =
  43. factory(OrderBin::class,
  44. $this->orderAmount)
  45. ->create([
  46. 'order_id'=>(function(){
  47. if(!isset($this->data['temOrderId_ordersBins'])){
  48. $this->data['temOrderId_ordersBins']=-1;
  49. }
  50. $this->data['temOrderId_ordersBins']++;
  51. return $this->data['orders'][$this->data['temOrderId_ordersBins']];
  52. })(),
  53. 'number'=>(function(){
  54. if(!isset($this->data['temNumber_ordersBins'])){
  55. $this->data['temNumber_ordersBins']=-1;
  56. }
  57. $this->data['temNumber_ordersBins']++;
  58. return $this->data['temNumber_ordersBins'];
  59. })(),
  60. ]);
  61. $this->data['orderCommodities'] =
  62. factory(OrderCommodity::class,
  63. $this->orderCommodityAmount)
  64. ->create([
  65. 'order_id'=>(function(){
  66. if(!isset($this->data['temOrderId_orderCommodities'])){
  67. $this->data['temOrderId_orderCommodities']=$this->orderAmount;
  68. }
  69. $this->data['temOrderId_orderCommodities']++;
  70. if($this->data['temOrderId_orderCommodities']>=$this->orderAmount)$this->data['temOrderId_orderCommodities']=0;
  71. return $this->data['orders'][$this->data['temOrderId_orderCommodities']];
  72. })(),
  73. ]);
  74. }
  75. public function testReturned()
  76. {
  77. $this->data['stationTaskCommodities']=(function(){
  78. if(!isset($this->data['stationTaskCommodities']))
  79. $this->data['stationTaskCommodities'] = collect();
  80. foreach($this->data['batches'] as $batch){
  81. $this->data['stationTaskCommodities']
  82. =$this->data['stationTaskCommodities']->merge($this->service->createByBatch($batch));
  83. }
  84. return $this->data['stationTaskCommodities'];
  85. })();
  86. $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count());
  87. }
  88. function tearDown(): void
  89. {
  90. StationTaskCommodity::query()
  91. ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[])
  92. ->delete();
  93. parent::tearDown();
  94. }
  95. }