Files
metabuilder/packages/schema_editor/seed/scripts/tests/field_definitions.test.lua
2025-12-30 14:12:46 +00:00

56 lines
1.9 KiB
Lua

-- Schema field definition tests
-- Uses lua_test framework with parameterized test cases
describe("Schema Fields", function()
local cases = load_cases("field_definitions.cases.json")
local fields = require("fields")
describe("define", function()
it_each(cases.define, "$desc", function(tc)
local result = fields.define(tc.name, tc.type, tc.options)
expect(result.name).toBe(tc.name)
expect(result.type).toBe(tc.type)
expect(result.nullable).toBe(tc.expected_nullable)
expect(result.unique).toBe(tc.expected_unique)
if tc.expected_default ~= nil then
expect(result.default).toBe(tc.expected_default)
end
end)
end)
describe("primary_key", function()
it_each(cases.primary_key, "$desc", function(tc)
local result = fields.primary_key(tc.name)
expect(result.name).toBe(tc.name)
expect(result.type).toBe(fields.INTEGER)
expect(result.nullable).toBe(false)
expect(result.unique).toBe(true)
end)
end)
describe("foreign_key", function()
it_each(cases.foreign_key, "$desc", function(tc)
local result = fields.foreign_key(tc.name, tc.ref_table, tc.ref_field)
expect(result.name).toBe(tc.name)
expect(result.type).toBe(fields.INTEGER)
expect(result.nullable).toBe(true)
expect(result.references).toBeDefined()
expect(result.references.table).toBe(tc.ref_table)
expect(result.references.field).toBe(tc.ref_field)
end)
end)
describe("field types", function()
it("defines all standard field types", function()
expect(fields.STRING).toBe("string")
expect(fields.INTEGER).toBe("integer")
expect(fields.FLOAT).toBe("float")
expect(fields.BOOLEAN).toBe("boolean")
expect(fields.DATE).toBe("date")
expect(fields.DATETIME).toBe("datetime")
expect(fields.TEXT).toBe("text")
expect(fields.JSON).toBe("json")
end)
end)
end)