61 lines
1.5 KiB
PHP
61 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Livewire;
|
|
|
|
use App\Livewire\LikeButton;
|
|
use App\Models\Episode;
|
|
use App\Models\Hentai;
|
|
use App\Models\Studios;
|
|
use App\Models\User;
|
|
use Livewire\Livewire;
|
|
use Maize\Markable\Models\Like;
|
|
use Tests\RefreshDatabase;
|
|
use Tests\TestCase;
|
|
|
|
class LikeButtonTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
private function makeEpisode(): Episode
|
|
{
|
|
$hentai = Hentai::factory()->create();
|
|
$studio = Studios::factory()->create();
|
|
|
|
return Episode::factory()->create([
|
|
'hentai_id' => $hentai->id,
|
|
'studios_id' => $studio->id,
|
|
]);
|
|
}
|
|
|
|
public function test_guest_like_is_a_noop(): void
|
|
{
|
|
$episode = $this->makeEpisode();
|
|
|
|
Livewire::test(LikeButton::class, ['episode' => $episode])
|
|
->call('like');
|
|
|
|
$this->assertDatabaseCount('markable_likes', 0);
|
|
}
|
|
|
|
public function test_user_can_toggle_like(): void
|
|
{
|
|
$episode = $this->makeEpisode();
|
|
$user = User::factory()->create();
|
|
$this->actingAs($user);
|
|
|
|
Livewire::test(LikeButton::class, ['episode' => $episode])
|
|
->call('like')
|
|
->assertSet('liked', true)
|
|
->assertSet('likeCount', 1);
|
|
|
|
$this->assertTrue(Like::has($episode, $user));
|
|
|
|
Livewire::test(LikeButton::class, ['episode' => $episode->fresh()])
|
|
->call('like')
|
|
->assertSet('liked', false)
|
|
->assertSet('likeCount', 0);
|
|
|
|
$this->assertFalse(Like::has($episode, $user));
|
|
}
|
|
}
|