projecte_ionic/node_modules/streamroller/test/fileNameParser-test.js
2022-02-09 18:30:03 +01:00

181 lines
5.3 KiB
JavaScript
Executable file

const should = require("should");
describe("fileNameParser", () => {
describe("with default options", () => {
const parser = require("../lib/fileNameParser")({
file: {
dir: "/path/to/file",
base: "thefile.log",
ext: ".log",
name: "thefile"
}
});
it("should return null for filenames that do not match", () => {
should(parser("cheese.txt")).not.be.ok();
should(parser("thefile.log.biscuits")).not.be.ok();
});
it("should take a filename and return the index", () => {
parser("thefile.log.2").should.eql({
filename: "thefile.log.2",
index: 2,
isCompressed: false
});
parser("thefile.log.2.gz").should.eql({
filename: "thefile.log.2.gz",
index: 2,
isCompressed: true
});
});
});
describe("with pattern option", () => {
const parser = require("../lib/fileNameParser")({
file: {
dir: "/path/to/file",
base: "thefile.log",
ext: ".log",
name: "thefile"
},
pattern: "yyyy-MM-dd"
});
it("should return null for files that do not match", () => {
should(parser("thefile.log.biscuits")).not.be.ok();
should(parser("thefile.log.2019")).not.be.ok();
should(parser("thefile.log.3.2")).not.be.ok();
should(parser("thefile.log.04-18")).not.be.ok();
should(parser("anotherfile.log.2020-04-18")).not.be.ok();
should(parser("2020-05-18")).not.be.ok();
});
it("should take a filename and return the date", () => {
parser("thefile.log.2019-07-17").should.eql({
filename: "thefile.log.2019-07-17",
index: 0,
date: "2019-07-17",
timestamp: new Date(2019, 6, 17).getTime(),
isCompressed: false
});
parser("thefile.log.gz").should.eql({
filename: "thefile.log.gz",
index: 0,
isCompressed: true
});
});
it("should take a filename and return both date and index", () => {
parser("thefile.log.2019-07-17.2").should.eql({
filename: "thefile.log.2019-07-17.2",
index: 2,
date: "2019-07-17",
timestamp: new Date(2019, 6, 17).getTime(),
isCompressed: false
});
parser("thefile.log.2019-07-17.2.gz").should.eql({
filename: "thefile.log.2019-07-17.2.gz",
index: 2,
date: "2019-07-17",
timestamp: new Date(2019, 6, 17).getTime(),
isCompressed: true
});
});
});
describe("with keepFileExt option", () => {
const parser = require("../lib/fileNameParser")({
file: {
dir: "/path/to/file",
base: "thefile.log",
ext: ".log",
name: "thefile"
},
keepFileExt: true
});
it("should take a filename and return the index", () => {
should(parser("thefile.log.2")).not.be.ok();
should(parser("thefile.log.2.gz")).not.be.ok();
parser("thefile.2.log").should.eql({
filename: "thefile.2.log",
index: 2,
isCompressed: false
});
parser("thefile.2.log.gz").should.eql({
filename: "thefile.2.log.gz",
index: 2,
isCompressed: true
});
});
});
describe("with a two-digit date pattern", () => {
const parser = require("../lib/fileNameParser")({
file: {
dir: "/path/to/file",
base: "thing.log",
ext: ".log",
name: "thing"
},
pattern: "mm"
});
it("should take a filename and return the date", () => {
const expectedTimestamp = new Date(0, 0);
expectedTimestamp.setMinutes(34);
parser("thing.log.34").should.eql({
filename: "thing.log.34",
date: "34",
isCompressed: false,
index: 0,
timestamp: expectedTimestamp.getTime()
});
});
})
describe("with a four-digit date pattern", () => {
const parser = require("../lib/fileNameParser")({
file: {
dir: "/path/to/file",
base: "stuff.log",
ext: ".log",
name: "stuff"
},
pattern: "mm-ss"
});
it("should return null for files that do not match", () => {
should(parser("stuff.log.2020-04-18")).not.be.ok();
should(parser("09-18")).not.be.ok();
});
it("should take a filename and return the date", () => {
const expectedTimestamp = new Date(0, 0);
expectedTimestamp.setMinutes(34);
expectedTimestamp.setSeconds(59);
parser("stuff.log.34-59").should.eql({
filename: "stuff.log.34-59",
date: "34-59",
isCompressed: false,
index: 0,
timestamp: expectedTimestamp.getTime()
});
});
it("should take a filename and return both date and index", () => {
const expectedTimestamp_1 = new Date(0, 0);
expectedTimestamp_1.setMinutes(7);
expectedTimestamp_1.setSeconds(17);
parser("stuff.log.07-17.2").should.eql({
filename: "stuff.log.07-17.2",
index: 2,
date: "07-17",
timestamp: expectedTimestamp_1.getTime(),
isCompressed: false
});
const expectedTimestamp_2 = new Date(0, 0);
expectedTimestamp_2.setMinutes(17);
expectedTimestamp_2.setSeconds(30);
parser("stuff.log.17-30.3.gz").should.eql({
filename: "stuff.log.17-30.3.gz",
index: 3,
date: "17-30",
timestamp: expectedTimestamp_2.getTime(),
isCompressed: true
});
});
})
});