const assert = require("assert"); const fs = require("fs"); const path = require("path"); const Salix = require("./Salix"); // Ajusta la ruta si está en otro directorio // Mock del sistema de archivos const mockFs = { files: {}, existsSync(filePath) { return !!this.files[filePath]; }, writeFileSync(filePath, content) { this.files[filePath] = content; }, readFileSync(filePath) { if (!this.existsSync(filePath)) { throw { code: "ENOENT" }; } return this.files[filePath]; }, reset() { this.files = {}; }, }; // Reemplaza los métodos reales de fs con el mock const originalFs = { ...fs }; Object.assign(fs, mockFs); (async () => { try { // Configuración inicial const loggerMock = { conf: { salix: { url: "http://example.com", api: { status: "status", logInfo: "logInfo", }, renewInterval: 10, }, }, }; // Test: Inicialización básica const salix = new Salix(); await salix.init(loggerMock); assert.strictEqual(salix.conf, loggerMock.conf, "La configuración no se inicializó correctamente"); console.log("✅ Salix.init configuró correctamente los valores iniciales."); // Test: Cargar configuración const mockFilePath = path.join(__dirname, "..", "config/salix.local.yml"); mockFs.files[mockFilePath] = JSON.stringify({ salixVersion: "1.0.0" }); const loadedConfig = await salix.loadConfig(); assert.deepStrictEqual( loadedConfig, { salixVersion: "1.0.0" }, "La configuración cargada no coincide con lo esperado" ); console.log("✅ Salix.loadConfig cargó correctamente el archivo YAML."); // Test: Guardar configuración const newConfig = { log: "testLog" }; await salix.saveConfig(newConfig); const savedContent = JSON.parse(mockFs.files[mockFilePath]); assert.strictEqual( savedContent.log, "testLog", "La configuración no se guardó correctamente" ); console.log("✅ Salix.saveConfig guardó correctamente el archivo YAML."); // Test: Comparar versiones const isDeprecated = salix.compareVersion("2.0.0", "1.0.0"); assert.strictEqual( isDeprecated, true, "La comparación de versiones no detectó correctamente la versión como desactualizada" ); console.log("✅ Salix.compareVersion funciona correctamente."); // Limpia el mock del sistema de archivos mockFs.reset(); } catch (error) { console.error("❌ Error en las pruebas:", error); } finally { // Restaura los métodos originales de fs Object.assign(fs, originalFs); } })();