InsertMany_onCommoditiesTest.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. namespace Tests\Services\CacheService\GetOrExecuteTest;
  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. $resultArr=$this->data['commodityBarcodes']->map(function ($commodityBarcode){
  34. return [$commodityBarcode['commodity_id'],$commodityBarcode['code']];
  35. });
  36. $expectArr = (function () {
  37. $arr=[];
  38. foreach ($this->data['barcodes'] as $barcode) {
  39. $arr[]=[
  40. $this->data['commodity']['id'],$barcode
  41. ];
  42. }
  43. return $arr;
  44. })();
  45. $this->assertEquals(json_encode($expectArr),json_encode($resultArr));
  46. $result=$this->service->insertMany_onCommodities([]);
  47. $this->assertEquals(false,$result);
  48. }
  49. public function tearDown(): void
  50. {
  51. $this->data['commodity']->delete();
  52. CommodityBarcode::destroy($this->data['commodityBarcodes']->map(function ($commodityBarcode){
  53. return $commodityBarcode['id'];
  54. }));
  55. parent::tearDown();
  56. }
  57. }