GetLogisticByCodesTest.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace Tests\Services\LogisticService;
  3. use App\Logistic;
  4. use App\OracleBasCustomer;
  5. use App\Services\LogisticService;
  6. use App\Services\OracleBasCustomerService;
  7. use Illuminate\Foundation\Testing\RefreshDatabase;
  8. use Tests\TestCase;
  9. class GetLogisticByCodesTest extends TestCase
  10. {
  11. use RefreshDatabase;
  12. /** @var LogisticService $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('LogisticService');
  19. $logistic1 = factory(Logistic::class)->create();
  20. $logistic2 = factory(Logistic::class)->create();
  21. $OracleBasCustomer1 = factory(OracleBasCustomer::class)->make(['customer_type' => 'CA','customerid'=>$logistic1->code,'descr_c' =>$logistic1->name ]);
  22. $OracleBasCustomer2 = factory(OracleBasCustomer::class)->make(['customer_type' => 'CA','customerid'=>$logistic2->code,'descr_c' =>$logistic2->name ]);
  23. $OracleBasCustomers = collect([$OracleBasCustomer1,$OracleBasCustomer2]);
  24. $this->data['baseCustomers'] = $OracleBasCustomers;
  25. $this->mock(OracleBasCustomerService::class,function ($mock)use($OracleBasCustomer1,$OracleBasCustomer2){
  26. $mock->shouldReceive('first')->with(["Customer_Type"=>'CA',"CustomerID"=>$OracleBasCustomer1['customerid']])->andReturn($OracleBasCustomer1);
  27. $mock->shouldReceive('first')->with(["Customer_Type"=>'CA',"CustomerID"=>$OracleBasCustomer2['customerid']])->andReturn($OracleBasCustomer2);
  28. });
  29. $this->data['baseCustomers'] = $OracleBasCustomers;
  30. $this->data['logistics'] = collect([$logistic1,$logistic2]);
  31. }
  32. /**
  33. * @test
  34. */
  35. public function getLogisticByCodes()
  36. {
  37. $logistics = $this->service->getLogisticByCodes(data_get($this->data['logistics'],'*.code'));
  38. $this->assertNotEmpty($logistics);
  39. foreach ($logistics as $logistic) {
  40. $baseCustomer = $this->data['baseCustomers']->where('customerid',$logistic->code)->where('descr_c',$logistic->name);
  41. $this->assertNotEmpty($baseCustomer);
  42. $this->assertEquals(1,$baseCustomer->count());
  43. }
  44. foreach ($this->data['baseCustomers'] as $baseCustomer) {
  45. $logistic = $logistics->where('code',$baseCustomer['customerid'])->where('name',$baseCustomer['descr_c']);
  46. $this->assertNotEmpty($logistic);
  47. $this->assertEquals(1,$logistic->count());
  48. }
  49. }
  50. public function tearDown(): void
  51. {
  52. foreach ($this->data['baseCustomers'] as $baseCustomer) {
  53. cache()->forget('getLogisticByCode_'.$baseCustomer['customerid']);
  54. }
  55. foreach ( $this->data['logistics'] as $item) {
  56. $item->delete();
  57. }
  58. parent::tearDown(); // TODO: Change the autogenerated stub
  59. }
  60. }