CreateOrFindOrderTest.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace Tests\Services\OrderService;
  3. use App\Logistic;
  4. use App\OracleBasCode;
  5. use App\OracleBasCustomer;
  6. use App\OracleDOCOrderHeader;
  7. use App\Order;
  8. use App\Owner;
  9. use App\Services\OrderService;
  10. use App\Shop;
  11. use App\Warehouse;
  12. use Carbon\Carbon;
  13. use Illuminate\Foundation\Testing\RefreshDatabase;
  14. use Illuminate\Foundation\Testing\WithFaker;
  15. use Illuminate\Support\Str;
  16. use Tests\TestCase;
  17. class CreateOrFindOrderTest extends TestCase
  18. {
  19. use RefreshDatabase;
  20. /**
  21. * @var OrderService $orderService
  22. */
  23. public $orderService;
  24. private $data = [];
  25. public function setUp(): void
  26. {
  27. parent::setUp();
  28. $this->orderService = app('OrderService');
  29. $this->data['orderno'] = md5('订单编号'.((string)Carbon::now()));
  30. $this->data['warehouse_code'] = 'test';
  31. $this->data['userdefine1'] ='测试物流';
  32. $this->data['customerid'] = '测试货主';
  33. $this->data['issuepartyname'] = '测试商铺';
  34. $this->data['orderType'] = '测试';
  35. $orderHeader = new OracleDOCOrderHeader();
  36. $orderHeader->fillable([
  37. 'orderno' ,'c_contact','c_tel2','c_province','c_city','addtime','edittime',
  38. 'c_district','c_address1','soreference1','userdefine1','sostatus',
  39. 'warehouseid','customerid','issuepartyname','orderType']);
  40. $orderHeader->fill([
  41. 'orderno' =>$this->data['orderno'],
  42. 'c_contact' =>'承运商',
  43. 'c_tel2' =>'承运商',
  44. 'c_province' =>'shou',
  45. 'c_city' =>'shou',
  46. 'c_district' =>'shou',
  47. 'c_address1' =>md5('客户订单号'),
  48. 'soreference1' => Str::uuid(),
  49. 'userdefine1' =>$this->data['userdefine1'],
  50. 'warehouseid' =>$this->data['warehouse_code'],
  51. 'customerid' =>$this->data['customerid'],
  52. 'issuepartyname' =>$this->data['issuepartyname'],
  53. 'orderType' =>'sysy',
  54. 'sostatus' =>'99',
  55. 'addtime' => Carbon::now(),
  56. 'addtime' =>Carbon::now(),
  57. ]);
  58. $orderType = new OracleBasCode();
  59. $orderType->fillable(['code','codeid','codename_c']);
  60. $orderType->fill([
  61. 'code'=>'sysy', 'codeid'=>'SO_TYP', 'codename_c'=>'测试'
  62. ]);
  63. $orderHeader->setRelation('orderType',$orderType);
  64. $this->data['orderHeader'] =$orderHeader;
  65. $this->data['logistic'] = Logistic::query()->firstOrCreate(['code'=>$this->data['userdefine1'],'name'=>'测试物流']);
  66. $this->data['owner'] = Owner::query()->firstOrCreate(['code'=>$this->data['customerid'],'name'=>'测试货主']);
  67. $this->data['shop'] =Shop::query()->firstOrCreate(['name'=>$this->data['issuepartyname'],'owner_id'=>$this->data['owner']->id]);
  68. $this->data['warehouse'] = Warehouse::query()->firstOrCreate(["code"=>$this->data['warehouse_code'],"name"=>'测试仓库']);
  69. }
  70. /**
  71. * @test
  72. */
  73. public function createOrFindOrder()
  74. {
  75. $this->orderService->createOrFindOrder($this->data['orderHeader']);
  76. /** @var Order $order */
  77. $order = Order::query()->where('code',$this->data['orderHeader']['orderno'])->first();
  78. $this->assertNotNull($order);
  79. $this->assertEquals($order->code,$this->data['orderHeader']['orderno']);
  80. $this->assertEquals($order->client_code,$this->data['orderHeader']['soreference1']);
  81. $this->assertEquals((string)$order->created_at,(string)$this->data['orderHeader']['addtime']);
  82. $this->assertEquals((string)$order->wms_edittime,(string)$this->data['orderHeader']['edittime']);
  83. }
  84. public function tearDown(): void
  85. {
  86. cache()->flush();
  87. $this->data['logistic']->delete();
  88. $this->data['owner']->delete();
  89. $this->data['shop']->delete();
  90. $this->data['warehouse']->delete();
  91. Order::query()->where('code',$this->data['orderHeader']['orderno'])->delete();
  92. parent::tearDown(); // TODO: Change the autogenerated stub
  93. }
  94. }