HomeFeatureTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace Tests\Feature\Front\Home;
  3. use App\Shop\Categories\Category;
  4. use App\Shop\Categories\Repositories\CategoryRepository;
  5. use App\Shop\Products\Product;
  6. use Illuminate\Support\Collection;
  7. use Tests\TestCase;
  8. class HomeFeatureTest extends TestCase
  9. {
  10. /** @test */
  11. public function it_should_show_the_homepage()
  12. {
  13. $cat1 = factory(Category::class)->create([
  14. 'name' => 'New Arrivals',
  15. 'slug' => 'new-arrivals',
  16. 'status' => 1
  17. ]);
  18. factory(Product::class, 3)->create()->each(function (Product $product) use ($cat1) {
  19. $cat1Repo = new CategoryRepository($cat1);
  20. $cat1Repo->associateProduct($product);
  21. });
  22. $cat2 = factory(Category::class)->create([
  23. 'name' => 'Featured',
  24. 'slug' => 'featured',
  25. 'status' => 1
  26. ]);
  27. factory(Product::class, 3)->create()->each(function (Product $product) use ($cat2) {
  28. $cat2Repo = new CategoryRepository($cat2);
  29. $cat2Repo->associateProduct($product);
  30. });
  31. $this
  32. ->get(route('home'))
  33. ->assertSee('Login')
  34. ->assertSee('Register')
  35. ->assertSee($cat1->name)
  36. ->assertSee($cat2->name)
  37. ->assertStatus(200);
  38. }
  39. /** @test */
  40. public function change_method_is_not_empty()
  41. {
  42. $cat1 = factory(Category::class)->create([
  43. 'name' => 'New Arrivals',
  44. 'slug' => 'new-arrivals',
  45. 'status' => 1
  46. ]);
  47. factory(Product::class, 3)->create()->each(function (Product $product) use ($cat1) {
  48. $cat1Repo = new CategoryRepository($cat1);
  49. $cat1Repo->associateProduct($product);
  50. });
  51. $cat2 = factory(Category::class)->create([
  52. 'name' => 'Featured',
  53. 'slug' => 'featured',
  54. 'status' => 1
  55. ]);
  56. factory(Product::class, 3)->create()->each(function (Product $product) use ($cat2) {
  57. $cat2Repo = new CategoryRepository($cat2);
  58. $cat2Repo->associateProduct($product);
  59. });
  60. //assert
  61. $this->assertInstanceOf(Collection::class, $cat1->products);
  62. $this->assertNotEmpty($cat1->products);
  63. $this->assertTrue(!$cat1->products->isEmpty());
  64. $this->assertTrue($cat2->products->isNotEmpty());
  65. }
  66. }