Files
docx-js/src/file/paragraph/links/hyperlink.spec.ts
2021-08-31 19:54:33 -06:00

131 lines
4.1 KiB
TypeScript

import { expect } from "chai";
import { Formatter } from "export/formatter";
import { TextRun } from "../run";
import { ConcreteHyperlink, ExternalHyperlink, InternalHyperlink } from "./hyperlink";
describe("ConcreteHyperlink", () => {
let hyperlink: ConcreteHyperlink;
beforeEach(() => {
hyperlink = new ConcreteHyperlink(
[
new TextRun({
text: "https://example.com",
style: "Hyperlink",
}),
],
"superid",
);
});
describe("#constructor()", () => {
it("should create a hyperlink with correct root key", () => {
const tree = new Formatter().format(hyperlink);
expect(tree).to.deep.equal({
"w:hyperlink": [
{
_attr: {
"w:history": 1,
"r:id": "rIdsuperid",
},
},
{
"w:r": [
{ "w:rPr": [{ "w:rStyle": { _attr: { "w:val": "Hyperlink" } } }] },
{ "w:t": [{ _attr: { "xml:space": "preserve" } }, "https://example.com"] },
],
},
],
});
});
describe("with optional anchor parameter", () => {
beforeEach(() => {
hyperlink = new ConcreteHyperlink(
[
new TextRun({
text: "Anchor Text",
style: "Hyperlink",
}),
],
"superid2",
"anchor",
);
});
it("should create an internal link with anchor tag", () => {
const tree = new Formatter().format(hyperlink);
expect(tree).to.deep.equal({
"w:hyperlink": [
{
_attr: {
"w:history": 1,
"w:anchor": "anchor",
},
},
{
"w:r": [
{ "w:rPr": [{ "w:rStyle": { _attr: { "w:val": "Hyperlink" } } }] },
{ "w:t": [{ _attr: { "xml:space": "preserve" } }, "Anchor Text"] },
],
},
],
});
});
});
});
});
describe("ExternalHyperlink", () => {
describe("#constructor()", () => {
it("should create", () => {
const externalHyperlink = new ExternalHyperlink({
children: [new TextRun("test")],
link: "http://www.google.com",
});
expect(externalHyperlink.options.link).to.equal("http://www.google.com");
});
});
});
describe("InternalHyperlink", () => {
describe("#constructor()", () => {
it("should create", () => {
const internalHyperlink = new InternalHyperlink({
children: [new TextRun("test")],
anchor: "test-id",
});
const tree = new Formatter().format(internalHyperlink);
expect(tree).to.deep.equal({
"w:hyperlink": [
{
_attr: {
"w:anchor": "test-id",
"w:history": 1,
},
},
{
"w:r": [
{
"w:t": [
{
_attr: {
"xml:space": "preserve",
},
},
"test",
],
},
],
},
],
});
});
});
});