SyncOrderPackageTest.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace Tests\Services\OrderPackageService\SyncOrderPackageTest;
  3. use App\OracleDOCOrderHeader;
  4. use App\Services\OracleDOCOrderHeaderService;
  5. use App\Services\OrderPackageService;
  6. use App\Services\OrderService;
  7. use Carbon\Carbon;
  8. use Illuminate\Foundation\Testing\RefreshDatabase;
  9. use Illuminate\Foundation\Testing\WithFaker;
  10. use Tests\TestCase;
  11. class SyncOrderPackageTest extends TestCase
  12. {
  13. use RefreshDatabase;
  14. /**
  15. * @var OrderPackageService $service
  16. * @var OracleDOCOrderHeaderService $orderHeaderService
  17. * @var OrderService $orderService
  18. */
  19. public $service;
  20. public $orderService;
  21. public $orderHeaderService;
  22. public function setUp(): void
  23. {
  24. parent::setUp();
  25. $this->service = app('OrderPackageService');
  26. $this->orderService = app('OrderService');
  27. $this->orderHeaderService = app('OracleDOCOrderHeaderService');
  28. }
  29. /**
  30. * @test
  31. */
  32. public function syncOrderPackage()
  33. {
  34. $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first();
  35. $carbon =Carbon::parse($orderHeader->addtime)->subMinutes(10);
  36. $orderHeaders = $this->orderHeaderService->getWMSOrderOnStartDate($carbon);
  37. if(!$orderHeaders){
  38. $this->assertNull($orderHeaders);
  39. return;
  40. }
  41. $orders = $this->orderService->getByWmsOrders($orderHeaders);
  42. $packages = $this->service->getByWmsOrders($orderHeaders);
  43. $this->service->syncOrderPackage($orderHeaders,$orders,$packages);
  44. $exits_packages = $this->service->getByWmsOrders($orderHeaders);
  45. $exits_count = $exits_packages->count();
  46. $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');
  47. $logistic_numbers = array_unique(array_diff($logistic_numbers,['',' ','*']));
  48. $this->assertEquals(count($logistic_numbers),$exits_count);
  49. foreach ($logistic_numbers as $logistic_number) {
  50. $exits_package = $exits_packages->where('logistic_number',$logistic_number);
  51. $this->assertEmpty($exits_package);
  52. $this->assertEquals($exits_package->count(),1);
  53. }
  54. }
  55. }