SearchSynonymsTest.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. use Webkul\Marketing\Models\SearchSynonym;
  3. use function Pest\Laravel\deleteJson;
  4. use function Pest\Laravel\get;
  5. use function Pest\Laravel\postJson;
  6. use function Pest\Laravel\putJson;
  7. it('should show the search synonyms index page', function () {
  8. // Act and Assert.
  9. $this->loginAsAdmin();
  10. get(route('admin.marketing.search_seo.search_synonyms.index'))
  11. ->assertOk()
  12. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.title'))
  13. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.create-btn'));
  14. });
  15. it('should fail the validation with errors when certain field not provided when store the search synonyms', function () {
  16. // Act and Assert.
  17. $this->loginAsAdmin();
  18. postJson(route('admin.marketing.search_seo.search_synonyms.store'))
  19. ->assertJsonValidationErrorFor('name')
  20. ->assertJsonValidationErrorFor('terms')
  21. ->assertUnprocessable();
  22. });
  23. it('should store the newly created search synonyms', function () {
  24. // Act and Assert.
  25. $this->loginAsAdmin();
  26. postJson(route('admin.marketing.search_seo.search_synonyms.store'), [
  27. 'terms' => $term = fake()->randomElement(['jackets', 'shoes', 'footwear', 'phone', 'computers', 'electronics']),
  28. 'name' => $name = fake()->name(),
  29. ])
  30. ->assertOk()
  31. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.create.success'));
  32. $this->assertModelWise([
  33. SearchSynonym::class => [
  34. [
  35. 'terms' => $term,
  36. 'name' => $name,
  37. ],
  38. ],
  39. ]);
  40. });
  41. it('should fail the validation with errors when certain field not provided when update the search synonyms', function () {
  42. // Arrange.
  43. $searchSynonym = SearchSynonym::factory()->create();
  44. // Act and Assert.
  45. $this->loginAsAdmin();
  46. putJson(route('admin.marketing.search_seo.search_synonyms.update', $searchSynonym->id))
  47. ->assertJsonValidationErrorFor('name')
  48. ->assertJsonValidationErrorFor('terms')
  49. ->assertUnprocessable();
  50. });
  51. it('should update the search synonyms', function () {
  52. // Arrange.
  53. $searchSynonym = SearchSynonym::factory()->create();
  54. // Act and Assert.
  55. $this->loginAsAdmin();
  56. putJson(route('admin.marketing.search_seo.search_synonyms.update'), [
  57. 'id' => $searchSynonym->id,
  58. 'terms' => $term = fake()->randomElement(['jackets', 'phone', 'computers', 'electronics']),
  59. 'name' => $searchSynonym->name,
  60. ])
  61. ->assertOk()
  62. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.edit.success'));
  63. $this->assertModelWise([
  64. SearchSynonym::class => [
  65. [
  66. 'id' => $searchSynonym->id,
  67. 'terms' => $term,
  68. 'name' => $searchSynonym->name,
  69. ],
  70. ],
  71. ]);
  72. });
  73. it('should delete the search synonyms', function () {
  74. // Arrange.
  75. $searchSynonym = SearchSynonym::factory()->create();
  76. // Act and Assert.
  77. $this->loginAsAdmin();
  78. deleteJson(route('admin.marketing.search_seo.search_synonyms.delete', $searchSynonym->id))
  79. ->assertOk()
  80. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.edit.delete-success'));
  81. $this->assertDatabaseMissing('search_synonyms', [
  82. 'id' => $searchSynonym->id,
  83. ]);
  84. });
  85. it('should mass delete the search synonyms', function () {
  86. // Arrange.
  87. $searchSynonyms = SearchSynonym::factory()->count(2)->create();
  88. // Act and Assert.
  89. $this->loginAsAdmin();
  90. postJson(route('admin.marketing.search_seo.search_synonyms.mass_delete'), [
  91. 'indices' => $searchSynonyms->pluck('id')->toArray(),
  92. ])
  93. ->assertOk()
  94. ->assertSeeText(trans('admin::app.marketing.search-seo.search-synonyms.index.datagrid.mass-delete-success'));
  95. foreach ($searchSynonyms as $searchSynonym) {
  96. $this->assertDatabaseMissing('search_synonyms', [
  97. 'id' => $searchSynonym->id,
  98. ]);
  99. }
  100. });