mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-26 14:54:55 +00:00
56 lines
1.9 KiB
Lua
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)
|