SyncBarcodesTest.php 4.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace Tests\Services\CommodityService;
  3. use App\Commodity;
  4. use App\CommodityBarcode;
  5. use App\Services\CacheService;
  6. use App\Services\CommodityBarcodeService;
  7. use App\Services\CommodityService;
  8. use Illuminate\Database\Eloquent\Collection;
  9. use Illuminate\Support\Facades\Cache;
  10. use Tests\TestCase;
  11. class SyncBarcodesTest extends TestCase
  12. {
  13. /** @var CommodityService $service */
  14. public $service;
  15. /** @var CommodityBarcodeService $commodityBarcodeService */
  16. public $commodityBarcodeService;
  17. public $data=[];
  18. public function setUp(): void
  19. {
  20. parent::setUp();
  21. $this->service = app('CommodityService');
  22. $this->commodityBarcodeService = app('CommodityBarcodeService');
  23. ($this->data['commodity']=(new Commodity(['owner_id'=>1,'sku'=>md5(microtime(true))])))->save();
  24. $this->data['barcodes']=['A1','B1','C2'];
  25. $this->data['commodityBarcodes']=new Collection();
  26. $inputs=[
  27. 'commodity_id'=>$this->data['commodity']['id'],
  28. 'barcodes'=>$this->data['barcodes']
  29. ];
  30. $this->commodityBarcodeService->insertMany_onCommodities([$inputs]);
  31. }
  32. public function testLessBarcodesCommodity(){
  33. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  34. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  35. $lastCode=array_pop($this->data['barcodes']);
  36. $this->data['barcodesStr']=implode(',',$this->data['barcodes']);
  37. $this->service->syncBarcodes($this->data['barcodesStr'], $this->data['commodity']->owner_id, $this->data['commodity']->sku);
  38. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  39. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  40. $nullCommodityBarcode=CommodityBarcode::query()
  41. ->where('commodity_id',$this->data['commodity']['id'])
  42. ->where('code',$lastCode)
  43. ->first();
  44. $this->assertEquals(null,$nullCommodityBarcode);
  45. }
  46. public function testMoreBarcodesCommodity(){
  47. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  48. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  49. $this->data['barcodes'][] = $newCode='FF';
  50. $this->data['barcodesStr']=implode(',',$this->data['barcodes']);
  51. $this->service->syncBarcodes($this->data['barcodesStr'], $this->data['commodity']->owner_id, $this->data['commodity']->sku);
  52. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  53. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  54. $additionalCommodityBarcode=CommodityBarcode::query()
  55. ->where('commodity_id',$this->data['commodity']['id'])
  56. ->where('code',$newCode)
  57. ->get();
  58. $this->assertEquals(1,$additionalCommodityBarcode->count());
  59. }
  60. public function testDiffMoreBarcodesCommodity(){
  61. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  62. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  63. $this->data['barcodes'][] = $newCode='FF';
  64. $firstCode=array_shift($this->data['barcodes']);
  65. $this->data['barcodesStr']=implode(',',$this->data['barcodes']);
  66. $this->service->syncBarcodes($this->data['barcodesStr'], $this->data['commodity']->owner_id, $this->data['commodity']->sku);
  67. $commodityBarcodes = $this->data['commodity']->load('barcodes')->barcodes;
  68. $this->assertEquals(count($this->data['barcodes']),$commodityBarcodes->count());
  69. $additionalCommodityBarcode=CommodityBarcode::query()
  70. ->where('commodity_id',$this->data['commodity']['id'])
  71. ->where('code',$newCode)
  72. ->get();
  73. $nullCommodityBarcode=CommodityBarcode::query()
  74. ->where('commodity_id',$this->data['commodity']['id'])
  75. ->where('code',$firstCode)
  76. ->first();
  77. $this->assertEquals(1,$additionalCommodityBarcode->count());
  78. $this->assertEquals(null,$nullCommodityBarcode);
  79. }
  80. public function tearDown(): void
  81. {
  82. $this->service->destroyWithOffspring($this->data['commodity']);
  83. CommodityBarcode::destroy($this->data['commodityBarcodes']->map(function ($commodityBarcode){
  84. return $commodityBarcode['id'];
  85. }));
  86. parent::tearDown();
  87. }
  88. }