SyncOrderCommoditiesTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Tests\Services\OrderCommodityService;
  3. use Carbon\Carbon;
  4. use Tests\TestCase;
  5. use App\OracleDOCOrderHeader;
  6. use App\Order;
  7. use App\OrderCommodity;
  8. use App\Services\OrderCommodityService;
  9. use App\Services\OrderService;
  10. use Illuminate\Foundation\Testing\RefreshDatabase;
  11. class SyncOrderCommoditiesTest extends TestCase
  12. {
  13. use RefreshDatabase;
  14. /**
  15. * @var OrderService $orderService
  16. * @var OrderCommodityService $service
  17. */
  18. private $service;
  19. private $orderService;
  20. private $data = [];
  21. public function setUp(): void
  22. {
  23. parent::setUp();
  24. $this->service = app('OrderCommodityService');
  25. $this->orderService = app('OrderService');
  26. }
  27. /**
  28. * @test
  29. */
  30. public function syncOrderCommodities()
  31. {
  32. $orderHeader = OracleDOCOrderHeader::query()->with('oracleDOCOrderDetails')->where('sostatus','99')->orderByDesc('addTime')->first();
  33. $orderHeaders = collect();
  34. $orderHeaders->push($orderHeader);
  35. $this->orderService->syncOrderByWMSOrderHeaders($orderHeaders);
  36. $this->service->syncOrderCommodities($orderHeaders);
  37. $order = Order::query()->where('code',$orderHeader->orderno)->first();
  38. $orderCommodities = OrderCommodity::query()->with('commodity')->where('order_id',$order['id'])->get();
  39. $oracleDOCOrderDetails = $orderHeader->oracleDOCOrderDetails;
  40. $oracleDOCOrderDetails->each(function($detail)use($orderCommodities){
  41. $orderCommodity = $orderCommodities->where('commodity.sku',$detail['sku'])->where('amount',$detail['qtyordered'])->first();
  42. $this->assertNotNull($orderCommodity);
  43. });
  44. $orderCommodities->each(function($orderCommodity)use($oracleDOCOrderDetails){
  45. $detail = $oracleDOCOrderDetails->where('sku',$orderCommodity->commodity->sku)->where('qtyordered',$orderCommodity->amount)->first();
  46. $this->assertNotNull($detail);
  47. });
  48. }
  49. public function tearDown(): void
  50. {
  51. cache()->flush();
  52. parent::tearDown(); // TODO: Change the autogenerated stub
  53. }
  54. }