import fs from "fs"
import SimpleLogger from "../src/simpleLogger"

describe("SimpleLogger", () => {
  let logger: SimpleLogger
  const logFile = "test.log"

  beforeEach(() => {
    logger = new SimpleLogger({
      logLevel: "debug",
      logFile: logFile,
    })
    if (fs.existsSync(logFile)) {
      fs.unlinkSync(logFile)
    }
  })

  afterEach(() => {
    if (fs.existsSync(logFile)) {
      fs.unlinkSync(logFile)
    }
  })

  it("should log messages to console", () => {
    const consoleSpy = jest.spyOn(console, "log")
    logger.info("Information message")

    expect(consoleSpy).toHaveBeenCalledWith(
      expect.stringContaining("Information message")
    )
  })

  it("should write logs to file if logFile is specified", () => {
    logger.warn("Warning message")

    expect(fs.existsSync(logFile)).toBeTruthy()
    const logContent = fs.readFileSync(logFile, "utf8")
    expect(logContent).toContain("Warning message")
  })

  it("should rotate log files correctly", () => {
    logger = new SimpleLogger({
      logLevel: "debug",
      logFile: logFile,
      maxFileSize: 10, // Set small size for testing log rotation
    })

    logger.debug("First message")
    logger.debug("Second message") // This should trigger log rotation

    expect(fs.existsSync(logFile)).toBeTruthy()
    expect(fs.existsSync(`test.1.log`)).toBeTruthy()
  })

  // Add more tests as needed...
})
