// Copyright: Ankitects Pty Ltd and contributors // License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html import { unsurround } from "./surround"; import { easyBold, p } from "./test-utils"; describe("unsurround text", () => { let body: HTMLBodyElement; beforeEach(() => { body = p("test"); }); test("normalizes nodes", () => { const range = new Range(); range.selectNode(body.firstChild!); unsurround(range, body, easyBold); expect(body).toHaveProperty("innerHTML", "test"); // expect(surroundedRange.toString()).toEqual("test"); }); }); // describe("unsurround element and text", () => { // let body: HTMLBodyElement; // beforeEach(() => { // body = p("beforeafter"); // }); // test("normalizes nodes", () => { // const range = new Range(); // range.setStartBefore(body.childNodes[0].firstChild!); // range.setEndAfter(body.childNodes[1]); // const surroundedRange = unsurround(range, body, easyBold); // expect(body).toHaveProperty("innerHTML", "beforeafter"); // expect(surroundedRange.toString()).toEqual("beforeafter"); // }); // }); describe("unsurround element with surrounding text", () => { let body: HTMLBodyElement; beforeEach(() => { body = p("112233"); }); test("normalizes nodes", () => { const range = new Range(); range.selectNode(body.firstElementChild!); unsurround(range, body, easyBold); expect(body).toHaveProperty("innerHTML", "112233"); // expect(surroundedRange.toString()).toEqual("22"); }); }); // describe("unsurround from one element to another", () => { // let body: HTMLBodyElement; // beforeEach(() => { // body = p("111222333"); // }); // test("unsurround whole", () => { // const range = new Range(); // range.setStartBefore(body.children[0].firstChild!); // range.setEndAfter(body.children[1].firstChild!); // unsurround(range, body, easyBold); // expect(body).toHaveProperty("innerHTML", "111222333"); // // expect(surroundedRange.toString()).toEqual("22"); // }); // }); // describe("unsurround text portion of element", () => { // let body: HTMLBodyElement; // beforeEach(() => { // body = p("112233"); // }); // test("normalizes nodes", () => { // const range = new Range(); // range.setStart(body.firstChild!, 2); // range.setEnd(body.firstChild!, 4); // const { addedNodes, removedNodes } = unsurround( // range, // document.createElement("b"), // body, // ); // expect(addedNodes).toHaveLength(2); // expect(removedNodes).toHaveLength(1); // expect(body).toHaveProperty("innerHTML", "112233"); // // expect(surroundedRange.toString()).toEqual("22"); // }); // }); describe("with bold around block item", () => { let body: HTMLBodyElement; beforeEach(() => { body = p("111
"); }); test("unsurround list item", () => { const range = new Range(); range.selectNodeContents( body.firstChild!.childNodes[2].firstChild!.firstChild!, ); unsurround(range, body, easyBold); expect(body).toHaveProperty("innerHTML", "111
"); // expect(surroundedRange.toString()).toEqual("222"); }); }); describe("with two double nested and one single nested", () => { // test("unsurround one double and single nested", () => { // const body = p("aaabbbccc"); // const range = new Range(); // range.setStartBefore(body.firstChild!.childNodes[1].firstChild!); // range.setEndAfter(body.firstChild!.childNodes[2]); // const surroundedRange = unsurround( // range, // body, // easyBold, // ); // expect(body).toHaveProperty("innerHTML", "aaabbbccc"); // expect(surroundedRange.toString()).toEqual("bbbccc"); // }); test("unsurround single and one double nested", () => { const body = p("aaabbbccc"); const range = new Range(); range.setStartBefore(body.firstChild!.firstChild!); range.setEndAfter(body.firstChild!.childNodes[1].firstChild!); const surroundedRange = unsurround(range, body, easyBold); expect(body).toHaveProperty("innerHTML", "aaabbbccc"); expect(surroundedRange.toString()).toEqual("aaabbb"); }); });