/**
 * Copyright Super iPaaS Integration LLC, an IBM Company 2024
 */
import { LoggerConfig } from '../src/logger-config.js';
import './setup/loggerenv.js';

describe('Logger Config test', () => {
	it('should return correct data', () => {
		process.env.LOGGER_DATEPATTERN = 'YYYY-MM-DD';
		process.env.LOGGER_FILENAME = '../../logs/studio-%DATE%.log';
		process.env.LOGGER_FORMAT = 'json';
		process.env.LOGGER_MAXFILES = '10d';
		process.env.LOGGER_MAXSIZE = '10m';
		process.env.LOGGER_ZIPPEDARCHIVE = 'true';

		expect(LoggerConfig.getDatePattern()).toBe('YYYY-MM-DD');
		expect(LoggerConfig.getFilename()).toBe('../../logs/studio-%DATE%.log');
		expect(LoggerConfig.getLoggerFormat()).toBe('json');
		expect(LoggerConfig.getMaxFiles()).toBe('10d');
		expect(LoggerConfig.getMaxSize()).toBe('10m');
		expect(LoggerConfig.getZippedArchive()).toBe(true);
	});

	it('should return default format when LOGGER_FORMAT is not defined', () => {
		delete process.env.LOGGER_FORMAT;
		expect(LoggerConfig.getLoggerFormat()).toBe('json');
	});

	it('should return default zipped archive setting when LOGGER_ZIPPEDARCHIVE is not defined', () => {
		delete process.env.LOGGER_ZIPPEDARCHIVE;
		expect(LoggerConfig.getZippedArchive()).toBe(true);
	});

	it('should return correct logger enabled state when STU_LOG_ENABLED is true', () => {
		process.env.STU_LOG_ENABLED = 'true';
		expect(LoggerConfig.isLoggerEnabled()).toBe(true);
	});

	it('should return correct logger enabled state when STU_LOG_ENABLED is false', () => {
		process.env.STU_LOG_ENABLED = 'false';
		expect(LoggerConfig.isLoggerEnabled()).toBe(false);
	});

	it('should return default zipped archive setting when LOGGER_ZIPPEDARCHIVE is set to false', () => {
		process.env.LOGGER_ZIPPEDARCHIVE = 'false';
		expect(LoggerConfig.getZippedArchive()).toBe(false);
	});

	it('should handle undefined STU_LOG_ENABLED and return false by default', () => {
		delete process.env.STU_LOG_ENABLED;
		expect(LoggerConfig.isLoggerEnabled()).toBe(false);
	});
});
