修复新人等级被降为零
This commit is contained in:
@@ -801,6 +801,39 @@ class ChatControllerTest extends TestCase
|
||||
$this->assertGreaterThanOrEqual(0, $user->exp_num); // Might be 1 depending on sysparam
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试低经验新人心跳后不会被降到 0 级,刷新后仍可进入默认房间。
|
||||
*/
|
||||
public function test_low_exp_newbie_keeps_minimum_level_after_heartbeat(): void
|
||||
{
|
||||
Sysparam::updateOrCreate(['alias' => 'exp_per_heartbeat'], ['body' => '0']);
|
||||
Sysparam::updateOrCreate(['alias' => 'jjb_per_heartbeat'], ['body' => '0']);
|
||||
Sysparam::updateOrCreate(['alias' => 'auto_event_chance'], ['body' => '0']);
|
||||
Cache::flush();
|
||||
|
||||
$room = Room::create([
|
||||
'room_name' => 'newhb',
|
||||
'permit_level' => 1,
|
||||
'door_open' => true,
|
||||
]);
|
||||
$user = User::factory()->create([
|
||||
'user_level' => 1,
|
||||
'exp_num' => 0,
|
||||
'has_received_new_gift' => true,
|
||||
]);
|
||||
|
||||
$this->actingAs($user)->get(route('chat.room', $room->id))->assertOk();
|
||||
|
||||
$heartbeatResponse = $this->actingAs($user)->postJson(route('chat.heartbeat', $room->id));
|
||||
|
||||
$heartbeatResponse->assertOk();
|
||||
$heartbeatResponse->assertJsonPath('data.user_level', 1);
|
||||
$this->assertSame(1, $user->fresh()->user_level);
|
||||
|
||||
Redis::del("room:{$room->id}:alive:{$user->username}");
|
||||
$this->actingAs($user)->get(route('chat.room', $room->id))->assertOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试显式退房会清理 Redis 在线状态。
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user