SyncCreateCommodityByBasSkusTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. namespace Tests\Services\CommodityService;
  3. use App\Commodity;
  4. use App\OracleBasSKU;
  5. use App\Services\CommodityService;
  6. use App\Services\OwnerService;
  7. use App\ValueStore;
  8. use Carbon\Carbon;
  9. use Illuminate\Support\Facades\DB;
  10. use Tests\TestCase;
  11. class SyncCreateCommodityByBasSkusTest extends TestCase
  12. {
  13. /**
  14. * @var CommodityService $service
  15. */
  16. public $service;
  17. public $bas_skus;
  18. public $created_at;
  19. public $last_time;
  20. public $insert_params;
  21. public function setUp(): void
  22. {
  23. parent::setUp();
  24. $this->service=app(CommodityService::class);
  25. }
  26. /**
  27. * @test
  28. */
  29. public function testSyncCreateCommodityByBasSkus()
  30. {
  31. $this->created_at = config('sync.commodity_sync.created_at');
  32. $this->last_time = ValueStore::query()->where('name',$this->created_at)->value('value');
  33. if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
  34. $this->bas_skus=OracleBasSKU::query()
  35. ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
  36. ->where('addTime', '>=', $this->last_time??$time)
  37. ->orderByDesc('addtime')
  38. ->get();
  39. $this->insert_params=$this->service->getParamsByBasSkus($this->bas_skus);
  40. $this->service->syncCreateCommodity($this->bas_skus);
  41. if ($this->insert_params) $this->assertNotNull($this->insert_params);
  42. if ($this->insert_params)$this->assertEquals(count($this->insert_params),count($this->bas_skus));
  43. if (!$this->insert_params)$this->assertNull($this->insert_params);
  44. }
  45. public function tearDown(): void
  46. {
  47. ValueStore::query()->updateOrCreate([
  48. 'name' => $this->created_at,
  49. ], [
  50. 'name' => $this->created_at,
  51. 'value' => $this->last_time,
  52. ]);
  53. $sku=[];
  54. $owner_id=[];
  55. if (!$this->insert_params) return;
  56. foreach ($this->insert_params as $insert_param){
  57. $owner_id[]=$insert_param['owner_id'];
  58. $sku[]=$insert_param['sku'];
  59. }
  60. $commodities=Commodity::query()->whereIn('owner_id',$owner_id)->whereIn('sku',$sku)->get();
  61. $commodity_id=[];
  62. foreach ($commodities as $commodity){
  63. $commodity_id[]=$commodity->id;
  64. }
  65. DB::table('commodities')->whereIn('id',$commodity_id)->delete();
  66. DB::table('commodity_barcodes')->whereIn('commodity_id',$commodity_id)->delete();
  67. cache()->flush();
  68. parent::tearDown(); // TODO: Change the autogenerated stub
  69. }
  70. }