100 lines
2.6 KiB
JavaScript
100 lines
2.6 KiB
JavaScript
|
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);
|
||
|
}
|
||
|
})();
|