GetCreateModelBy.php 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace Tests\Services\OrderPackageCommoditySerialNumberService;
  3. use App\Commodity;
  4. use App\OracleActAllocationDetails;
  5. use App\OracleDOCOrderHeader;
  6. use App\OracleDocOrderSerialNo;
  7. use App\Order;
  8. use App\OrderPackage;
  9. use App\OrderPackageCommodities;
  10. use App\Services\OrderPackageCommoditySerialNumberService;
  11. use \Tests\TestCase;
  12. class GetCreateModelBy extends TestCase
  13. {
  14. /** @var OrderPackageCommoditySerialNumberService $service */
  15. protected $service ;
  16. public $data = [];
  17. protected function setUp(): void
  18. {
  19. parent::setUp(); // TODO: Change the autogenerated stub
  20. $this->service = app(OrderPackageCommoditySerialNumberService::class);
  21. $orderHeaders = factory(OracleDOCOrderHeader::class)->times(3)->make();
  22. $count= 0;
  23. foreach ($orderHeaders as $orderHeader) {
  24. $actAllocationDetails = factory(OracleActAllocationDetails::class)->times(3)->make(['orderno'=>$orderHeader['orderno']]);
  25. foreach ($actAllocationDetails as $actAllocationDetail) {
  26. $oracleDocOrderSerialNos = factory(OracleDocOrderSerialNo::class)->times(3)
  27. ->make(['allocationdetailsid'=>$actAllocationDetail['allocationdetailsid'],'sku'=>$actAllocationDetail['sku']]);
  28. $count+=3;
  29. $actAllocationDetail->setRelation('oracleDocOrderSerialNos',$oracleDocOrderSerialNos);
  30. }
  31. $orderHeader->setRelation('actAllocationDetails',$actAllocationDetails);
  32. }
  33. $orders = [];
  34. $orderPackages = [];
  35. $commodities = [];
  36. $orderPackageCommodities = [];
  37. foreach ($orderHeaders as $orderHeader) {
  38. $order = factory(Order::class)->create(['code'=>$orderHeader['orderno']]);
  39. $orders[] = $order;
  40. foreach ($orderHeader['actAllocationDetails'] as $actAllocationDetail) {
  41. $commodity = factory(Commodity::class)->create(['sku'=>$actAllocationDetail['sku']]);
  42. $orderPackage = factory(OrderPackage::class)->create(['order_id' => $order['id'],'logistic_number'=> $actAllocationDetail['picktotraceid']]);
  43. $orderPackageCommodity = factory(OrderPackageCommodities::class)
  44. ->create(['order_package_id'=>$orderPackage['id'],'commodity_id'=>$commodity['id'],'amount'=>$actAllocationDetail['qty_each']]);
  45. $orderPackageCommodities[] = $orderPackageCommodity;
  46. $orderPackages[] =$orderPackage;
  47. $commodities[] = $commodity;
  48. }
  49. }
  50. $this->data['count'] = $count;
  51. $this->data['orders'] = $orders;
  52. $this->data['orderPackages'] = $orderPackages;
  53. $this->data['orderPackages'] = $orderPackages;
  54. $this->data['commodities'] = $commodities;
  55. $this->data['orderPackageCommodities'] = $orderPackageCommodities;
  56. $this->data['orderHeaders'] = $orderHeaders;
  57. }
  58. public function testGetInnerParams()
  59. {
  60. $orderQuery = Order::query()->selectRaw('id')->whereIn('code', data_get($this->data['orderHeaders'], '*.orderno'));
  61. $orderPackages = OrderPackage::query()->with(['commodities' => function ($query) {
  62. $query->with('commodity', 'serialNumbers');
  63. }])->whereIn('Order_Packages.Order_id', $orderQuery)->get();
  64. // $this->tearDown();
  65. $innerParams = $this->service->getCreateModelBy($this->data['orderHeaders'],$orderPackages);
  66. foreach ($this->data['orderHeaders'] as $orderHeader){
  67. foreach ($orderHeader['actAllocationDetails'] as $actAllocationDetail) {
  68. $logisticNumber = $actAllocationDetail['picktotraceid'];
  69. $sku = $actAllocationDetail['sku'];
  70. foreach ($actAllocationDetail['oracleDocOrderSerialNos'] as $oracleDocOrderSerialNo){
  71. $serialno = $oracleDocOrderSerialNo['serialno'];
  72. $this->assertNotEmpty($innerParams[$logisticNumber][$sku][$serialno]);
  73. }
  74. }
  75. }
  76. $this->assertNotEmpty($innerParams);
  77. }
  78. protected function tearDown():void
  79. {
  80. Order::query()->whereIn('id',data_get($this->data['orders'],'*.id'))->delete();
  81. OrderPackage::query()->whereIn('logistic_number',data_get($this->data['orderPackages'],'*.logistic_number'))->delete();
  82. OrderPackageCommodities::query()->whereIn('id',data_get($this->data['orderPackageCommodities'],'*.id'))->delete();
  83. Commodity::query()->whereIn('id',data_get($this->data['commodities'],'*.id'))->delete();
  84. parent::tearDown();
  85. }
  86. }