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

+ 46 - 65
tests/Services/OrderService/CreateOrFindOrderInfoTest.php

@@ -4,6 +4,11 @@ namespace Tests\Services\OrderService;
 
 use App\Commodity;
 use App\Logistic;
+use App\OracleActAllocationDetails;
+use App\OracleBasCode;
+use App\OracleBasCustomer;
+use App\OracleBasSKU;
+use App\OracleDOCOrderDetail;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
@@ -14,6 +19,7 @@ use App\Shop;
 use App\Warehouse;
 use Carbon\Carbon;
 use Illuminate\Foundation\Testing\RefreshDatabase;
+use Illuminate\Support\Str;
 use Tests\TestCase;
 
 class CreateOrFindOrderInfoTest extends TestCase
@@ -30,57 +36,40 @@ class CreateOrFindOrderInfoTest extends TestCase
     {
         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']);
-    }
+        $basSku1 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+        $basSku2 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+        $basSku3 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+
+        $logistic_BasCustomer = factory(OracleBasCustomer::class)->make(['customer_type'=>'CA','customerid'=>'TEST_CA','descr_c'=>'测试承运商']);
+        $owner_basCustomer  = factory(OracleBasCustomer::class)->make(['customer_type'=>'OW','customerid'=>'TEST_OW','descr_c'=>'测试货主']);
+
+        $orderType = factory(OracleBasCode::class)->make(['code'=>'sysy', 'codeid'=>'SO_TYP', 'codename_c'=>'测试状态']);
+        $wmsOrderHeader = factory(OracleDOCOrderHeader::class)->make(['customerid'=>'TEST_OW','orderType'=>'sysy','userdefine1'=>'TEST_CA']);
+
+        $oracleDOCOrderDetail1 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku1->sku]);
+        $oracleDOCOrderDetail2 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku2->sku]);
+        $oracleDOCOrderDetail3 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku3->sku]);
+        $oracleDOCOrderDetails = collect([$oracleDOCOrderDetail1,$oracleDOCOrderDetail3,$oracleDOCOrderDetail2]);
+
+        $OracleActAllocationDetail1 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku1->sku]);
+        $OracleActAllocationDetail2 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku2->sku]);
+        $OracleActAllocationDetail3 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_CA','sku'=>$basSku3->sku]);
+        $OracleActAllocationDetails = collect($OracleActAllocationDetail1,$OracleActAllocationDetail2,$OracleActAllocationDetail3);
 
-    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;
+        $wmsOrderHeader->setRelation('oracleDOCOrderDetails',$oracleDOCOrderDetails);
+        $wmsOrderHeader->setRelation('oracleActAllocationDetail',$OracleActAllocationDetails);
+        $wmsOrderHeader->setRelation('orderType',$orderType);
+
+        $this->data['orderHeader'] = $wmsOrderHeader;
+
+        $this->data['logistic'] =  factory(Logistic::class)->create(['code'=>$logistic_BasCustomer->customerid,'name'=>$logistic_BasCustomer->descr_c]);
+        $this->data['owner'] = factory(Owner::class)->create(['code'=>$owner_basCustomer->customerid,'name'=>$owner_basCustomer->descr_c]);
+        $this->data['shop'] = factory(Shop::class)->create(['owner_id'=>$this->data['owner']['id']]);
+        $this->data['sku'] = [];
+        $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku1['sku']]);
+        $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku2['sku']]);
+        $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku3['sku']]);
     }
 
     /**
@@ -89,34 +78,26 @@ class CreateOrFindOrderInfoTest extends TestCase
     public function createOrFindOrderInfo()
     {
         $this->orderService->createOrFindOrderInfo($this->data['orderHeader']);
-        $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
+        $order = Order::query()->where('code',$this->data['orderno'])->first();
         $this->assertNotNull($order);
         $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
         $orderPackages  = OrderPackage::query()->where('order_id',$order['id'])->get();
-        $orderPackagesCommodities = OrderPackageCommodities::query()->whereIn('order_package_id');
+        $orderPackagesCommodities = OrderPackageCommodities::query()->whereIn('order_package_id',data_get($orderPackages,'*.id'))->get();
         $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'];
-        });
+        $this->data['delete']['order_package_id']  = data_get($orderPackages,'*.id');
+        $this->data['delete']['order_package_commodity_id']  = data_get($orderPackagesCommodities,'*.id');
     }
 
     public function tearDown(): void
     {
         cache()->flush();
+        $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
+        $order->delete();
+        Commodity::query()->whereIn('id',data_get($this->data['sku'],'*.id'))->delete();
         $this->data['logistic']->delete();
         $this->data['owner']->delete();
+        $this->data['logistic']->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
     }
 }

+ 34 - 15
tests/Services/OrderService/CreateOrFindOrderTest.php

@@ -3,6 +3,7 @@
 namespace Tests\Services\OrderService;
 
 use App\Logistic;
+use App\OracleBasCode;
 use App\OracleBasCustomer;
 use App\OracleDOCOrderHeader;
 use App\Order;
@@ -13,6 +14,7 @@ use App\Warehouse;
 use Carbon\Carbon;
 use Illuminate\Foundation\Testing\RefreshDatabase;
 use Illuminate\Foundation\Testing\WithFaker;
+use Illuminate\Support\Str;
 use Tests\TestCase;
 
 class CreateOrFindOrderTest extends TestCase
@@ -35,21 +37,36 @@ class CreateOrFindOrderTest extends TestCase
         $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();
+        $orderHeader->fillable([
+            'orderno' ,'c_contact','c_tel2','c_province','c_city','addtime','edittime',
+            'c_district','c_address1','soreference1','userdefine1','sostatus',
+            'warehouseid','customerid','issuepartyname','orderType']);
+        $orderHeader->fill([
+            'orderno' =>$this->data['orderno'],
+            'c_contact' =>'承运商',
+            'c_tel2' =>'承运商',
+            'c_province' =>'shou',
+            'c_city' =>'shou',
+            'c_district' =>'shou',
+            'c_address1' =>md5('客户订单号'),
+            'soreference1' => Str::uuid(),
+            'userdefine1' =>$this->data['userdefine1'],
+            'warehouseid' =>$this->data['warehouse_code'],
+            'customerid' =>$this->data['customerid'],
+            'issuepartyname' =>$this->data['issuepartyname'],
+            'orderType' =>'sysy',
+            'sostatus' =>'99',
+            'addtime' => Carbon::now(),
+            'addtime' =>Carbon::now(),
+        ]);
+
+        $orderType = new OracleBasCode();
+        $orderType->fillable(['code','codeid','codename_c']);
+        $orderType->fill([
+            'code'=>'sysy', 'codeid'=>'SO_TYP', 'codename_c'=>'测试'
+        ]);
+        $orderHeader->setRelation('orderType',$orderType);
+
         $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'=>'测试货主']);
@@ -62,9 +79,11 @@ class CreateOrFindOrderTest extends TestCase
     public function createOrFindOrder()
     {
         $this->orderService->createOrFindOrder($this->data['orderHeader']);
+        /** @var Order $order */
         $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
         $this->assertNotNull($order);
         $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
+        $this->assertEquals($order->client_code,$this->data['orderHeader']['soreference1']);
         $this->assertEquals((string)$order->created_at,(string)$this->data['orderHeader']['addtime']);
         $this->assertEquals((string)$order->wms_edittime,(string)$this->data['orderHeader']['edittime']);
     }

+ 3 - 8
tests/Services/OrderService/FindOrCreateByClientCodeTest.php

@@ -40,7 +40,7 @@ class FindOrCreateByClientCodeTest extends TestCase
         $orderHeader->customerid = $this->data['customerid'];
         $orderHeader->issuepartyname =$this->data['issuepartyname'];
         $orderHeader->setAppends(['orderType'=>['codename_c'=>$this->data['orderType']]]);
-
+        $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]);
@@ -52,14 +52,9 @@ class FindOrCreateByClientCodeTest extends TestCase
      */
     public function findOrCreateByClientCode()
     {
-        $clientCode = OracleDOCOrderHeader::query()
-            ->orderByDesc('AddTime')
-            ->where('sostatus',99)
-            ->first()
-            ->soreference1;
 
-        $order =  $this->service->findOrCreateByClientCode($clientCode);
-        $this->assertNotEmpty($clientCode);
+        $order =  $this->service->findOrCreateByClientCode($this->data['orderHeader']->soreference1);
+        $this->assertNotEmpty($this->data['orderHeader']['soreference1']);
         $this->assertNotEmpty($order);
         $this->assertNotNull($order->client_code);
         $this->assertNotNull($order->warehouse_id);

+ 0 - 41
tests/Services/OrderService/GetByWmsOrdersTest.php

@@ -1,41 +0,0 @@
-<?php
-
-namespace Tests\Services\OrderService\GetByWmsOrdersTest;
-
-use App\OracleDOCOrderHeader;
-use App\Order;
-use App\Services\OrderService;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Tests\TestCase;
-
-class GetByWmsOrdersTest extends TestCase
-{
-    use RefreshDatabase;
-
-    /** @var OrderService $service */
-    public $service;
-
-    public function setUp(): void
-    {
-        parent::setUp();
-        $this->service = app('OrderService');
-    }
-
-    public function testGetByWmsOrders()
-    {
-        $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('addtime')->first();
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->where('sostatus',99)
-            ->where('addtime','>=',$orderHeader->addtime)
-            ->get();
-
-        $order_nos = data_get($orderHeaders,'*.orderno');
-        $this->service->syncOrder($orderHeaders);
-        $orders = Order::query()->whereIn('code',$order_nos)->get();
-        $this->assertEquals($orders->count(),$orders->count());
-        foreach ($orderHeaders as $orderHeader) {
-            $this->assertNotNull($orders->where('code',$orderHeader->orderno));
-        }
-    }
-}

+ 23 - 1
tests/Services/OrderService/GetCreateOrderModelByWMSOrderHeadersTest.php

@@ -41,6 +41,7 @@ class GetCreateOrderModelByWMSOrderHeadersTest extends TestCase
     public $logisticService;
     public $shopService;
     public $warehouseService;
+
     public function setUp(): void
     {
         parent::setUp();
@@ -53,7 +54,10 @@ class GetCreateOrderModelByWMSOrderHeadersTest extends TestCase
         $this->warehouseService=app('WarehouseService');
     }
 
-    public function testGetCreateOrderModelByWMSOrderHeaders()
+    /**
+     * @test
+     */
+    public function getCreateOrderModelByWMSOrderHeaders()
     {
 
         $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('addtime')->first();
@@ -126,4 +130,22 @@ class GetCreateOrderModelByWMSOrderHeadersTest extends TestCase
     {
         parent::tearDown(); // TODO: Change the autogenerated stub
     }
+
+    public function getOrderHeader($userdefine1,$warehouse_code,$customerid,$issuepartyname,$orderType){
+        $orderHeader = new OracleDOCOrderHeader();
+        $orderHeader->orderno = '订单编号';
+        $orderHeader->c_contact= '京东旗舰店';
+        $orderHeader->c_tel2 = '承运商';
+        $orderHeader->c_province = '收货人';
+        $orderHeader->c_city = 'shou';
+        $orderHeader->c_district = 'shou';
+        $orderHeader->c_address1 = 'shou';
+        $orderHeader->soreference1 = '客户订单号';
+        $orderHeader->userdefine1 = $userdefine1;
+        $orderHeader->warehouseid = $warehouse_code;
+        $orderHeader->customerid = $customerid;
+        $orderHeader->issuepartyname = $issuepartyname;
+        $orderHeader->setAppends(['orderType'=>['codename_c'=>$orderType]]);
+        return $orderHeader;
+    }
 }