2017-03-18 08:18:47 +00:00
|
|
|
"use strict";
|
|
|
|
|
|
|
|
const expect = require("chai").expect;
|
2017-04-04 04:36:03 +00:00
|
|
|
const findChannels = require("../../../../../../client/js/libs/handlebars/ircmessageparser/findChannels");
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
describe("findChannels", () => {
|
|
|
|
it("should find single letter channel", () => {
|
|
|
|
const input = "#a";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#a",
|
|
|
|
start: 0,
|
|
|
|
end: 2
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should find utf8 channels", () => {
|
|
|
|
const input = "#äöü";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#äöü",
|
|
|
|
start: 0,
|
|
|
|
end: 4
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should find inline channel", () => {
|
|
|
|
const input = "inline #channel text";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#channel",
|
|
|
|
start: 7,
|
|
|
|
end: 15
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should stop at \\0x07", () => {
|
|
|
|
const input = "#chan\x07nel";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#chan",
|
|
|
|
start: 0,
|
|
|
|
end: 5
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should allow classics pranks", () => {
|
|
|
|
const input = "#1,000";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#1,000",
|
|
|
|
start: 0,
|
|
|
|
end: 6
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should work with whois reponses", () => {
|
|
|
|
const input = "@#a";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#a",
|
|
|
|
start: 1,
|
|
|
|
end: 3
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should work with IRCv3.1 multi-prefix", () => {
|
|
|
|
const input = "!@%+#a";
|
|
|
|
const expected = [{
|
|
|
|
channel: "#a",
|
|
|
|
start: 4,
|
|
|
|
end: 6
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["!", "@", "%", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should work with custom channelPrefixes", () => {
|
|
|
|
const input = "@a";
|
|
|
|
const expected = [{
|
|
|
|
channel: "@a",
|
|
|
|
start: 0,
|
|
|
|
end: 2
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["@"], ["#", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("should handle multiple channelPrefix correctly", () => {
|
|
|
|
const input = "##test";
|
|
|
|
const expected = [{
|
|
|
|
channel: "##test",
|
|
|
|
start: 0,
|
|
|
|
end: 6
|
|
|
|
}];
|
|
|
|
|
2017-04-04 04:36:03 +00:00
|
|
|
const actual = findChannels(input, ["#"], ["@", "+"]);
|
2017-03-18 08:18:47 +00:00
|
|
|
|
|
|
|
expect(actual).to.deep.equal(expected);
|
|
|
|
});
|
|
|
|
});
|