mylogger/lib/__tests__/salix.spec.js

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);
}
})();