Files
metabuilder/packages/package_validator/seed/scripts/tests/metadata.test.lua

118 lines
3.3 KiB
Lua

-- Metadata validation tests for schema_validator package
local metadata_schema = require("metadata_schema")
describe("Metadata Schema Validation", function()
it("should validate a complete valid metadata", function()
local valid_metadata = {
packageId = "test_package",
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test",
dependencies = {},
exports = {
components = {},
scripts = {}
},
minLevel = 1
}
local valid, errors = metadata_schema.validate_metadata(valid_metadata)
expect(valid).toBe(true)
expect(#errors).toBe(0)
end)
it("should fail when packageId is missing", function()
local invalid_metadata = {
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test"
}
local valid, errors = metadata_schema.validate_metadata(invalid_metadata)
expect(valid).toBe(false)
expect(#errors).toBeGreaterThan(0)
end)
it("should fail when packageId has uppercase letters", function()
local invalid_metadata = {
packageId = "TestPackage",
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test"
}
local valid, errors = metadata_schema.validate_metadata(invalid_metadata)
expect(valid).toBe(false)
end)
it("should fail when version is not semantic", function()
local invalid_metadata = {
packageId = "test_package",
name = "Test Package",
version = "1.0",
description = "A test package",
author = "MetaBuilder",
category = "test"
}
local valid, errors = metadata_schema.validate_metadata(invalid_metadata)
expect(valid).toBe(false)
end)
it("should fail when minLevel is out of range", function()
local invalid_metadata = {
packageId = "test_package",
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test",
minLevel = 10
}
local valid, errors = metadata_schema.validate_metadata(invalid_metadata)
expect(valid).toBe(false)
end)
it("should validate optional bindings field", function()
local valid_metadata = {
packageId = "test_package",
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test",
bindings = {
dbal = true,
browser = false
}
}
local valid, errors = metadata_schema.validate_metadata(valid_metadata)
expect(valid).toBe(true)
end)
it("should fail when bindings.dbal is not boolean", function()
local invalid_metadata = {
packageId = "test_package",
name = "Test Package",
version = "1.0.0",
description = "A test package",
author = "MetaBuilder",
category = "test",
bindings = {
dbal = "yes"
}
}
local valid, errors = metadata_schema.validate_metadata(invalid_metadata)
expect(valid).toBe(false)
end)
end)