Files
phoenix-ausblick/test/outlook/internaltree_test.exs
2023-01-04 15:26:05 +01:00

135 lines
4.6 KiB
Elixir

defmodule Outlook.InternalTreeTest do
use Outlook.DataCase
import Outlook.InternalTreeTestHelpers
describe "internal_tree" do
alias Outlook.InternalTree
alias Outlook.InternalTree.{InternalNode,Html,Basic,TranslationUnit}
import Outlook.ArticlesFixtures
@default_uuid "11111111-1111-1111-1111-111111111111"
test "partition_text/1 returns correctly dingens..." do
tree = [
%InternalNode{
name: "p",
attributes: %{},
type: :element,
uuid: "8293da39-18e3-4695-8ec5-a3a4a06f006c",
content: [
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "1b62b02f-0be1-4ba1-88a1-0f08f5a5254d",
content: "A sentence with many letters ",
eph: %{sibling_with: :inline}
},
%InternalNode{
name: "a",
attributes: %{href: "dingsda.com"},
type: :element,
content: [
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "c6816bfe-a660-436b-84ab-64d92417e321",
content: "and many, many ",
eph: %{sibling_with: :inline}
},
%InternalNode{
name: "b",
attributes: %{},
type: :element,
content: [
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "abcd5893-d062-4716-9979-4bf1f65d5e17",
content: "words. A",
eph: %{sibling_with: :inline}
}
],
eph: %{sibling_with: :inline}
},
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "d67f41fe-678a-4e27-99da-00d38decde75",
content: " sentence",
eph: %{sibling_with: :inline}
}
],
eph: %{sibling_with: :inline}
},
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "6fc0bf77-4dc6-4828-866e-2933d393f4b9",
content: " with many letters and many, many words. ",
eph: %{sibling_with: :inline}
}
],
eph: %{sibling_with: :block}
}
]
assert InternalTree.partition_text(tree) |> unify_uuids_in_tunits() == [
%InternalNode{name: "p", attributes: %{}, type: :element, uuid: "8293da39-18e3-4695-8ec5-a3a4a06f006c",
content: [
%TranslationUnit{status: :untranslated, uuid: @default_uuid,
content: "A sentence with many letters <a href=\"dingsda.com\">and many, many <b>words. </b></a>"},
%TranslationUnit{status: :untranslated, uuid: @default_uuid,
content: "<a href=\"dingsda.com\"><b>A</b> sentence</a> with many letters and many, many words. "}],
eph: %{sibling_with: :block}}]
test "partition_text/1 doesn't split numbers and abbreviated names" do
tree = [
%InternalNode{
name: "p",
attributes: %{},
type: :element,
uuid: "0248aec7-c525-483d-a472-40a34488478d",
content: [
%InternalNode{
name: "",
attributes: %{},
type: :text,
uuid: "d35ac56f-bf10-47b1-af19-152e6225bb32",
content: "F. William Engdahl is 3.7 times more likely to write a good article than Mike Adams. But this doesn't mean anything bad about Mike.",
eph: %{sibling_with: :inline}
}
],
eph: %{sibling_with: :block}
}
]
assert InternalTree.partition_text(tree) |> unify_uuids_in_tunits() == [
%InternalNode{
name: "p",
attributes: %{},
type: :element,
uuid: "0248aec7-c525-483d-a472-40a34488478d",
content: [
%TranslationUnit{
status: :untranslated,
uuid: @default_uuid,
content: "F. William Engdahl is 3.7 times more likely to write a good article than Mike Adams. "
},
%TranslationUnit{
status: :untranslated,
uuid: @default_uuid,
content: "But this doesn't mean anything bad about Mike."
}
],
eph: %{sibling_with: :block}
}
]
end
end
end