Есть класс 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);
}
Сама фабрика:
spoilerclass 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
совпадают.