CreateByBatchTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace Tests\Services\StationTaskCommodityService;
  3. use App\Batch;
  4. use App\MaterialBox;
  5. use App\Order;
  6. use App\OrderBin;
  7. use App\OrderCommodity;
  8. use App\Services\MaterialBoxService;
  9. use App\Services\StationRuleBatchService;
  10. use App\Services\StationTaskCommodityService;
  11. use App\Services\StationTypeService;
  12. use Tests\TestCase;
  13. use App\StationTaskCommodity;
  14. use App\Traits\TestMockSubServices;
  15. class CreateByBatchTest extends TestCase
  16. {
  17. use TestMockSubServices;
  18. /** @var StationTaskCommodityService $service */
  19. public $service;
  20. private $data;
  21. private $batchAmount=1;
  22. private $orderAmount=4;
  23. private $orderCommodityAmount=8;
  24. function setUp(): void
  25. {
  26. parent::setUp();
  27. $this->service = app('StationTaskCommodityService');
  28. $this->data['batches'] =
  29. factory(Batch::class,
  30. $this->batchAmount)
  31. ->create([
  32. 'status'=>'未处理',
  33. ]);
  34. $this->data['orders'] =
  35. factory(Order::class,
  36. $this->orderAmount)
  37. ->create([
  38. 'status'=>'未处理',
  39. 'batch_id'=>$this->getTargetIdCirculately($this->data['batches']),
  40. ]);
  41. $this->data['orderBins'] =
  42. factory(OrderBin::class,
  43. $this->orderAmount)
  44. ->create([
  45. 'order_id'=>$this->getTargetIdCirculately($this->data['orders']),
  46. 'number'=>$this->getIntegerIncreasely('orderBins_number'),
  47. ]);
  48. $this->data['orderCommodities'] =
  49. factory(OrderCommodity::class,
  50. $this->orderCommodityAmount)
  51. ->create([
  52. 'order_id'=>(function(){
  53. if(!isset($this->data['temOrderId_orderCommodities'])){
  54. $this->data['temOrderId_orderCommodities']=$this->orderAmount;
  55. }
  56. $this->data['temOrderId_orderCommodities']++;
  57. if($this->data['temOrderId_orderCommodities']>=$this->orderAmount)$this->data['temOrderId_orderCommodities']=0;
  58. return $this->data['orders'][$this->data['temOrderId_orderCommodities']];
  59. })(),
  60. ]);
  61. }
  62. public function testReturned()
  63. {
  64. $this->service=$this->subMock([
  65. 'class'=>StationTaskCommodityService::class,
  66. 'subServices'=>[
  67. [
  68. 'serviceName'=>'materialBoxService',
  69. 'class'=>MaterialBoxService::class,
  70. 'methods'=>[
  71. 'firstOrCreate'=>new MaterialBox(['id'=>1]),
  72. ],
  73. ],
  74. ]
  75. ]);
  76. $this->data['stationTaskCommodities']
  77. =(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(
  83. $this->service->createByBatch($batch)
  84. );
  85. }
  86. return $this->data['stationTaskCommodities'];
  87. })();
  88. $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count());
  89. }
  90. function tearDown(): void
  91. {
  92. StationTaskCommodity::query()
  93. ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[])
  94. ->delete();
  95. Batch::query()
  96. ->whereIn('id',data_get($this->data['batches'],'*.id')??[])
  97. ->delete();
  98. Order::query()
  99. ->whereIn('id',data_get($this->data['orders'],'*.id')??[])
  100. ->delete();
  101. OrderBin::query()
  102. ->whereIn('id',data_get($this->data['orderBins'],'*.id')??[])
  103. ->delete();
  104. OrderCommodity::query()
  105. ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[])
  106. ->delete();
  107. parent::tearDown();
  108. }
  109. }