|
|
@@ -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
|
|
|
}
|
|
|
}
|