diff --git a/packages/package_validator/seed/scripts/tests/devdependencies.test.lua b/packages/package_validator/seed/scripts/tests/devdependencies.test.lua new file mode 100644 index 000000000..c1cefaec3 --- /dev/null +++ b/packages/package_validator/seed/scripts/tests/devdependencies.test.lua @@ -0,0 +1,101 @@ +-- DevDependencies validation tests +local structure_validator = require("structure_validator") + +describe("DevDependencies Validation", function() + it("should not require tests when lua_test is absent", function() + local metadata = { + packageId = "test_package", + name = "Test Package", + version = "1.0.0", + description = "Test", + author = "Test", + category = "test", + dependencies = [], + exports = { + scripts = ["init"] + } + } + + local errors, warnings = structure_validator.validate_test_structure("packages/test_package/seed", metadata) + + -- Should not have errors or warnings about missing tests + expect(#errors).toBe(0) + expect(#warnings).toBe(0) + end) + + it("should warn about missing tests when lua_test is a devDependency", function() + local metadata = { + packageId = "test_package", + name = "Test Package", + version = "1.0.0", + description = "Test", + author = "Test", + category = "test", + dependencies = [], + devDependencies = ["lua_test"], + exports = { + scripts = ["init"] + } + } + + local errors, warnings = structure_validator.validate_test_structure("packages/test_package/seed", metadata) + + -- Should warn about missing test files + expect(#warnings).toBeGreaterThan(0) + end) + + it("should accept valid devDependencies array", function() + local metadata_schema = require("metadata_schema") + + local metadata = { + packageId = "test_package", + name = "Test Package", + version = "1.0.0", + description = "Test", + author = "Test", + category = "test", + devDependencies = ["lua_test", "package_validator"] + } + + local valid, errors = metadata_schema.validate_metadata(metadata) + expect(valid).toBe(true) + end) + + it("should fail when devDependencies is not an array", function() + local metadata_schema = require("metadata_schema") + + local metadata = { + packageId = "test_package", + name = "Test Package", + version = "1.0.0", + description = "Test", + author = "Test", + category = "test", + devDependencies = "lua_test" -- Should be array + } + + local valid, errors = metadata_schema.validate_metadata(metadata) + expect(valid).toBe(false) + end) + + it("should recommend test files when lua_test is present", function() + local metadata = { + packageId = "admin_dialog", + name = "Admin Dialog", + version = "1.0.0", + description = "Test", + author = "Test", + category = "test", + devDependencies = ["lua_test"], + exports = { + scripts = ["init"] + } + } + + local errors, warnings = structure_validator.validate_scripts_structure("packages/admin_dialog/seed", metadata) + + -- Should check for test files when lua_test is present + expect(errors).toBeTruthy() + expect(warnings).toBeTruthy() + end) +end)