mirror of
https://github.com/PHIDIAS0303/ExpCluster.git
synced 2026-11-11 23:54:52 +09:00
Players on the watch list are announced to every online admin on every instance when they join, and the join is posted to the Discord and JSON webhooks. The Reports page has a second table for the watch list with an Add button and a Delete button per row. Reports can be marked read or unread from the web interface. Each report row also has an Add to watch list button which opens the add form filled in with the player and reason. Setting exp_reports.watch_unread_reports treats players with unread reports as watched. Reports now store created_at_ms because marking them read changes updated_at_ms. Old reports.json files migrate on load with updated_at_ms as the creation time. The report webhook moved from the datastore update listener to the create handler so reading a report is not posted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
52 lines
2.0 KiB
Lua
52 lines
2.0 KiB
Lua
--[[-- Test environment for module/control.lua
|
|
Extends the shared stubs with a fresh copy of the reports module, a stub of
|
|
the exp_util functions it uses, and helpers to build the payloads the
|
|
instance plugin sends.
|
|
|
|
Run as a chunk by test/lua/runner.js, receiving the shared folder. The suite
|
|
returned here becomes `...` in each test file.
|
|
]]
|
|
|
|
local shared_root = ... --- @type string
|
|
local source = assert(debug.getinfo(1, "S")).source:gsub("\\", "/")
|
|
local plugin_root = assert(source:match("^@(.*)/test/module/env%.lua$"))
|
|
|
|
local Framework = assert(loadfile(shared_root .. "/framework.lua"))() --- @type Framework
|
|
|
|
--- The environment given to each test: the stubs extended with a fresh copy
|
|
--- of the reports module and the fixture helpers
|
|
--- @class ExpReports.TestEnv : Stubs
|
|
--- @field Reports ExpReports A fresh copy of the reports module
|
|
--- @field report fun(player_name: string, by_player_name: string, reason: string?): ExpReports.Report A report as the controller sends it
|
|
|
|
return Framework.suite(function(env)
|
|
--- @cast env ExpReports.TestEnv
|
|
env.extend_requires{
|
|
["modules/exp_util"] = {
|
|
format_player_name_locale = function(player)
|
|
assert(type(player) == "table", "format_player_name_locale takes a LuaPlayer")
|
|
return player.name
|
|
end,
|
|
format_rich_text_color_locale = function(message) return message end,
|
|
color = { orange_red = "orange_red", white = "white" },
|
|
},
|
|
}
|
|
env.Reports = assert(loadfile(plugin_root .. "/module/control.lua"))() --- @type ExpReports
|
|
|
|
local next_id = 0
|
|
function env.report(player_name, by_player_name, reason)
|
|
next_id = next_id + 1
|
|
return {
|
|
id = next_id,
|
|
player_name = player_name,
|
|
by_player_name = by_player_name,
|
|
reason = reason or "griefing",
|
|
instance_name = "test",
|
|
created_at_ms = 1000,
|
|
updated_at_ms = 1000,
|
|
}
|
|
end
|
|
|
|
return env
|
|
end)
|