Files
fitness/tests/Feature/FavoriteTest.php
T

48 lines
1.5 KiB
PHP
Raw Normal View History

<?php
namespace Tests\Feature;
use App\Models\Exercise;
use App\Models\User;
use App\Models\Workout;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class FavoriteTest extends TestCase
{
use RefreshDatabase;
public function test_guest_cannot_favorite_an_exercise(): void
{
$exercise = Exercise::factory()->create();
$response = $this->post(route('exercises.favorite', $exercise));
$response->assertRedirect(route('login'));
}
public function test_user_can_toggle_exercise_favorite(): void
{
$user = User::factory()->create();
$exercise = Exercise::factory()->create();
$this->actingAs($user)->post(route('exercises.favorite', $exercise));
$this->assertTrue($user->favoriteExercises()->where('exercise_id', $exercise->id)->exists());
$this->actingAs($user)->post(route('exercises.favorite', $exercise));
$this->assertFalse($user->favoriteExercises()->where('exercise_id', $exercise->id)->exists());
}
public function test_user_can_toggle_workout_favorite(): void
{
$user = User::factory()->create();
$workout = Workout::factory()->create();
$this->actingAs($user)->post(route('workouts.favorite', $workout));
$this->assertTrue($user->favoriteWorkouts()->where('workout_id', $workout->id)->exists());
$this->actingAs($user)->post(route('workouts.favorite', $workout));
$this->assertFalse($user->favoriteWorkouts()->where('workout_id', $workout->id)->exists());
}
}