/
evo
/
docviz
Обзор
Документация
Войти
/
evo
/
docviz
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
tests/Unit/UserActivityModelTest.php
85 строк
3 KB
evo
Checkout for tests
08 фев 2026, 09:59
Верифицирован
08 фев 2026, 09:59
ccd7e85
Код
Авторство
О чём код?
<?php namespace Tests\Unit; use App\Models\User; use App\Modules\Messaging\Models\UserActivity; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; class UserActivityModelTest extends TestCase { use RefreshDatabase; public function test_user_activity_has_no_timestamps(): void { $this->assertFalse((new UserActivity())->usesTimestamps()); } public function test_user_activity_fillable_attributes(): void { $fillable = (new UserActivity())->getFillable(); $this->assertContains('user_id', $fillable); $this->assertContains('last_activity_at', $fillable); } public function test_user_activity_belongs_to_user(): void { $user = User::factory()->create(); $activity = UserActivity::factory()->create(['user_id' => $user->id]); $this->assertInstanceOf(User::class, $activity->user); $this->assertSame($user->id, $activity->user->id); } public function test_user_activity_update_activity_creates_new_record(): void { $user = User::factory()->create(); $this->assertDatabaseMissing('user_activities', ['user_id' => $user->id]); UserActivity::updateActivity($user); $this->assertDatabaseHas('user_activities', ['user_id' => $user->id]); } public function test_user_activity_update_activity_updates_existing_record(): void { config(['messaging.activity.update_interval' => 5]); $user = User::factory()->create(); $oldTime = now()->subMinutes(10); UserActivity::factory()->create([ 'user_id' => $user->id, 'last_activity_at' => $oldTime, ]); UserActivity::updateActivity($user); $activity = UserActivity::where('user_id', $user->id)->first(); $this->assertTrue($activity->last_activity_at->gt($oldTime)); } public function test_user_activity_is_online_when_recent(): void { config(['messaging.activity.online_timeout' => 5]); $activity = UserActivity::factory()->create(['last_activity_at' => now()->subMinutes(2)]); $this->assertTrue($activity->isOnline()); } public function test_user_activity_is_offline_when_old(): void { config(['messaging.activity.online_timeout' => 5]); $activity = UserActivity::factory()->create(['last_activity_at' => now()->subMinutes(10)]); $this->assertFalse($activity->isOnline()); } public function test_user_activity_is_offline_when_null(): void { $activity = UserActivity::factory()->create(['last_activity_at' => null]); $this->assertFalse($activity->isOnline()); } }