GetCreateOrderModelsTest.php 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace Tests\Services\OrderService;
  3. use App\Batch;
  4. use App\Logistic;
  5. use App\OracleBasCode;
  6. use App\OracleDOCOrderHeader;
  7. use App\Order;
  8. use App\Owner;
  9. use App\Services\common\DataHandlerService;
  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 Illuminate\Foundation\Testing\WithFaker;
  16. use Tests\TestCase;
  17. class GetCreateOrderModelsTest extends TestCase
  18. {
  19. /**
  20. * @var OrderService $service
  21. * @var DataHandlerService $dataHandlerService
  22. */
  23. private $service;
  24. private $dataHandlerService;
  25. private $data = [];
  26. public function setUp(): void
  27. {
  28. parent::setUp(); // TODO: Change the autogenerated stub
  29. $this->service = app('OrderService');
  30. $this->dataHandlerService = app('DataHandlerService');
  31. $owners = factory(Owner::class)->times(2)->create();
  32. $this->data['owners'] = $owners;
  33. $logistics = factory(Logistic::class)->times(3)->create();
  34. $wareHouses = factory(Warehouse::class)->times(2)->create();
  35. $batches = factory(Batch::class)->times(10)->create();
  36. $this->data['logistics'] = $logistics;
  37. $this->data['wareHouses'] = $wareHouses;
  38. $shops = collect();
  39. foreach ($owners as $owner) {
  40. $shops = $shops->concat(factory(Shop::class)->times(rand(1,11))->create(['owner_id'=>$owner->id]));
  41. }
  42. $this->data['shops'] = $shops;
  43. $orderHeaders = collect();
  44. $basBack = factory(OracleBasCode::class)->times(5)->make();
  45. for ($i=0;$i<= 30;$i++) {
  46. $owner = $owners->random();
  47. $shop = $shops->where('owner_id',$owner->id)->random();
  48. $logistic = $logistics->random();
  49. $wareHouse = $wareHouses->random();
  50. $batch = $batches->random();
  51. $orderHeader = factory(OracleDOCOrderHeader::class)->make();
  52. $orderHeader->customerid = $owner->code;
  53. $orderHeader->waveno = $batch->code;
  54. $orderHeader->warehouseid = $wareHouse->code;
  55. $orderHeader->userdefine1 = $logistic->code;
  56. $orderHeader->issuepartyname = $shop->code;
  57. $orderType = $basBack->random();
  58. $oracleBASCode = $basBack->random();
  59. $orderHeader->setRelation('orderType',$orderType);
  60. $orderHeader->setRelation('oracleBASCode',$oracleBASCode);
  61. $orderHeaders->push($orderHeader);
  62. }
  63. $this->data = [
  64. 'owners' => $owners,
  65. 'logistics' => $logistics,
  66. 'wareHouses' => $wareHouses,
  67. 'shops' => $shops,
  68. 'orderHeaders' => $orderHeaders,
  69. 'batches' => $batches,
  70. ];
  71. }
  72. /**
  73. * @test
  74. */
  75. public function getCreateOrderModels()
  76. {
  77. // is progressing
  78. // Mission in progress
  79. $orderHeader_map =$this->data['orderHeaders'];
  80. $warehouse_map = $this->dataHandlerService->dataHeader(['code'],$this->data['wareHouses']);
  81. $owner_map = $this->dataHandlerService->dataHeader(['code'],$this->data['owners']);
  82. $logistic_map = $this->dataHandlerService->dataHeader(['code'],$this->data['logistics']);
  83. $shop_map = $this->dataHandlerService->dataHeader(['name','owner_id'],$this->data['shops']);
  84. $batch_map = $this->dataHandlerService->dataHeader(['code'],$this->data['batches']);
  85. $date = (string)Carbon::now();
  86. foreach ($orderHeader_map as $orderHeader) {
  87. $param = $this->service->getCreateOrderModels($orderHeader,$warehouse_map,$owner_map,$logistic_map,$shop_map,$batch_map,$date);
  88. $warehouse = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouse_map);
  89. $owner = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid],$owner_map);
  90. $logistic = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1],$logistic_map);
  91. $batch = $this->dataHandlerService->getKeyValue(['code'=>$orderHeader->waveno],$batch_map);
  92. $shop['id'] = null;
  93. if($orderHeader->issuepartyname != null && $orderHeader->issuepartyname != '' ){
  94. $shop = $this->dataHandlerService->getKeyValue(['name'=>$orderHeader->issuepartyname ?? '','owner_id'=>$owner->id??''],$shop_map);
  95. }
  96. $this->assertEquals($param['code'],$orderHeader['orderno']);
  97. $this->assertEquals($param['batch_id'],$batch['id'] ?? null);
  98. $this->assertEquals($param['warehouse_id'],$warehouse['id'] ?? null);
  99. $this->assertEquals($param['owner_id'],$owner['id'] ?? null);
  100. $this->assertEquals($param['shop_id'],$shop['id'] ?? null);
  101. $this->assertEquals($param['logistic_id'],$logistic['id'] ?? null);
  102. $this->assertEquals($param['consignee_name'], $orderHeader['c_contact']);
  103. $this->assertEquals($param['consignee_phone'],$orderHeader['c_tel2'] ?? $orderHeader['c_tel1']);
  104. $this->assertEquals($param['city'],$orderHeader['c_city']);
  105. $this->assertEquals($param['district'],$orderHeader['c_district']);
  106. $this->assertEquals($param['address'],$orderHeader['c_address1']);
  107. $this->assertEquals($param['client_code'],$orderHeader['soreference1']);
  108. $this->assertEquals($param['wms_edittime'], $orderHeader['edittime']);
  109. $this->assertEquals($param['wms_status'],$orderHeader->oracleBASCode->codename_c??'');
  110. $this->assertEquals($param['order_type'],$orderHeader->orderType->codename_c??'');
  111. }
  112. }
  113. public function tearDown(): void
  114. {
  115. Order::query()->whereIn('code',data_get($this->data['orderHeaders'],'*.orderno'));
  116. Warehouse::query()->whereIn('id',data_get($this->data['wareHouses'],'*.id'))->delete();
  117. Owner::query()->whereIn('id',data_get($this->data['owners'],'*.id'))->delete();
  118. Logistic::query()->whereIn('id',data_get($this->data['logistics'],'*.id'))->forceDelete();
  119. Shop::query()->whereIn('id',data_get($this->data['shops'],'*.id'))->delete();
  120. Batch::query()->whereIn('id',data_get($this->data['batches'],'*.id'))->delete();
  121. parent::tearDown(); // TODO: Change the autogenerated stub
  122. }
  123. }