/
evo
/
docviz
Обзор
Документация
Войти
/
evo
/
docviz
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
tests/Feature/UsersAdminTest.php
105 строк
4 KB
evo
UI updates, deployment prep, and code highlighting fix
08 фев 2026, 12:17
Верифицирован
08 фев 2026, 12:17
2c0897e
Код
Авторство
О чём код?
<?php namespace Tests\Feature; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Storage; use Tests\TestCase; class UsersAdminTest extends TestCase { use RefreshDatabase; public function test_users_index_requires_moderator_role(): void { $user = User::factory()->user()->create(); $response = $this->actingAs($user)->get(route('dashboard.users.index')); $response->assertStatus(403); } public function test_moderator_can_access_users_index(): void { $user = User::factory()->moderator()->create(); $response = $this->actingAs($user)->get(route('dashboard.users.index')); $response->assertStatus(200); } public function test_moderator_can_create_user(): void { $moderator = User::factory()->moderator()->create(); $response = $this->actingAs($moderator)->post(route('dashboard.users.store'), [ 'name' => 'New User', 'email' => 'new@example.com', 'password' => 'password123', 'password_confirmation' => 'password123', 'role' => 'user', ]); $response->assertRedirect(route('dashboard.users.index')); $this->assertDatabaseHas('users', ['email' => 'new@example.com', 'name' => 'New User']); } public function test_moderator_can_edit_user(): void { $moderator = User::factory()->moderator()->create(); $target = User::factory()->user()->create(); $response = $this->actingAs($moderator)->get(route('dashboard.users.edit', $target)); $response->assertStatus(200); } public function test_moderator_can_update_user(): void { $moderator = User::factory()->moderator()->create(); $target = User::factory()->user()->create(['name' => 'Old Name']); $response = $this->actingAs($moderator)->put(route('dashboard.users.update', $target), [ 'name' => 'Updated Name', 'email' => $target->email, 'role' => 'user', ]); $response->assertRedirect(); $target->refresh(); $this->assertSame('Updated Name', $target->name); } public function test_moderator_can_ban_user(): void { $moderator = User::factory()->moderator()->create(); $target = User::factory()->user()->create(); $response = $this->actingAs($moderator)->post(route('dashboard.users.ban', $target), [ 'ban_duration' => '24', 'ban_reason' => 'Test ban', ]); $response->assertRedirect(); $target->refresh(); $this->assertSame('banned', $target->role); } public function test_moderator_can_unban_user(): void { $target = User::factory()->user()->create(); $target->update([ 'previous_role' => 'user', 'role' => 'banned', 'banned_until' => now()->addDays(1), ]); $moderator = User::factory()->moderator()->create(); $response = $this->actingAs($moderator)->post(route('dashboard.users.unban', $target)); $response->assertRedirect(); $target->refresh(); $this->assertSame('user', $target->role); $this->assertNull($target->banned_until); } public function test_owner_can_delete_user_avatar(): void { Storage::fake('public'); $target = User::factory()->user()->create(); $target->update(['avatar' => 'avatars/test.jpg']); $owner = User::factory()->owner()->create(); $response = $this->actingAs($owner)->delete(route('dashboard.users.delete-avatar', $target)); $response->assertRedirect(); $target->refresh(); $this->assertNull($target->avatar); } }