Files
eatvio-infra/tests/Feature/BlogPost/IndexTest.php

69 lines
1.9 KiB
PHP

<?php
namespace Tests\Feature\BlogPost;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use Livewire\Livewire;
use App\Livewire\BlogPost\ListView;
use App\Models\BlogPost;
use Illuminate\Database\Eloquent\Collection;
class IndexTest extends TestCase
{
use RefreshDatabase;
protected User $user;
private Collection $blogPosts;
public function setUp(): void
{
$this->refreshApplicationWithLocale('en');
$this->user = User::factory()
->create();
}
public function test_index_page_show_all_blog_posts_success(): void
{
$this->actingAs($this->user);
$count = BlogPost::all()->count();
Livewire::test(ListView::class)
->set('typeFilter', 'all')
->assertSet('typeFilter', 'all')
->assertViewHas('blogPosts', fn($posts) => count($posts) === $count)
->assertOk();
}
public function test_index_page_show_is_consultant_blog_posts_success(): void
{
$this->actingAs($this->user);
$count = collect(BlogPost::all())->filter(fn($blogPost) => $blogPost->author()->first()->is_consultant)->count();
Livewire::test(ListView::class)
->set('typeFilter', 'consultant')
->assertSet('typeFilter', 'consultant')
->assertViewHas('blogPosts', fn($posts) => count($posts) === $count)
->assertOk();
}
public function test_index_page_show_is_user_blog_posts_success(): void
{
$this->actingAs($this->user);
$count = collect(BlogPost::all())->filter(fn($blogPost) => !$blogPost->author()->first()->is_consultant)->count();
Livewire::test(ListView::class)
->set('typeFilter', 'user')
->assertSet('typeFilter', 'user')
->assertViewHas('blogPosts', fn($posts) => count($posts) === $count)
->assertOk();
}
}