测试: 完成游戏娱乐模块 (Gomoku, HorseRace, Lottery 等) 功能全量联调测试与代码格式化
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Feature;
|
||||
|
||||
use App\Models\Department;
|
||||
use App\Models\Position;
|
||||
use App\Models\PositionAuthorityLog;
|
||||
use App\Models\PositionDutyLog;
|
||||
use App\Models\User;
|
||||
use App\Models\UserPosition;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class DutyHallControllerTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
public function test_can_view_duty_hall_roster_tab()
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
|
||||
$department = Department::create(['name' => 'Support', 'rank' => 1]);
|
||||
$position = Position::create(['name' => 'Helper', 'department_id' => $department->id, 'rank' => 1, 'type' => 'temp']);
|
||||
|
||||
UserPosition::create([
|
||||
'user_id' => $user->id,
|
||||
'position_id' => $position->id,
|
||||
'status' => 'active',
|
||||
'appointed_at' => now(),
|
||||
]);
|
||||
|
||||
$response = $this->actingAs($user)->get(route('duty-hall.index', ['tab' => 'roster']));
|
||||
|
||||
$response->assertStatus(200);
|
||||
$response->assertViewIs('duty-hall.index');
|
||||
$response->assertViewHas('tab', 'roster');
|
||||
|
||||
$currentStaff = $response->viewData('currentStaff');
|
||||
$this->assertNotNull($currentStaff);
|
||||
$this->assertEquals(1, $currentStaff->count());
|
||||
$this->assertEquals('Support', $currentStaff->first()->name);
|
||||
}
|
||||
|
||||
public function test_can_view_duty_hall_leaderboard_tabs()
|
||||
{
|
||||
$user = User::factory()->create();
|
||||
|
||||
PositionDutyLog::create([
|
||||
'user_id' => $user->id,
|
||||
'position_id' => 1,
|
||||
'login_at' => now()->subMinutes(30),
|
||||
'logout_at' => now(),
|
||||
'duration_seconds' => 1800,
|
||||
]);
|
||||
|
||||
PositionAuthorityLog::create([
|
||||
'user_id' => $user->id, // operator
|
||||
'target_user_id' => $user->id, // target
|
||||
'action_type' => 'reward',
|
||||
'amount' => 500,
|
||||
]);
|
||||
|
||||
$tabs = ['day', 'week', 'month', 'all'];
|
||||
|
||||
foreach ($tabs as $tab) {
|
||||
$response = $this->actingAs($user)->get(route('duty-hall.index', ['tab' => $tab]));
|
||||
|
||||
$response->assertStatus(200);
|
||||
$response->assertViewIs('duty-hall.index');
|
||||
$response->assertViewHas('tab', $tab);
|
||||
|
||||
$leaderboard = $response->viewData('leaderboard');
|
||||
$this->assertNotNull($leaderboard);
|
||||
|
||||
if ($leaderboard->count() > 0) {
|
||||
$row = $leaderboard->first();
|
||||
$this->assertEquals($user->id, $row->user_id);
|
||||
$this->assertEquals(1800, $row->total_seconds);
|
||||
$this->assertEquals(1, $row->reward_count);
|
||||
$this->assertEquals(500, $row->reward_total);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user