CreateOrFindOrderInfoTest.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace Tests\Services\OrderService;
  3. use App\Commodity;
  4. use App\Logistic;
  5. use App\OracleDOCOrderHeader;
  6. use App\Order;
  7. use App\OrderPackage;
  8. use App\OrderPackageCommodities;
  9. use App\Owner;
  10. use App\Services\OrderService;
  11. use App\Shop;
  12. use App\Warehouse;
  13. use Carbon\Carbon;
  14. use Illuminate\Foundation\Testing\RefreshDatabase;
  15. use Tests\TestCase;
  16. class CreateOrFindOrderInfoTest extends TestCase
  17. {
  18. use RefreshDatabase;
  19. /**
  20. * @var OrderService $orderService
  21. */
  22. public $orderService;
  23. private $data = [];
  24. public function setUp(): void
  25. {
  26. parent::setUp(); // TODO: Change the autogenerated stub
  27. $this->orderService = app('OrderService');
  28. $this->data['orderno'] = '订单编号'.((string)Carbon::now());
  29. $this->data['warehouse_code'] = 'test';
  30. $this->data['userdefine1'] ='测试物流';
  31. $this->data['customerid'] = '测试货主';
  32. $this->data['issuepartyname'] = '测试商铺';
  33. $this->data['orderType'] = '测试';
  34. $orderHeader = new OracleDOCOrderHeader();
  35. $orderHeader->orderno = md5('订单编号');
  36. $orderHeader->c_contact='京东旗舰店';
  37. $orderHeader->c_tel2 = md5('承运商');
  38. $orderHeader->c_province = md5('收货人');
  39. $orderHeader->c_city = md5('shou');
  40. $orderHeader->c_district = md5('shou');
  41. $orderHeader->c_address1 = md5('shou');
  42. $orderHeader->soreference1 = md5('客户订单号');
  43. $orderHeader->userdefine1 = $this->data['userdefine1'];
  44. $orderHeader->warehouseid = $this->data['warehouse_code'];
  45. $orderHeader->customerid = $this->data['customerid'];
  46. $orderHeader->issuepartyname =$this->data['issuepartyname'];
  47. $orderHeader['orderType']['codename_c'] =$this->data['orderType'];
  48. $orderHeader->edittime = Carbon::now();
  49. $orderHeader->addtime = Carbon::now();
  50. $this->data['orderHeader'] =$orderHeader;
  51. $this->data['logistic'] = Logistic::query()->firstOrCreate(['code'=>$this->data['userdefine1'],'name'=>'测试物流']);
  52. $this->data['owner'] = Owner::query()->firstOrCreate(['code'=>$this->data['customerid'],'name'=>'测试货主']);
  53. $this->data['shop'] =Shop::query()->firstOrCreate(['name'=>$this->data['issuepartyname'],'owner_id'=>$this->data['owner']->id]);
  54. $this->data['warehouse'] = Warehouse::query()->firstOrCreate(["code"=>$this->data['warehouse_code'],"name"=>'测试仓库']);
  55. $orderHeader->actAllocationDetails = $this->getActAllocationDetails($this->data['orderno'],$this->data['owner']);
  56. }
  57. public function getActAllocationDetails($orderno,$owner){
  58. $sums = rand(3,6);
  59. $actAllocationDetails = [];
  60. $picktotraceids = [
  61. md5((string)rand(10000,99999)),md5((string)rand(10000,99999)),md5((string)rand(10000,99999)),md5((string)rand(10000,99999))
  62. ];
  63. $sku = ['ABC'.(rand(10000,99999)),'ABC'.(rand(10000,99999)),'ABC'.(rand(10000,99999))];
  64. foreach ($sku as $item) {
  65. Commodity::query()->firstOrCreate(['owner_id'=>$owner['id'],'sku'=>$item,'name'=>md5($item)]);
  66. }
  67. for ($i=0;$i<$sums;$i++){
  68. $actAllocationDetails[] =[
  69. 'orderno' => $orderno,
  70. 'picktotraceid' => $picktotraceids[rand(0,count($picktotraceids)-1)],
  71. 'sku' => $sku[rand(0,count($sku)-1)],
  72. 'qty_each' => rand(1,15),
  73. 'customerid' =>$owner['code']
  74. ];
  75. }
  76. return $actAllocationDetails;
  77. }
  78. /**
  79. * @test
  80. */
  81. public function createOrFindOrderInfo()
  82. {
  83. $this->orderService->createOrFindOrderInfo($this->data['orderHeader']);
  84. $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
  85. $this->assertNotNull($order);
  86. $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
  87. $orderPackages = OrderPackage::query()->where('order_id',$order['id'])->get();
  88. $orderPackagesCommodities = OrderPackageCommodities::query()->whereIn('order_package_id');
  89. $this->data['delete']['order_id'] = $order['id'];
  90. $this->data['delete']['order_package_id'] = $orderPackages->each(function($orderPackage){
  91. return $orderPackage['id'];
  92. });
  93. $this->data['delete']['order_package_commodity_id'] = $orderPackagesCommodities->each(function($orderPackageCommodity){
  94. return $orderPackageCommodity['id'];
  95. });
  96. $this->data['delete']['commodity_id'] = $orderPackagesCommodities->each(function($orderPackageCommodity){
  97. return $orderPackageCommodity['commodity_id'];
  98. });
  99. }
  100. public function tearDown(): void
  101. {
  102. cache()->flush();
  103. $this->data['logistic']->delete();
  104. $this->data['owner']->delete();
  105. $this->data['shop']->delete();
  106. $this->data['warehouse']->delete();
  107. Order::find($this->data['delete']['order_id'])->delete();
  108. OrderPackage::query()->whereIn('id',$this->data['delete']['order_package_id'])->delete();
  109. OrderPackageCommodities::query()->whereIn('id',$this->data['delete']['order_package_commodity_id'])->delete();
  110. Commodity::query()->whereIn('id',$this->data['delete']['commodity_id'])->delete();
  111. parent::tearDown(); // TODO: Change the autogenerated stub
  112. }
  113. }