|
|
@@ -0,0 +1,100 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Tests\Services\StationTaskCommodityService;
|
|
|
+use App\Batch;
|
|
|
+use App\Order;
|
|
|
+use App\OrderBin;
|
|
|
+use App\OrderCommodity;
|
|
|
+use App\Services\StationTaskCommodityService;
|
|
|
+use Tests\TestCase;
|
|
|
+use App\StationTaskCommodity;
|
|
|
+
|
|
|
+class CreateByBatchTest extends TestCase
|
|
|
+{
|
|
|
+
|
|
|
+ /** @var StationTaskCommodityService $service */
|
|
|
+ public $service;
|
|
|
+ private $data;
|
|
|
+ private $batchAmount=1;
|
|
|
+ private $orderAmount=4;
|
|
|
+ private $orderCommodityAmount=8;
|
|
|
+ function setUp(): void
|
|
|
+ {
|
|
|
+ parent::setUp();
|
|
|
+ $this->service = app('StationTaskCommodityService');
|
|
|
+ $this->data['batches'] =
|
|
|
+ factory(Batch::class,
|
|
|
+ $this->batchAmount)
|
|
|
+ ->create([
|
|
|
+ 'status'=>'未处理',
|
|
|
+ ]);
|
|
|
+ $this->data['orders'] =
|
|
|
+ factory(Order::class,
|
|
|
+ $this->orderAmount)
|
|
|
+ ->create([
|
|
|
+ 'status'=>'未处理',
|
|
|
+ 'batch_id'=>(function(){
|
|
|
+ if(!isset($this->data['temBatchId_orders'])){
|
|
|
+ $this->data['temBatchId_orders']=$this->batchAmount;
|
|
|
+ }
|
|
|
+ $this->data['temBatchId_orders']++;
|
|
|
+ if($this->data['temBatchId_orders']>=$this->batchAmount)$this->data['temBatchId_orders']=0;
|
|
|
+ return $this->data['batches'][$this->data['temBatchId_orders']];
|
|
|
+ })(),
|
|
|
+ ]);
|
|
|
+ $this->data['ordersBins'] =
|
|
|
+ factory(OrderBin::class,
|
|
|
+ $this->orderAmount)
|
|
|
+ ->create([
|
|
|
+ 'order_id'=>(function(){
|
|
|
+ if(!isset($this->data['temOrderId_ordersBins'])){
|
|
|
+ $this->data['temOrderId_ordersBins']=-1;
|
|
|
+ }
|
|
|
+ $this->data['temOrderId_ordersBins']++;
|
|
|
+ return $this->data['orders'][$this->data['temOrderId_ordersBins']];
|
|
|
+ })(),
|
|
|
+ 'number'=>(function(){
|
|
|
+ if(!isset($this->data['temNumber_ordersBins'])){
|
|
|
+ $this->data['temNumber_ordersBins']=-1;
|
|
|
+ }
|
|
|
+ $this->data['temNumber_ordersBins']++;
|
|
|
+ return $this->data['temNumber_ordersBins'];
|
|
|
+ })(),
|
|
|
+ ]);
|
|
|
+ $this->data['orderCommodities'] =
|
|
|
+ factory(OrderCommodity::class,
|
|
|
+ $this->orderCommodityAmount)
|
|
|
+ ->create([
|
|
|
+ 'order_id'=>(function(){
|
|
|
+ if(!isset($this->data['temOrderId_orderCommodities'])){
|
|
|
+ $this->data['temOrderId_orderCommodities']=$this->orderAmount;
|
|
|
+ }
|
|
|
+ $this->data['temOrderId_orderCommodities']++;
|
|
|
+ if($this->data['temOrderId_orderCommodities']>=$this->orderAmount)$this->data['temOrderId_orderCommodities']=0;
|
|
|
+ return $this->data['orders'][$this->data['temOrderId_orderCommodities']];
|
|
|
+ })(),
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function testReturned()
|
|
|
+ {
|
|
|
+ $this->data['stationTaskCommodities']=(function(){
|
|
|
+ if(!isset($this->data['stationTaskCommodities']))
|
|
|
+ $this->data['stationTaskCommodities'] = collect();
|
|
|
+ foreach($this->data['batches'] as $batch){
|
|
|
+ $this->data['stationTaskCommodities']
|
|
|
+ =$this->data['stationTaskCommodities']->merge($this->service->createByBatch($batch));
|
|
|
+ }
|
|
|
+ return $this->data['stationTaskCommodities'];
|
|
|
+ })();
|
|
|
+ $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count());
|
|
|
+ }
|
|
|
+
|
|
|
+ function tearDown(): void
|
|
|
+ {
|
|
|
+ StationTaskCommodity::query()
|
|
|
+ ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[])
|
|
|
+ ->delete();
|
|
|
+ parent::tearDown();
|
|
|
+ }
|
|
|
+}
|