CreateOrFindOrderInfoTest.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?php
  2. namespace Tests\Services\OrderService;
  3. use App\Commodity;
  4. use App\Logistic;
  5. use App\OracleActAllocationDetails;
  6. use App\OracleBasCode;
  7. use App\OracleBasSKU;
  8. use App\OracleDOCOrderDetail;
  9. use App\OracleDOCOrderHeader;
  10. use App\Order;
  11. use App\OrderPackage;
  12. use App\OrderPackageCommodities;
  13. use App\Owner;
  14. use App\Services\OracleBasSkuService;
  15. use App\Services\OrderService;
  16. use App\Shop;
  17. use App\Warehouse;
  18. use Illuminate\Foundation\Testing\RefreshDatabase;
  19. use Tests\TestCase;
  20. class CreateOrFindOrderInfoTest extends TestCase
  21. {
  22. use RefreshDatabase;
  23. /**
  24. * @var OrderService $orderService
  25. */
  26. public $orderService;
  27. private $data = [];
  28. public function setUp(): void
  29. {
  30. parent::setUp(); // TODO: Change the autogenerated stub
  31. $this->orderService = app('OrderService');
  32. $wmsOrderHeader = factory(OracleDOCOrderHeader::class)->make([
  33. 'customerid'=>'TEST_OW','sostatus'=>99,'userdefine1'=>'TEST_CA','warehouseid'=>'WH_TEST'
  34. ]);
  35. $this->data['warehouse'] = factory(Warehouse::class)->create(['code'=>'WH_TEST']);
  36. $this->data['logistic'] = factory(Logistic::class)->create(['code'=>'TEST_CA','name'=>'测试承运商']);
  37. $this->data['owner'] = factory(Owner::class)->create(['code'=>'TEST_OW','name'=>'测试货主']);
  38. $this->data['shop'] = factory(Shop::class)->create(['owner_id'=>$this->data['owner']['id']]);
  39. $code_BasCode = factory(OracleBasCode::class)->make(['codeid'=>'OW','code'=>'99','descr_c'=>'订单完成']);
  40. $orderType = factory(OracleBasCode::class)->make(['code'=>'sysy', 'codeid'=>'SO_TYP', 'codename_c'=>'测试状态']);
  41. $basSku1 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
  42. $basSku2 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
  43. $basSku3 = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
  44. $basSKU = collect([$basSku1,$basSku2,$basSku3]);
  45. $this->data['sku'] = [];
  46. $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku1['sku']]);
  47. $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku2['sku']]);
  48. $this->data['sku'][] = factory(Commodity::class)->create(['owner_id'=>$this->data['owner']['id'],'sku'=>$basSku3['sku']]);
  49. $oracleDOCOrderDetail1 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku1->sku]);
  50. $oracleDOCOrderDetail2 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku2->sku]);
  51. $oracleDOCOrderDetail3 = factory(OracleDOCOrderDetail::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku3->sku]);
  52. $oracleDOCOrderDetails = collect([$oracleDOCOrderDetail1,$oracleDOCOrderDetail3,$oracleDOCOrderDetail2]);
  53. $wmsOrderHeader->setRelation('oracleDOCOrderDetails',$oracleDOCOrderDetails);
  54. $OracleActAllocationDetail1 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku1->sku]);
  55. $OracleActAllocationDetail2 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku2->sku]);
  56. $OracleActAllocationDetail3 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku3->sku]);
  57. $OracleActAllocationDetails = collect([$OracleActAllocationDetail1,$OracleActAllocationDetail2,$OracleActAllocationDetail3]);
  58. $wmsOrderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
  59. $wmsOrderHeader->setRelation('orderType',$orderType);
  60. $wmsOrderHeader->setRelation('oracleBASCode',$code_BasCode);
  61. $this->data['orderHeader'] = $wmsOrderHeader;
  62. $this->mock(OracleBasSkuService::class,function($mock)use($basSKU){
  63. $mock->shouldReceive('get')->andReturn($basSKU);
  64. });
  65. }
  66. /**
  67. * @test
  68. */
  69. public function createOrFindOrderInfo()
  70. {
  71. $this->orderService->createOrFindOrderInfo($this->data['orderHeader']);
  72. $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
  73. $this->assertNotNull($order);
  74. $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
  75. $orderPackages = OrderPackage::query()->where('order_id',$order['id'])->get();
  76. $orderPackagesCommodities = OrderPackageCommodities::query()->whereIn('order_package_id',data_get($orderPackages,'*.id'))->get();
  77. $this->assertNotEmpty($orderPackages);
  78. $this->assertNotEmpty($orderPackagesCommodities);
  79. }
  80. public function tearDown(): void
  81. {
  82. foreach ($this->data['sku'] as $datum) {
  83. cache()->forget("owner_code_{$this->data['owner']['code']}_sku_{$datum['sku']}");
  84. }
  85. cache()->forget("getLogisticByCode_{$this->data['logistic']}");
  86. cache()->forget("getOwnerByCode_{$this->data['owner']}");
  87. cache()->forget("getShopByCodeMap_{$this->data['shop']}");
  88. cache()->forget("WareHouse_{$this->data['warehouse']}");
  89. Commodity::query()->whereIn('id',data_get($this->data['sku'],'*.id'))->delete();
  90. $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
  91. $order->delete();
  92. $this->data['logistic']->delete();
  93. $this->data['owner']->delete();
  94. $this->data['shop']->delete();
  95. $this->data['warehouse']->delete();
  96. parent::tearDown(); // TODO: Change the autogenerated stub
  97. }
  98. }