# frozen_string_literal: true require "test_helper" class FormattingTest < Minitest::Test include NotareTestHelpers def test_bold_text xml = create_doc_and_read_xml do |doc| doc.p do doc.b { doc.text "bold text" } end end assert_includes xml, "" assert_includes xml, "bold text" end def test_italic_text xml = create_doc_and_read_xml do |doc| doc.p do doc.i { doc.text "italic text" } end end assert_includes xml, "" assert_includes xml, "italic text" end def test_underline_text xml = create_doc_and_read_xml do |doc| doc.p do doc.u { doc.text "underlined text" } end end assert_includes xml, '' assert_includes xml, "underlined text" end def test_bold_and_italic_nested xml = create_doc_and_read_xml do |doc| doc.p do doc.b do doc.i { doc.text "bold and italic" } end end end assert_includes xml, "" assert_includes xml, "" assert_includes xml, "bold and italic" # Both should be in the same rPr element assert_match(%r{.*.*.*}m, xml) end def test_italic_and_bold_nested_reverse_order xml = create_doc_and_read_xml do |doc| doc.p do doc.i do doc.b { doc.text "italic and bold" } end end end assert_includes xml, "" assert_includes xml, "" end def test_all_three_formatting_options xml = create_doc_and_read_xml do |doc| doc.p do doc.b do doc.i do doc.u { doc.text "bold italic underline" } end end end end assert_includes xml, "" assert_includes xml, "" assert_includes xml, '' assert_includes xml, "bold italic underline" end def test_mixed_formatting_in_paragraph xml = create_doc_and_read_xml do |doc| doc.p do doc.text "Normal " doc.b { doc.text "bold" } doc.text " normal " doc.i { doc.text "italic" } doc.text " normal " doc.u { doc.text "underline" } doc.text " end" end end assert_includes xml, "Normal " assert_includes xml, "bold" assert_includes xml, "italic" assert_includes xml, "underline" assert_equal 7, xml.scan("").count end def test_formatting_does_not_leak_between_blocks xml = create_doc_and_read_xml do |doc| doc.p do doc.b { doc.text "bold" } doc.text "not bold" end end # Count rPr elements - should only be one (for the bold text) assert_equal 1, xml.scan("").count end def test_deeply_nested_formatting xml = create_doc_and_read_xml do |doc| doc.p do doc.b do doc.text "bold " doc.i do doc.text "bold+italic " doc.u { doc.text "all three" } end end end end assert_includes xml, "bold " assert_includes xml, "bold+italic " assert_includes xml, "all three" end end