GetWareHouseByCodesTest.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace Tests\Services\WarehouseService;
  3. use App\OracleBasCustomer;
  4. use App\Services\OracleBasCustomerService;
  5. use App\Services\WarehouseService;
  6. use App\Warehouse;
  7. use Illuminate\Foundation\Testing\RefreshDatabase;
  8. use Tests\TestCase;
  9. class GetWareHouseByCodesTest extends TestCase
  10. {
  11. /** @var WarehouseService $service */
  12. private $service;
  13. private $data = [];
  14. public function setUp(): void
  15. {
  16. parent::setUp(); // TODO: Change the autogenerated stub
  17. $this->service = app('WarehouseService');
  18. $warehouse1 = factory(Warehouse::class)->create();
  19. $warehouse2 = factory(Warehouse::class)->create();
  20. $basCustomer1 = factory(OracleBasCustomer::class)->make(['customerid'=>$warehouse1->code,'descr_c'=>$warehouse1->name,'customer_type'=>'OW']);
  21. $basCustomer2 = factory(OracleBasCustomer::class)->make(['customerid'=>$warehouse2->code,'descr_c'=>$warehouse2->name,'customer_type'=>'OW']);
  22. $basCustomers = collect([$basCustomer1,$basCustomer2]);
  23. $this->data['warehouses'] = collect([$warehouse1,$warehouse2]);
  24. $this->data['basCustomers'] = $basCustomers;
  25. $this->data['codes'] = [$warehouse1->code,$warehouse2->code];
  26. $this->mock(OracleBasCustomerService::class,function($mock)use($basCustomers){
  27. foreach ( $basCustomers as $basCustomer) {
  28. $mock->shouldReceive('first')->with(['CustomerId'=>$basCustomer['customerid'],'Customer_Type'=>'WH'])->andReturn($basCustomer);
  29. }
  30. });
  31. }
  32. /**
  33. * @test
  34. */
  35. public function getWareHouseCodes()
  36. {
  37. $wareHouses = $this->service->getWareHouseByCodes($this->data['codes']);
  38. foreach ($this->data['basCustomers'] as $datum) {
  39. $wareHouse = $wareHouses->where('code',$datum['customerid'])->first();
  40. $this->assertNotNull($wareHouse);
  41. $this->assertEquals($wareHouse->name,$datum['descr_c']);
  42. $this->assertEquals($wareHouse->code,$datum['customerid']);
  43. }
  44. }
  45. public function tearDown(): void
  46. {
  47. foreach ($this->data['warehouses'] as $datum) {
  48. $datum->delete();
  49. cache()->forget("WareHouse_{$datum['code']}");
  50. }
  51. parent::tearDown(); // TODO: Change the autogenerated stub
  52. }
  53. }