SyncWmsAsnDataTest.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace Tests\AsnSync\Services;
  3. use App\OracleDOCASNHeader;
  4. use App\Services\StoreService;
  5. use Illuminate\Support\Facades\DB;
  6. use Tests\TestCase;
  7. class SyncWmsAsnDataTest extends TestCase
  8. {
  9. /** @var StoreService $service */
  10. public $service;
  11. public $asnHeaders;
  12. public $asnHeadersEdit;
  13. public $asnHeadersTotal;
  14. public $startDate;
  15. public $stores;
  16. public function setUp(): void
  17. {
  18. parent::setUp(); // TODO: Change the autogenerated stub
  19. $this->startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
  20. $this->service = app(StoreService::class);
  21. $this->asnHeaders = OracleDOCASNHeader::query()
  22. ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
  23. $query->with(['lineStatus', 'qualityStatus', 'basSku']);
  24. }])
  25. ->where('addTime', '>=', $this->startDate)
  26. ->get();
  27. $this->asnHeadersEdit = OracleDOCASNHeader::query()
  28. ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
  29. $query->with(['lineStatus', 'qualityStatus', 'basSku']);
  30. }])
  31. ->where('EditTime', '>=', $this->startDate)
  32. ->whereColumn('EditTime', '<>', 'addTime')
  33. ->get();
  34. }
  35. public function testSyncWmsAsnData()
  36. {
  37. if (!$this->asnHeaders && !$this->asnHeadersEdit) return null;
  38. if (!empty($this->asnHeadersEdit)){
  39. foreach ($this->asnHeadersEdit as $asnHerder)
  40. $this->asnHeaders->add($asnHerder);
  41. }
  42. if ($this->asnHeaders) {
  43. $this->service->syncWmsAsnData($this->startDate);
  44. $this->stores = $this->service->getByWms($this->asnHeaders);
  45. $this->assertNotEmpty($this->stores);
  46. } else {
  47. $this->assertNull($this->asnHeaders);
  48. }
  49. }
  50. public function tearDown(): void
  51. {
  52. $storeIds = [];
  53. foreach ($this->stores as $store) {
  54. array_push($storeIds, $store->id);
  55. }
  56. DB::table('stores')->whereIn('asn_code', data_get($this->asnHeaders, '*.asnno'))->delete();
  57. DB::table('store_items')->whereIn('store_id', $storeIds)->delete();
  58. parent::tearDown(); // TODO: Change the autogenerated stub
  59. }
  60. }