SyncCreateCommodityByBasSkusTest.php 3.0 KB

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