CreateByBatchTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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. ->createMany($this->makeArray($this->orderAmount,[
  37. 'status'=>'未处理',
  38. 'batch_id' => function(){return $this->getTargetFieldCirculately($this->data['batches']);}
  39. ]));
  40. $this->data['orderBins'] =
  41. factory(OrderBin::class)
  42. ->createMany($this->makeArray($this->orderAmount,[
  43. 'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);},
  44. 'number'=>$this->getIntegerIncreasely('orderBins_number'),
  45. ]));
  46. $this->data['orderCommodities'] =
  47. factory(OrderCommodity::class)
  48. ->createMany($this->makeArray($this->orderCommodityAmount,[
  49. 'order_id' => function(){return $this->getTargetFieldCirculately($this->data['orders']);},
  50. ]));
  51. }
  52. public function testReturned()
  53. {
  54. $this->service=$this->subMock([
  55. 'class'=>StationTaskCommodityService::class,
  56. 'subServices'=>[
  57. [
  58. 'serviceName'=>'materialBoxService',
  59. 'class'=>MaterialBoxService::class,
  60. 'methods'=>[
  61. 'firstOrCreate'=>new MaterialBox(['id'=>1]),
  62. ],
  63. ],
  64. ]
  65. ]);
  66. // $this->data['stationTaskCommodities']
  67. // =(function(){
  68. if(!isset($this->data['stationTaskCommodities']))
  69. $this->data['stationTaskCommodities'] = collect();
  70. foreach($this->data['batches'] as $batch){
  71. $this->data['stationTaskCommodities']
  72. =$this->data['stationTaskCommodities']->merge(
  73. $this->service->createByBatch($batch)
  74. );
  75. }
  76. // return $this->data['stationTaskCommodities'];
  77. // })();
  78. $this->data['stationTaskCommodities']=StationTaskCommodity::query()->whereIn('order_id',data_get($this->data['orders'],'*.id')??[])->get();
  79. $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count());
  80. }
  81. function tearDown(): void
  82. {
  83. StationTaskCommodity::query()
  84. ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[])
  85. ->delete();
  86. Batch::query()
  87. ->whereIn('id',data_get($this->data['batches'],'*.id')??[])
  88. ->delete();
  89. Order::query()
  90. ->whereIn('id',data_get($this->data['orders'],'*.id')??[])
  91. ->delete();
  92. OrderBin::query()
  93. ->whereIn('id',data_get($this->data['orderBins'],'*.id')??[])
  94. ->delete();
  95. OrderCommodity::query()
  96. ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[])
  97. ->delete();
  98. parent::tearDown();
  99. }
  100. }