Задать вопрос
@firep91613

Как написать тест?

Есть класс App\Policies\PostPolicy. Есть метод:
public function edit(User $user, Post $post): bool
{
    return $user->id == $post->user_id;
}

И такой маршрут:
Route::get('/edit/{post:slug}', 'edit')->name('edit')->can('edit', Post::class);

Написал тест:
public function testEditPost(): void
{
    $post = Post::factory()->create();
    $response = $this->actingAs($post->user)->get(route(self::ACTION_EDIT, $post->slug));
    $response->assertOk();
    $response->assertViewHas('post', $post);
}

Сама фабрика:
spoiler
class PostFactory extends Factory
{
    public function definition(): array
    {
        $user = User::factory()->create();
        $category = Category::factory()->create();

        return [
            'title' => $this->faker->sentence,
            'excerpt' => $this->faker->paragraph,
            'content' => $this->faker->text,
            'user_id' => $user->id,
            'category_id' => $category->id,
            'slug' => $this->faker->slug,
        ];
    }

    public function canDelete(): static
    {
        return $this->state(fn (array $attributes) => [
            'user_id' => User::factory()->createEditor()->create()->id
        ]);
    }
}

Тест все время выдает 403, запрещено. Что не так? $post->user->id и $post->user_id совпадают.
  • Вопрос задан
  • 72 просмотра
Подписаться 2 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы