OrderStatusFeatureTest.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. namespace Tests\Feature\Admin\OrderStatus;
  3. use App\Shop\OrderStatuses\OrderStatus;
  4. use Tests\TestCase;
  5. class OrderStatusFeatureTest extends TestCase
  6. {
  7. /** @test */
  8. public function it_can_delete_the_order_status()
  9. {
  10. $os = factory(OrderStatus::class)->create();
  11. $this
  12. ->actingAs($this->employee, 'employee')
  13. ->delete(route('admin.order-statuses.destroy', $os->id))
  14. ->assertStatus(302)
  15. ->assertRedirect(route('admin.order-statuses.index'))
  16. ->assertSessionHas('message', 'Delete successful');
  17. }
  18. /** @test */
  19. public function it_can_update_the_order_status()
  20. {
  21. $os = factory(OrderStatus::class)->create();
  22. $this
  23. ->actingAs($this->employee, 'employee')
  24. ->put(route('admin.order-statuses.update', $os->id), ['name' => 'test'])
  25. ->assertStatus(302)
  26. ->assertRedirect(route('admin.order-statuses.edit', $os->id))
  27. ->assertSessionHas('message', 'Update successful');
  28. }
  29. /** @test */
  30. public function it_can_show_the_create_and_edit_form_of_the_order_status()
  31. {
  32. $this
  33. ->actingAs($this->employee, 'employee')
  34. ->get(route('admin.order-statuses.create'))
  35. ->assertStatus(200);
  36. $os = factory(OrderStatus::class)->create();
  37. $this
  38. ->actingAs($this->employee, 'employee')
  39. ->get(route('admin.order-statuses.edit', $os->id))
  40. ->assertStatus(200)
  41. ->assertSee($os->name)
  42. ->assertSee($os->color);
  43. }
  44. /** @test */
  45. public function it_can_create_order_status()
  46. {
  47. $create = [
  48. 'name' => $this->faker->name,
  49. 'color' => $this->faker->word
  50. ];
  51. $this
  52. ->actingAs($this->employee, 'employee')
  53. ->post(route('admin.order-statuses.store'), $create)
  54. ->assertStatus(302)
  55. ->assertRedirect(route('admin.order-statuses.index'))
  56. ->assertSessionHas('message', 'Create successful');
  57. }
  58. /** @test */
  59. public function it_can_show_all_the_order_statues()
  60. {
  61. factory(OrderStatus::class)->create();
  62. $this
  63. ->actingAs($this->employee, 'employee')
  64. ->get(route('admin.order-statuses.index'))
  65. ->assertStatus(200);
  66. }
  67. /** @test */
  68. public function it_errors_when_the_order_status_being_updated_is_already_existing()
  69. {
  70. $os = factory(OrderStatus::class)->create();
  71. $os2 = factory(OrderStatus::class)->create();
  72. $this
  73. ->actingAs($this->employee, 'employee')
  74. ->put(route('admin.order-statuses.update', $os->id), ['name' => $os2->name])
  75. ->assertStatus(302)
  76. ->assertSessionHasErrors(['name' => 'The name has already been taken.']);
  77. }
  78. /** @test */
  79. public function it_errors_when_the_order_status_being_updated_is_null()
  80. {
  81. $os = factory(OrderStatus::class)->create();
  82. $this
  83. ->actingAs($this->employee, 'employee')
  84. ->put(route('admin.order-statuses.update', $os->id), ['name' => null])
  85. ->assertStatus(302)
  86. ->assertSessionHasErrors(['name' => 'The name field is required.']);
  87. }
  88. /** @test */
  89. public function it_errors_when_name_of_the_order_status_is_not_filled()
  90. {
  91. $this
  92. ->actingAs($this->employee, 'employee')
  93. ->post(route('admin.order-statuses.store', []))
  94. ->assertStatus(302)
  95. ->assertSessionHasErrors(['name' => 'The name field is required.']);
  96. }
  97. }