defmodule Outlook.InternalTreeTest do use Outlook.DataCase # import Outlook.InternalTreeTestHelpers describe "internal_tree" do alias Outlook.InternalTree alias Outlook.InternalTree.{InternalNode,TranslationUnit} def tree() do [ %InternalNode{ name: "p", attributes: %{}, type: :element, nid: "rRIib2h8tyix", content: [ %TranslationUnit{status: :untranslated, nid: "GuU9v6xeSS7e", content: "Joe Biden a.", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "bzCLsYGNe2PG", content: "k.", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "GyRUrzwH9LcP", content: "a. ", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "y2yb38U4hkya", content: "Crash Test Dummy.", eph: %{}} ], eph: %{sibling_with: :block} } ] end test "unite_with_next unites with next in simple case" do assert InternalTree.modify_tunits(tree(), "unite_with_next", ["bzCLsYGNe2PG"]) == [ %InternalNode{ name: "p", attributes: %{}, type: :element, nid: "rRIib2h8tyix", content: [ %TranslationUnit{status: :untranslated, nid: "GuU9v6xeSS7e", content: "Joe Biden a.", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "bzCLsYGNe2PG", content: "k.a. ", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "y2yb38U4hkya", content: "Crash Test Dummy.", eph: %{}} ], eph: %{sibling_with: :block} } ] end test "unite_with_next unites all with next in complex case" do assert InternalTree.modify_tunits(tree(), "unite_with_next", ["GuU9v6xeSS7e","bzCLsYGNe2PG","GyRUrzwH9LcP"]) == [ %InternalNode{ name: "p", attributes: %{}, type: :element, nid: "rRIib2h8tyix", content: [ %TranslationUnit{ status: :untranslated, nid: "GuU9v6xeSS7e", content: "Joe Biden a.k.a. Crash Test Dummy.", eph: %{} } ], eph: %{sibling_with: :block} } ] end test "unite_with_next ignores id if there is no next tunit" do assert InternalTree.modify_tunits(tree(), "unite_with_next", ["y2yb38U4hkya"]) == [ %InternalNode{ name: "p", attributes: %{}, type: :element, nid: "rRIib2h8tyix", content: [ %TranslationUnit{status: :untranslated, nid: "GuU9v6xeSS7e", content: "Joe Biden a.", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "bzCLsYGNe2PG", content: "k.", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "GyRUrzwH9LcP", content: "a. ", eph: %{}}, %TranslationUnit{status: :untranslated, nid: "y2yb38U4hkya", content: "Crash Test Dummy.", eph: %{}} ], eph: %{sibling_with: :block} } ] end end end