GetWareHouseByCodesTest.php 2.3 KB

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