import {expect} from "chai"; import findChannels from "../../../../../client/js/helpers/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 responses", () => { 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 work with - in usermodes", () => { const input = "-#a some -text"; const expected = [ { channel: "#a", start: 1, end: 3, }, ]; 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); }); });