CreateByBatchTest.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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\StationRuleBatchService;
  8. use App\Services\StationTaskCommodityService;
  9. use App\Services\StationTypeService;
  10. use Tests\TestCase;
  11. use App\StationTaskCommodity;
  12. class CreateByBatchTest extends TestCase
  13. {
  14. /** @var StationTaskCommodityService $service */
  15. public $service;
  16. private $data;
  17. private $batchAmount=1;
  18. private $orderAmount=4;
  19. private $orderCommodityAmount=8;
  20. function setUp(): void
  21. {
  22. parent::setUp();
  23. $this->service = app('StationTaskCommodityService');
  24. $this->data['batches'] =
  25. factory(Batch::class,
  26. $this->batchAmount)
  27. ->create([
  28. 'status'=>'未处理',
  29. ]);
  30. $this->data['orders'] =
  31. factory(Order::class,
  32. $this->orderAmount)
  33. ->create([
  34. 'status'=>'未处理',
  35. 'batch_id'=>(function(){
  36. if(!isset($this->data['temBatchId_orders'])){
  37. $this->data['temBatchId_orders']=$this->batchAmount;
  38. }
  39. $this->data['temBatchId_orders']++;
  40. if($this->data['temBatchId_orders']>=$this->batchAmount)$this->data['temBatchId_orders']=0;
  41. return $this->data['batches'][$this->data['temBatchId_orders']];
  42. })(),
  43. ]);
  44. $this->data['orderBins'] =
  45. factory(OrderBin::class,
  46. $this->orderAmount)
  47. ->create([
  48. 'order_id'=>(function(){
  49. if(!isset($this->data['temOrderId_ordersBins'])){
  50. $this->data['temOrderId_ordersBins']=-1;
  51. }
  52. $this->data['temOrderId_ordersBins']++;
  53. return $this->data['orders'][$this->data['temOrderId_ordersBins']];
  54. })(),
  55. 'number'=>(function(){
  56. if(!isset($this->data['temNumber_ordersBins'])){
  57. $this->data['temNumber_ordersBins']=-1;
  58. }
  59. $this->data['temNumber_ordersBins']++;
  60. return $this->data['temNumber_ordersBins'];
  61. })(),
  62. ]);
  63. $this->data['orderCommodities'] =
  64. factory(OrderCommodity::class,
  65. $this->orderCommodityAmount)
  66. ->create([
  67. 'order_id'=>(function(){
  68. if(!isset($this->data['temOrderId_orderCommodities'])){
  69. $this->data['temOrderId_orderCommodities']=$this->orderAmount;
  70. }
  71. $this->data['temOrderId_orderCommodities']++;
  72. if($this->data['temOrderId_orderCommodities']>=$this->orderAmount)$this->data['temOrderId_orderCommodities']=0;
  73. return $this->data['orders'][$this->data['temOrderId_orderCommodities']];
  74. })(),
  75. ]);
  76. }
  77. public function testReturned()
  78. {
  79. ($mocking= function (){
  80. $stationTypeServiceMock=$this->createPartialMock(
  81. StationTypeService::class,
  82. ['aaa']
  83. );
  84. $stationRuleBatchServiceStr = 'stationRuleBatchService';
  85. $stationTypeServiceMock->app(
  86. $stationRuleBatchServiceStr,
  87. ($stationRuleBatchServiceMock=function(){
  88. $mock=$this->createPartialMock(
  89. StationTypeService::class,
  90. ['aaa']
  91. );
  92. $mock->method('getByBatch')->willReturn('ddd');
  93. return $mock;
  94. })
  95. );
  96. })();
  97. $this->data['stationTaskCommodities']
  98. =(function(){
  99. if(!isset($this->data['stationTaskCommodities']))
  100. $this->data['stationTaskCommodities'] = collect();
  101. foreach($this->data['batches'] as $batch){
  102. $this->data['stationTaskCommodities']
  103. =$this->data['stationTaskCommodities']->merge(
  104. $this->service->createByBatch($batch)//<<---testing it
  105. );
  106. }
  107. return $this->data['stationTaskCommodities'];
  108. })();
  109. $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count());
  110. }
  111. function tearDown(): void
  112. {
  113. StationTaskCommodity::query()
  114. ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[])
  115. ->delete();
  116. Batch::query()
  117. ->whereIn('id',data_get($this->data['batches'],'*.id')??[])
  118. ->delete();
  119. Order::query()
  120. ->whereIn('id',data_get($this->data['orders'],'*.id')??[])
  121. ->delete();
  122. OrderBin::query()
  123. ->whereIn('id',data_get($this->data['orderBins'],'*.id')??[])
  124. ->delete();
  125. OrderCommodity::query()
  126. ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[])
  127. ->delete();
  128. parent::tearDown();
  129. }
  130. }