CreateOrFindOrderTest.php 3.4 KB

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