anki/ts/html-filter/index.test.ts

48 lines
1.6 KiB
TypeScript

// Copyright: Ankitects Pty Ltd and contributors
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import { filterHTML } from ".";
describe("filterHTML", () => {
test("zero input creates zero output", () => {
expect(filterHTML("", true, false)).toBe("");
expect(filterHTML("", true, false)).toBe("");
expect(filterHTML("", false, false)).toBe("");
});
test("internal filtering", () => {
// font-size is filtered, weight is not
expect(
filterHTML(
'<div style="font-weight: bold; font-size: 10px;"></div>',
true,
true,
),
).toBe('<div style="font-weight: bold;"></div>');
});
test("background color", () => {
// transparent is stripped, other colors are not
expect(
filterHTML(
'<span style="background-color: transparent;"></span>',
false,
true,
),
).toBe('<span style=""></span>');
expect(
filterHTML('<span style="background-color: blue;"></span>', false, true),
).toBe('<span style="background-color: blue;"></span>');
// except if extended mode is off
expect(
filterHTML('<span style="background-color: blue;">x</span>', false, false),
).toBe("x");
// no filtering on internal paste
expect(
filterHTML(
'<span style="background-color: transparent;"></span>',
true,
true,
),
).toBe('<span style="background-color: transparent;"></span>');
});
});