require("should"); const { normalize } = require("path"); describe("fileNameFormatter", () => { describe("without a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" } }); it("should take an index and return a filename", () => { fileNameFormatter({ index: 0 }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1, date: "" }).should.eql( normalize("/path/to/file/thefile.log.1") ); fileNameFormatter({ index: 15, date: undefined }).should.eql( normalize("/path/to/file/thefile.log.15") ); fileNameFormatter({ index: 15 }).should.eql( normalize("/path/to/file/thefile.log.15") ); }); }); describe("with a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" } }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16")); }); }); describe("with the alwaysIncludeDate option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-15")); fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16")); }); }); describe("with the keepFileExt option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1 }).should.eql(normalize("/path/to/file/thefile.1.log")); fileNameFormatter({ index: 2 }).should.eql(normalize("/path/to/file/thefile.2.log")); fileNameFormatter({ index: 15 }).should.eql( normalize("/path/to/file/thefile.15.log") ); }); }); describe("with the keepFileExt option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.log")); }); }); describe("with the keepFileExt, alwaysIncludeDate options", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, keepFileExt: true, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.2019-07-15.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.log")); }); }); describe("with the compress option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, compress: true }); it("should take an index and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1 }).should.eql( normalize("/path/to/file/thefile.log.1.gz") ); fileNameFormatter({ index: 2 }).should.eql(normalize("/path/to/file/thefile.log.2.gz")); }); }); describe("with the compress option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, compress: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.gz")); }); }); describe("with the compress, alwaysIncludeDate option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, compress: true, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-15")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.gz")); }); }); describe("with the compress, alwaysIncludeDate, keepFileExt option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, compress: true, alwaysIncludeDate: true, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.2019-07-15.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.log.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.log.gz")); }); }); describe("with the needsIndex option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, compress: true, needsIndex: true, alwaysIncludeDate: true, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.2019-07-15.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.1.log.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.2.log.gz")); }); }); describe("with a date and needsIndex", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.2")); }); }); describe("with the alwaysIncludeDate, needsIndex option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-15")); fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.2")); }); }); describe("with the keepFileExt, needsIndex option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1 }).should.eql(normalize("/path/to/file/thefile.1.log")); fileNameFormatter({ index: 2 }).should.eql(normalize("/path/to/file/thefile.2.log")); fileNameFormatter({ index: 15 }).should.eql( normalize("/path/to/file/thefile.15.log") ); }); }); describe("with the keepFileExt, needsIndex option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.1.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.2.log")); }); }); describe("with the keepFileExt, needsIndex, alwaysIncludeDate options", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, keepFileExt: true, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.2019-07-15.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.1.log") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.2.log")); }); }); describe("with the compress, needsIndex option", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, compress: true }); it("should take an index and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1 }).should.eql( normalize("/path/to/file/thefile.log.1.gz") ); fileNameFormatter({ index: 2 }).should.eql(normalize("/path/to/file/thefile.log.2.gz")); }); }); describe("with the compress, needsIndex option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, compress: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15.1.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.2.gz")); }); }); describe("with the compress, alwaysIncludeDate, needsIndex option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, compress: true, alwaysIncludeDate: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-15")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.log.2019-07-15.1.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.log.2019-07-16.2.gz")); }); }); describe("with the compress, alwaysIncludeDate, keepFileExt, needsIndex option and a date", () => { const fileNameFormatter = require("../lib/fileNameFormatter")({ file: { dir: "/path/to/file", base: "thefile.log", ext: ".log", name: "thefile" }, needsIndex: true, compress: true, alwaysIncludeDate: true, keepFileExt: true }); it("should take an index, date and return a filename", () => { fileNameFormatter({ index: 0, date: "2019-07-15" }).should.eql(normalize("/path/to/file/thefile.2019-07-15.log")); fileNameFormatter({ index: 1, date: "2019-07-15" }).should.eql( normalize("/path/to/file/thefile.2019-07-15.1.log.gz") ); fileNameFormatter({ index: 2, date: "2019-07-16" }).should.eql(normalize("/path/to/file/thefile.2019-07-16.2.log.gz")); }); }); });