forked from eatvio/eatvio-infra
69 lines
1.9 KiB
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();
|
|
|
|
$response = 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();
|
|
|
|
$response = 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();
|
|
|
|
$response = Livewire::test(ListView::class)
|
|
->set('typeFilter', 'user')
|
|
->assertSet('typeFilter', 'user')
|
|
->assertViewHas('blogPosts', fn($posts) => count($posts) === $count)
|
|
->assertOk();
|
|
}
|
|
}
|