bibliogram/test/structuretext.js

123 lines
2.6 KiB
JavaScript

const tap = require("tap")
const {structure, partsHashtag, partsUsername} = require("../src/lib/utils/structuretext.js")
// lone test hashtag
tap.same(
partsHashtag([
{type: "user", text: "@person"},
{type: "text", text: " #epic"}
]),
[
{type: "user", text: "@person"},
{type: "text", text: " "},
{type: "hashtag", text: "#epic", hashtag: "epic"},
{type: "text", text: ""}
]
)
// lone test username
tap.same(
partsUsername([
{type: "hashtag", text: "#drawing", hashtag: "drawing"},
{type: "text", text: " with @person"}
]),
[
{type: "hashtag", text: "#drawing", hashtag: "drawing"},
{type: "text", text: " with "},
{type: "user", text: "@person", user: "person"},
{type: "text", text: ""}
]
)
// plain text
tap.same(
structure("hello world"),
[
{type: "text", text: "hello world"}
]
)
// username
tap.same(
structure("hello @person world"),
[
{type: "text", text: "hello "},
{type: "user", text: "@person", user: "person"},
{type: "text", text: " world"}
]
)
// username at start
tap.same(
structure("@person hello"),
[
{type: "text", text: ""},
{type: "user", text: "@person", user: "person"},
{type: "text", text: " hello"}
]
)
// username at end
tap.same(
structure("hello @person"),
[
{type: "text", text: "hello "},
{type: "user", text: "@person", user: "person"},
{type: "text", text: ""},
]
)
// multiple usernames
tap.same(
structure("hello @person1 @person2"),
[
{type: "text", text: "hello "},
{type: "user", text: "@person1", user: "person1"},
{type: "text", text: " "},
{type: "user", text: "@person2", user: "person2"},
{type: "text", text: ""}
]
)
// hashtag
tap.same(
structure("what a #beautiful day"),
[
{type: "text", text: "what a "},
{type: "hashtag", text: "#beautiful", hashtag: "beautiful"},
{type: "text", text: " day"}
]
)
// mixed
tap.same(
structure("@person what a #beautiful #day in @city"),
[
{type: "text", text: ""},
{type: "user", text: "@person", user: "person"},
{type: "text", text: " what a "},
{type: "hashtag", text: "#beautiful", hashtag: "beautiful"},
{type: "text", text: " "},
{type: "hashtag", text: "#day", hashtag: "day"},
{type: "text", text: " in "},
{type: "user", text: "@city", user: "city"},
{type: "text", text: ""}
]
)
// special characters
tap.same(
structure("#goodmorning! @city.planner, #parks\nare awesome"),
[
{type: "text", text: ""},
{type: "hashtag", text: "#goodmorning", hashtag: "goodmorning"},
{type: "text", text: "! "},
{type: "user", text: "@city.planner", user: "city.planner"},
{type: "text", text: ", "},
{type: "hashtag", text: "#parks", hashtag: "parks"},
{type: "text", text: "\nare awesome"}
]
)