thelounge/test/client/js/libs/handlebars/ircmessageparser/findChannels.js
Jérémie Astori 03e3444a35 Explain the modules of the message parser and add tests
- Add comments and descriptions to:
  - `findChannels.js`
  - `parseStyle`
  - `findLinks`
  - `fill`
  - `anyIntersection`
  - `merge`
  - `parse`
- Minor optimizations to `parseStyle`
- Add tests for `fill`
2017-04-21 20:31:27 +03:00

124 lines
2.4 KiB
JavaScript

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