app/tests/Feature/User/Dish/RemoveDishesForUserTest.php

47 lines
1.3 KiB
PHP
Executable file

<?php
namespace Tests\Feature\User\Dish;
use App\Models\Dish;
use App\Models\User;
use App\Models\UserDish;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Testing\Fluent\AssertableJson;
use Tests\TestCase;
use Tests\Traits\HasPlanner;
class RemoveDishesForUserTest extends TestCase
{
use HasPlanner;
use RefreshDatabase;
public function test_it_can_remove_dish_for_a_user(): void
{
$this->assertDatabaseEmpty(UserDish::class);
$planner = $this->planner;
$user = User::factory()->planner($planner)->create();
$dish = Dish::factory()->planner($planner)->create();
$user->dishes()->attach($dish);
$this->assertDatabaseCount(UserDish::class, 1);
$this
->actingAs($planner)
->delete(route('api.users.dishes.destroy', [
'dish' => $dish,
'user' => $user
]), [])
->assertStatus(200)
->assertJson(fn (AssertableJson $json) => $json
->where('success', true)
->where('payload', null)
->where('errors', null)
);
$this->assertDatabaseEmpty(UserDish::class);
$user->refresh();
$this->assertEmpty($user->dishes);
}
}