Files
metabuilder/packages/audit_log/seed/scripts/tests/stats.test.lua

90 lines
2.7 KiB
Lua

-- Stats calculation tests for audit_log package
local stats = require("stats")
describe("Audit Log Stats Module", function()
describe("calculateStats", function()
it("should calculate stats from empty logs", function()
local logs = {}
local result = stats.calculateStats(logs)
expect(result.total).toBe(0)
expect(result.successful).toBe(0)
expect(result.failed).toBe(0)
expect(result.rateLimit).toBe(0)
end)
it("should calculate stats from successful logs", function()
local logs = {
{ success = true },
{ success = true },
{ success = true }
}
local result = stats.calculateStats(logs)
expect(result.total).toBe(3)
expect(result.successful).toBe(3)
expect(result.failed).toBe(0)
expect(result.rateLimit).toBe(0)
end)
it("should calculate stats from failed logs", function()
local logs = {
{ success = false, error = "Permission denied" },
{ success = false, error = "Not found" }
}
local result = stats.calculateStats(logs)
expect(result.total).toBe(2)
expect(result.successful).toBe(0)
expect(result.failed).toBe(2)
expect(result.rateLimit).toBe(0)
end)
it("should calculate stats from rate limited logs", function()
local logs = {
{ success = false, error = "Rate limit exceeded" },
{ success = false, error = "Rate limit exceeded" }
}
local result = stats.calculateStats(logs)
expect(result.total).toBe(2)
expect(result.successful).toBe(0)
expect(result.failed).toBe(0)
expect(result.rateLimit).toBe(2)
end)
it("should calculate mixed stats", function()
local logs = {
{ success = true },
{ success = false, error = "Permission denied" },
{ success = false, error = "Rate limit exceeded" },
{ success = true }
}
local result = stats.calculateStats(logs)
expect(result.total).toBe(4)
expect(result.successful).toBe(2)
expect(result.failed).toBe(1)
expect(result.rateLimit).toBe(1)
end)
end)
describe("prepareStatsDisplay", function()
it("should format stats for display", function()
local stats_data = {
total = 100,
successful = 75,
failed = 20,
rateLimit = 5
}
local result = stats.prepareStatsDisplay(stats_data)
expect(result).toBeTruthy()
expect(result.total).toBe(100)
expect(result.successful).toBe(75)
expect(result.failed).toBe(20)
expect(result.rateLimit).toBe(5)
end)
end)
end)