CourierUnitTest.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. namespace Tests\Unit\Courier;
  3. use App\Shop\Couriers\Courier;
  4. use App\Shop\Couriers\Exceptions\CourierInvalidArgumentException;
  5. use App\Shop\Couriers\Exceptions\CourierNotFoundException;
  6. use App\Shop\Couriers\Repositories\CourierRepository;
  7. use Tests\TestCase;
  8. class CourierUnitTest extends TestCase
  9. {
  10. /** @test */
  11. public function it_can_list_all_the_couriers()
  12. {
  13. $data = [
  14. 'name' => $this->faker->word,
  15. 'description' => $this->faker->paragraph,
  16. 'url' => $this->faker->sentence,
  17. 'is_free' => 1,
  18. 'status' => 1
  19. ];
  20. $courierRepo = new CourierRepository(new Courier);
  21. $courierRepo->createCourier($data);
  22. $lists = $courierRepo->listCouriers();
  23. foreach ($lists as $list) {
  24. $this->assertDatabaseHas('couriers', ['name' => $list->name]);
  25. $this->assertDatabaseHas('couriers', ['description' => $list->description]);
  26. $this->assertDatabaseHas('couriers', ['url' => $list->url]);
  27. $this->assertDatabaseHas('couriers', ['is_free' => $list->is_free]);
  28. $this->assertDatabaseHas('couriers', ['status' => $list->status]);
  29. }
  30. }
  31. /** @test */
  32. public function it_errors_when_the_courier_is_not_found()
  33. {
  34. $this->expectException(CourierNotFoundException::class);
  35. $this->expectExceptionMessage('Courier not found.');
  36. $courierRepo = new CourierRepository(new Courier);
  37. $courierRepo->findCourierById(999);
  38. }
  39. /** @test */
  40. public function it_can_get_the_courier()
  41. {
  42. $data = [
  43. 'name' => $this->faker->word,
  44. 'description' => $this->faker->paragraph,
  45. 'url' => $this->faker->sentence,
  46. 'is_free' => 1,
  47. 'status' => 1
  48. ];
  49. $courierRepo = new CourierRepository(new Courier);
  50. $created = $courierRepo->createCourier($data);
  51. $found = $courierRepo->findCourierById($created->id);
  52. $this->assertEquals($data['name'], $found->name);
  53. $this->assertEquals($data['description'], $found->description);
  54. $this->assertEquals($data['url'], $found->url);
  55. $this->assertEquals($data['is_free'], $found->is_free);
  56. $this->assertEquals($data['status'], $found->status);
  57. }
  58. /** @test */
  59. public function it_errors_updating_the_courier()
  60. {
  61. $this->expectException(CourierInvalidArgumentException::class);
  62. $courierRepo = new CourierRepository($this->courier);
  63. $courierRepo->updateCourier(['name' => null]);
  64. }
  65. /** @test */
  66. public function it_can_update_the_courier()
  67. {
  68. $courierRepo = new CourierRepository($this->courier);
  69. $update = [
  70. 'name' => $this->faker->word,
  71. 'description' => $this->faker->paragraph,
  72. 'url' => $this->faker->sentence,
  73. 'is_free' => 1,
  74. 'status' => 1
  75. ];
  76. $updated = $courierRepo->updateCourier($update);
  77. $this->assertTrue($updated);
  78. $this->assertEquals($update['name'], $this->courier->name);
  79. $this->assertEquals($update['description'], $this->courier->description);
  80. $this->assertEquals($update['url'], $this->courier->url);
  81. $this->assertEquals($update['is_free'], $this->courier->is_free);
  82. $this->assertEquals($update['status'], $this->courier->status);
  83. }
  84. /** @test */
  85. public function it_errors_when_creating_the_courier()
  86. {
  87. $this->expectException(CourierInvalidArgumentException::class);
  88. $courierRepo = new CourierRepository(new Courier);
  89. $courierRepo->createCourier([]);
  90. }
  91. /** @test */
  92. public function it_can_create_a_courier()
  93. {
  94. $data = [
  95. 'name' => $this->faker->word,
  96. 'description' => $this->faker->paragraph,
  97. 'url' => $this->faker->sentence,
  98. 'is_free' => 1,
  99. 'status' => 1
  100. ];
  101. $courierRepo = new CourierRepository(new Courier);
  102. $created = $courierRepo->createCourier($data);
  103. $this->assertEquals($data['name'], $created->name);
  104. $this->assertEquals($data['description'], $created->description);
  105. $this->assertEquals($data['url'], $created->url);
  106. $this->assertEquals($data['is_free'], $created->is_free);
  107. $this->assertEquals($data['status'], $created->status);
  108. }
  109. }