ajun 5 лет назад
Родитель
Сommit
f9b4310ded

+ 1 - 1
package-lock.json

@@ -6254,7 +6254,7 @@
         },
         "minimist": {
             "version": "1.2.0",
-            "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
+            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
             "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
             "dev": true
         },

+ 83 - 4
tests/Services/OrderService/CreateOrFindOrderInfoTest.php

@@ -2,9 +2,17 @@
 
 namespace Tests\Services\OrderService;
 
+use App\Commodity;
+use App\Logistic;
 use App\OracleDOCOrderHeader;
 use App\Order;
+use App\OrderPackage;
+use App\OrderPackageCommodities;
+use App\Owner;
 use App\Services\OrderService;
+use App\Shop;
+use App\Warehouse;
+use Carbon\Carbon;
 use Illuminate\Foundation\Testing\RefreshDatabase;
 use Tests\TestCase;
 
@@ -16,11 +24,63 @@ class CreateOrFindOrderInfoTest extends TestCase
      * @var OrderService $orderService
      */
     public $orderService;
+    private $data = [];
 
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
         $this->orderService = app('OrderService');
+        $this->data['orderno'] = '订单编号'.((string)Carbon::now());
+        $this->data['warehouse_code'] = 'test';
+        $this->data['userdefine1'] ='测试物流';
+        $this->data['customerid'] = '测试货主';
+        $this->data['issuepartyname'] = '测试商铺';
+        $this->data['orderType'] = '测试';
+
+        $orderHeader = new OracleDOCOrderHeader();
+        $orderHeader->orderno = md5('订单编号');
+        $orderHeader->c_contact='京东旗舰店';
+        $orderHeader->c_tel2 = md5('承运商');
+        $orderHeader->c_province = md5('收货人');
+        $orderHeader->c_city = md5('shou');
+        $orderHeader->c_district = md5('shou');
+        $orderHeader->c_address1 = md5('shou');
+        $orderHeader->soreference1 = md5('客户订单号');
+        $orderHeader->userdefine1 = $this->data['userdefine1'];
+        $orderHeader->warehouseid = $this->data['warehouse_code'];
+        $orderHeader->customerid = $this->data['customerid'];
+        $orderHeader->issuepartyname =$this->data['issuepartyname'];
+        $orderHeader['orderType']['codename_c'] =$this->data['orderType'];
+        $orderHeader->edittime = Carbon::now();
+        $orderHeader->addtime =  Carbon::now();
+        $this->data['orderHeader'] =$orderHeader;
+        $this->data['logistic'] =  Logistic::query()->firstOrCreate(['code'=>$this->data['userdefine1'],'name'=>'测试物流']);
+        $this->data['owner'] = Owner::query()->firstOrCreate(['code'=>$this->data['customerid'],'name'=>'测试货主']);
+        $this->data['shop'] =Shop::query()->firstOrCreate(['name'=>$this->data['issuepartyname'],'owner_id'=>$this->data['owner']->id]);
+        $this->data['warehouse'] = Warehouse::query()->firstOrCreate(["code"=>$this->data['warehouse_code'],"name"=>'测试仓库']);
+        $orderHeader->actAllocationDetails = $this->getActAllocationDetails($this->data['orderno'],$this->data['owner']);
+    }
+
+    public function getActAllocationDetails($orderno,$owner){
+        $sums =  rand(3,6);
+        $actAllocationDetails = [];
+        $picktotraceids  = [
+            md5((string)rand(10000,99999)),md5((string)rand(10000,99999)),md5((string)rand(10000,99999)),md5((string)rand(10000,99999))
+        ];
+        $sku = ['ABC'.(rand(10000,99999)),'ABC'.(rand(10000,99999)),'ABC'.(rand(10000,99999))];
+        foreach ($sku as $item) {
+            Commodity::query()->firstOrCreate(['owner_id'=>$owner['id'],'sku'=>$item,'name'=>md5($item)]);
+        }
+        for ($i=0;$i<$sums;$i++){
+            $actAllocationDetails[] =[
+                'orderno' => $orderno,
+                'picktotraceid' => $picktotraceids[rand(0,count($picktotraceids)-1)],
+                'sku' => $sku[rand(0,count($sku)-1)],
+                'qty_each' => rand(1,15),
+                'customerid' =>$owner['code']
+            ];
+        }
+        return $actAllocationDetails;
     }
 
     /**
@@ -28,16 +88,35 @@ class CreateOrFindOrderInfoTest extends TestCase
      */
     public function createOrFindOrderInfo()
     {
-        $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first();
-        $this->orderService->createOrFindOrderInfo($orderHeader);
-        $order = Order::query()->where('code',$orderHeader->orderno)->first();
+        $this->orderService->createOrFindOrderInfo($this->data['orderHeader']);
+        $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
         $this->assertNotNull($order);
-        $this->assertEquals($order->code,$orderHeader->orderno);
+        $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
+        $orderPackages  = OrderPackage::query()->where('order_id',$order['id'])->get();
+        $orderPackagesCommodities = OrderPackageCommodities::query()->whereIn('order_package_id');
+        $this->data['delete']['order_id']  = $order['id'];
+        $this->data['delete']['order_package_id']  = $orderPackages->each(function($orderPackage){
+            return $orderPackage['id'];
+        });
+        $this->data['delete']['order_package_commodity_id']  = $orderPackagesCommodities->each(function($orderPackageCommodity){
+            return $orderPackageCommodity['id'];
+        });
+        $this->data['delete']['commodity_id']  = $orderPackagesCommodities->each(function($orderPackageCommodity){
+            return $orderPackageCommodity['commodity_id'];
+        });
     }
 
     public function tearDown(): void
     {
         cache()->flush();
+        $this->data['logistic']->delete();
+        $this->data['owner']->delete();
+        $this->data['shop']->delete();
+        $this->data['warehouse']->delete();
+        Order::find($this->data['delete']['order_id'])->delete();
+        OrderPackage::query()->whereIn('id',$this->data['delete']['order_package_id'])->delete();
+        OrderPackageCommodities::query()->whereIn('id',$this->data['delete']['order_package_commodity_id'])->delete();
+        Commodity::query()->whereIn('id',$this->data['delete']['commodity_id'])->delete();
         parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }

+ 41 - 21
tests/Services/OrderService/CreateOrFindOrderTest.php

@@ -9,6 +9,8 @@ use App\Order;
 use App\Owner;
 use App\Services\OrderService;
 use App\Shop;
+use App\Warehouse;
+use Carbon\Carbon;
 use Illuminate\Foundation\Testing\RefreshDatabase;
 use Illuminate\Foundation\Testing\WithFaker;
 use Tests\TestCase;
@@ -20,43 +22,61 @@ class CreateOrFindOrderTest extends TestCase
      * @var OrderService $orderService
      */
     public $orderService;
+    private $data = [];
     public function setUp(): void
     {
         parent::setUp();
         $this->orderService = app('OrderService');
-    }
+        $this->data['orderno'] = md5('订单编号'.((string)Carbon::now()));
+        $this->data['warehouse_code'] = 'test';
+        $this->data['userdefine1'] ='测试物流';
+        $this->data['customerid'] = '测试货主';
+        $this->data['issuepartyname'] = '测试商铺';
+        $this->data['orderType'] = '测试';
 
+        $orderHeader = new OracleDOCOrderHeader();
+        $orderHeader->orderno = md5('订单编号');
+        $orderHeader->c_contact= '京东旗舰店';
+        $orderHeader->c_tel2 = md5('承运商');
+        $orderHeader->c_province = md5('收货人');
+        $orderHeader->c_city = md5('shou');
+        $orderHeader->c_district = md5('shou');
+        $orderHeader->c_address1 = md5('shou');
+        $orderHeader->soreference1 = md5('客户订单号');
+        $orderHeader->userdefine1 = $this->data['userdefine1'];
+        $orderHeader->warehouseid = $this->data['warehouse_code'];
+        $orderHeader->customerid = $this->data['customerid'];
+        $orderHeader->issuepartyname =$this->data['issuepartyname'];
+        $orderHeader->setAppends(['orderType'=>['codename_c'=>$this->data['orderType']]]);
+        $orderHeader->edittime = Carbon::now();
+        $orderHeader->addtime =  Carbon::now();
+        $this->data['orderHeader'] =$orderHeader;
+        $this->data['logistic'] =  Logistic::query()->firstOrCreate(['code'=>$this->data['userdefine1'],'name'=>'测试物流']);
+        $this->data['owner'] = Owner::query()->firstOrCreate(['code'=>$this->data['customerid'],'name'=>'测试货主']);
+        $this->data['shop'] =Shop::query()->firstOrCreate(['name'=>$this->data['issuepartyname'],'owner_id'=>$this->data['owner']->id]);
+        $this->data['warehouse'] = Warehouse::query()->firstOrCreate(["code"=>$this->data['warehouse_code'],"name"=>'测试仓库']);
+    }
     /**
      * @test
      */
     public function createOrFindOrder()
     {
-        $orderHeader = OracleDOCOrderHeader::query()
-            ->where('sostatus',99)
-            ->whereNotNull('issuepartyname')
-            ->whereNotNull('userdefine1')
-            ->orderByDesc('addtime')
-            ->first();
-        $baseCustomer = OracleBasCustomer::query()
-            ->selectRaw('Customer_Type,CustomerID,Descr_C')
-            ->where('Customer_Type','CA')
-            ->where('CustomerID',$orderHeader->userdefine1)->first();
-        Logistic::query()->firstOrCreate(['code'=>$orderHeader->userdefine1,'name'=>$baseCustomer->descr_c]);
-        $owner = Owner::query()->firstOrCreate(['code'=>$orderHeader->customerid,'name'=>'']);
-        Shop::query()->firstOrCreate(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id]);
-        app('WarehouseService')->firstOrCreate(["code"=>$orderHeader->warehouseid],["code"=>$orderHeader->warehouseid,"name"=>$orderHeader->warehouseid]);
-        $this->assertNotNull($orderHeader);
-        $this->orderService->createOrFindOrder($orderHeader);
-        $order = Order::query()->where('code',$orderHeader->orderno)->first();
+        $this->orderService->createOrFindOrder($this->data['orderHeader']);
+        $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
         $this->assertNotNull($order);
-        $this->assertEquals($order->code,$orderHeader->orderno);
-        $this->assertEquals((string)$order->created_at,(string)$orderHeader->addtime);
-        $this->assertEquals((string)$order->wms_edittime,(string)$orderHeader->edittime);
+        $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
+        $this->assertEquals((string)$order->created_at,(string)$this->data['orderHeader']['addtime']);
+        $this->assertEquals((string)$order->wms_edittime,(string)$this->data['orderHeader']['edittime']);
     }
 
     public function tearDown(): void
     {
         cache()->flush();
+        $this->data['logistic']->delete();
+        $this->data['owner']->delete();
+        $this->data['shop']->delete();
+        $this->data['warehouse']->delete();
+        Order::query()->where('code',$this->data['orderHeader']['orderno'])->delete();
         parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }

+ 32 - 0
tests/Services/OrderService/FindOrCreateByClientCodeTest.php

@@ -2,8 +2,13 @@
 
 namespace Tests\Services\OrderService\FindOrCreateByClientCodeTest;
 
+use App\Logistic;
 use App\OracleDOCOrderHeader;
+use App\Order;
+use App\Owner;
 use App\Services\OrderService;
+use App\Shop;
+use App\Warehouse;
 use Illuminate\Foundation\Testing\RefreshDatabase;
 use Illuminate\Foundation\Testing\WithFaker;
 use Tests\TestCase;
@@ -14,11 +19,32 @@ class FindOrCreateByClientCodeTest extends TestCase
 
     /** @var OrderService $service */
     public $service;
+    private $data;
 
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
         $this->service=app('OrderService');
+
+        $orderHeader = new OracleDOCOrderHeader();
+        $orderHeader->orderno = md5('订单编号');
+        $orderHeader->c_contact= '京东旗舰店';
+        $orderHeader->c_tel2 = md5('承运商');
+        $orderHeader->c_province = md5('收货人');
+        $orderHeader->c_city = md5('shou');
+        $orderHeader->c_district = md5('shou');
+        $orderHeader->c_address1 = md5('shou');
+        $orderHeader->soreference1 = md5('客户订单号');
+        $orderHeader->userdefine1 = $this->data['userdefine1'];
+        $orderHeader->warehouseid = $this->data['warehouse_code'];
+        $orderHeader->customerid = $this->data['customerid'];
+        $orderHeader->issuepartyname =$this->data['issuepartyname'];
+        $orderHeader->setAppends(['orderType'=>['codename_c'=>$this->data['orderType']]]);
+
+        $this->data['logistic'] =  Logistic::query()->firstOrCreate(['code'=>$this->data['userdefine1'],'name'=>'测试物流']);
+        $this->data['owner'] = Owner::query()->firstOrCreate(['code'=>$this->data['customerid'],'name'=>'测试货主']);
+        $this->data['shop'] =Shop::query()->firstOrCreate(['name'=>$this->data['issuepartyname'],'owner_id'=>$this->data['owner']->id]);
+        $this->data['warehouse'] = Warehouse::query()->firstOrCreate(["code"=>$this->data['warehouse_code'],"name"=>'测试仓库']);
     }
 
     /**
@@ -41,6 +67,12 @@ class FindOrCreateByClientCodeTest extends TestCase
 
     public function tearDown(): void
     {
+        cache()->flush();
+        $this->data['logistic']->delete();
+        $this->data['owner']->delete();
+        $this->data['shop']->delete();
+        $this->data['warehouse']->delete();
+        Order::query()->where('code',$this->data['orderHeader']['orderno'])->delete();
         parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }