InsertMany_onCommoditiesTest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace Tests\Services\CommodityBarcodeService;
  3. use App\Commodity;
  4. use App\CommodityBarcode;
  5. use App\Services\CacheService;
  6. use App\Services\CommodityBarcodeService;
  7. use Illuminate\Database\Eloquent\Collection;
  8. use Illuminate\Support\Facades\Cache;
  9. use Tests\TestCase;
  10. class InsertMany_onCommoditiesTest extends TestCase
  11. {
  12. /** @var CommodityBarcodeService $service */
  13. public $service;
  14. public $data=[];
  15. public function setUp(): void
  16. {
  17. parent::setUp();
  18. $this->service = app('CommodityBarcodeService');
  19. ($this->data['commodity']=(new Commodity()))->save();
  20. $this->data['barcodes']=['A1','B1','C2'];
  21. $this->data['commodityBarcodes']=new Collection();
  22. }
  23. public function testInsert(){
  24. $inputs=[
  25. 'commodity_id'=>$this->data['commodity']['id'],
  26. 'barcodes'=>$this->data['barcodes']
  27. ];
  28. $this->service->insertMany_onCommodities([$inputs]);
  29. $this->data['commodityBarcodes']=CommodityBarcode::query()
  30. ->where('commodity_id',$this->data['commodity']['id'])
  31. ->whereIn('code',$this->data['barcodes'])
  32. ->get();
  33. $this->data['commodityBarcodes']=$this->data['commodityBarcodes']->sortBy('code');
  34. $resultArr=$this->data['commodityBarcodes']->map(function ($commodityBarcode){
  35. return [$commodityBarcode['commodity_id'],$commodityBarcode['code']];
  36. });
  37. $resultArr=array_values($resultArr->toArray());
  38. $expectArr = (function () {
  39. $arr=[];
  40. foreach ($this->data['barcodes'] as $barcode) {
  41. $arr[]=[
  42. $this->data['commodity']['id'],$barcode
  43. ];
  44. }
  45. return $arr;
  46. })();
  47. $this->assertEquals(json_encode($expectArr),json_encode($resultArr));
  48. $result=$this->service->insertMany_onCommodities([]);
  49. $this->assertEquals(false,$result);
  50. }
  51. public function tearDown(): void
  52. {
  53. $this->data['commodity']->delete();
  54. CommodityBarcode::destroy($this->data['commodityBarcodes']->map(function ($commodityBarcode){
  55. return $commodityBarcode['id'];
  56. }));
  57. parent::tearDown();
  58. }
  59. }