UpdateStoreTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace Tests\Services\StoreService;
  3. use App\OracleBasCode;
  4. use App\OracleDOCASNDetail;
  5. use App\OracleDOCASNHeader;
  6. use App\Owner;
  7. use App\Services\CommodityService;
  8. use App\Services\StoreService;
  9. use App\Warehouse;
  10. use Illuminate\Support\Facades\DB;
  11. use Tests\TestCase;
  12. class UpdateStoreTest extends TestCase
  13. {
  14. /** @var StoreService $service */
  15. public $service;
  16. public $asnHeaders;
  17. public $stores;
  18. private $data=[];
  19. public function setUp(): void
  20. {
  21. parent::setUp(); // TODO: Change the autogenerated stub
  22. $this->service=app(StoreService::class);
  23. // $this->data['warehouse'] = factory(Warehouse::class)->create(['code'=>'test_wh']);
  24. DB::insert('insert ignore into warehouses (code) values(?)',['test_wh']);
  25. $this->data['warehouse'] = Warehouse::query()->where('code','test_wh')->first();
  26. // $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
  27. DB::insert('insert ignore into owners (code,name) values(?,?)',['test_owner','测试货主']);
  28. $this->data['owner'] = Owner::query()->where('code','test_owner')->where('name','测试货主')->first();
  29. $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
  30. 'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
  31. ]);
  32. $asnType = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
  33. $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
  34. $wmsAsnHeader->setRelation('asnType',$asnType);
  35. $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
  36. $this->asnHeaders=collect();
  37. $this->asnHeaders->add($wmsAsnHeader);
  38. }
  39. public function testUpdateStore(){
  40. if (!$this->asnHeaders) {
  41. $this->assertNull($this->asnHeaders);
  42. }else{
  43. $this->service->updateStore($this->asnHeaders);
  44. $this->stores=$this->service->getByWms($this->asnHeaders);
  45. $this->assertNotNull($this->stores);
  46. }
  47. }
  48. public function tearDown(): void
  49. {
  50. $this->data['warehouse']->delete();
  51. $this->data['owner']->delete();
  52. $storeIds=[];
  53. foreach ($this->stores as $store){
  54. array_push($storeIds,$store->id);
  55. }
  56. $asnDetails=OracleDOCASNDetail::query()->whereIn('asnno',data_get($this->asnHeaders,'*.asnno'))->get();
  57. $maps = [];
  58. foreach ($asnDetails as $asnDetail) {
  59. $value = [
  60. 'owner_code' => $asnDetail->customerid,
  61. 'sku' => $asnDetail->sku,
  62. ];
  63. $maps[json_encode($value)] = $value;
  64. }
  65. /** CommodityService $commodityService */
  66. $commodityService=app(CommodityService::class);
  67. $commodities=$commodityService->getCommoditiesByMaps($maps);
  68. $commodity_ids=[];
  69. foreach ($commodities as $commodity){
  70. array_push($commodity_ids,$commodity->id);
  71. }
  72. DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
  73. DB::table('commodities')->whereIn('id',$commodity_ids)->delete();
  74. DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
  75. parent::tearDown(); // TODO: Change the autogenerated stub
  76. }
  77. }