Exemple #1
0
    def complex_field_nested_within_a_hyperlink_complex_field_is_wrapped_with_the_hyperlink(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(' AUTHOR "John Doe"')
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("John Doe"),
            self._END_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("John Doe"),
            )),
            self._is_empty_hyperlinked_run,
            is_empty_run,
        )))
    def complex_field_nested_within_a_hyperlink_complex_field_is_wrapped_with_the_hyperlink(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(' AUTHOR "John Doe"')
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("John Doe"),
            self._END_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("John Doe"),
            )),
            self._is_empty_hyperlinked_run,
            is_empty_run,
        )))
Exemple #3
0
def sdt_is_read_using_sdt_content():
    element = xml_element("w:sdt", {}, [
        xml_element("w:sdtContent", {}, [
            xml_element("w:t", {}, [xml_text("Blackdown")]),
        ]),
    ])
    result = _read_and_get_document_xml_element(element)
    assert_equal(documents.text("Blackdown"), result)
 def sdt_is_read_using_sdt_content(self):
     element = xml_element("w:sdt", {}, [
         xml_element("w:sdtContent", {}, [
             xml_element("w:t", {}, [xml_text("Blackdown")]),
         ]),
     ])
     result = _read_and_get_document_xml_element(element)
     assert_equal(documents.text("Blackdown"), result)
Exemple #5
0
    def can_handle_split_instr_text_elements(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [xml_text(" HYPE")]),
            xml_element("w:instrText", {}, [
                xml_text('RLINK "{0}"'.format(self._URI)),
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(
            paragraph,
            is_paragraph(children=is_sequence(
                is_empty_run,
                self._is_empty_hyperlinked_run,
                self._is_hyperlinked_run(
                    children=is_sequence(is_text("this is a hyperlink"), )),
                is_empty_run,
            )))
    def can_handle_split_instr_text_elements(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(" HYPE")
            ]),
            xml_element("w:instrText", {}, [
                xml_text('RLINK "{0}"'.format(self._URI)),
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("this is a hyperlink"),
            )),
            is_empty_run,
        )))
Exemple #7
0
class ComplexFieldTests(object):
    _URI = "http://example.com"
    _BEGIN_COMPLEX_FIELD = xml_element("w:r", {}, [
        xml_element("w:fldChar", {"w:fldCharType": "begin"}),
    ])
    _SEPARATE_COMPLEX_FIELD = xml_element("w:r", {}, [
        xml_element("w:fldChar", {"w:fldCharType": "separate"}),
    ])
    _END_COMPLEX_FIELD = xml_element("w:r", {}, [
        xml_element("w:fldChar", {"w:fldCharType": "end"}),
    ])
    _HYPERLINK_INSTRTEXT = xml_element("w:instrText", {}, [
        xml_text(' HYPERLINK "{0}"'.format(_URI))
    ])

    def _is_hyperlinked_run(self, **kwargs):
        return is_run(children=is_sequence(
            is_hyperlink(
                href=self._URI,
                **kwargs
            ),
        ))

    @property
    def _is_empty_hyperlinked_run(self):
        return self._is_hyperlinked_run(children=[])

    @istest
    def runs_in_a_complex_field_for_hyperlinks_are_read_as_hyperlinks(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("this is a hyperlink"),
            )),
            is_empty_run,
        )))

    @istest
    def runs_after_a_complex_field_for_hyperlinks_are_not_read_as_hyperlinks(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
            _run_element_with_text("this will not be a hyperlink"),
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            is_empty_run,
            is_run(children=is_sequence(
                is_text("this will not be a hyperlink"),
            )),
        )))

    @istest
    def can_handle_split_instr_text_elements(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(" HYPE")
            ]),
            xml_element("w:instrText", {}, [
                xml_text('RLINK "{0}"'.format(self._URI)),
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("this is a hyperlink"),
            )),
            is_empty_run,
        )))

    @istest
    def hyperlink_is_not_ended_by_end_of_nested_complex_field(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(' AUTHOR "John Doe"')
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("this is a hyperlink"),
            )),
            is_empty_run,
        )))

    @istest
    def complex_field_nested_within_a_hyperlink_complex_field_is_wrapped_with_the_hyperlink(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._BEGIN_COMPLEX_FIELD,
            xml_element("w:instrText", {}, [
                xml_text(' AUTHOR "John Doe"')
            ]),
            self._SEPARATE_COMPLEX_FIELD,
            _run_element_with_text("John Doe"),
            self._END_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("John Doe"),
            )),
            self._is_empty_hyperlinked_run,
            is_empty_run,
        )))

    @istest
    def field_without_separate_fld_char_is_ignored(self):
        element = xml_element("w:p", {}, [
            self._BEGIN_COMPLEX_FIELD,
            self._HYPERLINK_INSTRTEXT,
            self._SEPARATE_COMPLEX_FIELD,
            self._BEGIN_COMPLEX_FIELD,
            self._END_COMPLEX_FIELD,
            _run_element_with_text("this is a hyperlink"),
            self._END_COMPLEX_FIELD,
        ])
        paragraph = _read_and_get_document_xml_element(element)

        assert_that(paragraph, is_paragraph(children=is_sequence(
            is_empty_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_empty_hyperlinked_run,
            self._is_hyperlinked_run(children=is_sequence(
                is_text("this is a hyperlink"),
            )),
            is_empty_run,
        )))
Exemple #8
0
def _text_element(value):
    return xml_element("w:t", {}, [xml_text(value)])
Exemple #9
0
def text_nodes_are_ignored_when_reading_children():
    element = xml_element("w:r", {}, [xml_text("[text]")])
    assert_equal(
        documents.run([]),
        _read_and_get_document_xml_element(element)
    )
 def text_nodes_are_ignored_when_reading_children(self):
     element = xml_element("w:r", {}, [xml_text("[text]")])
     assert_equal(
         documents.run([]),
         _read_and_get_document_xml_element(element)
     )
Exemple #11
0
def can_parse_text_element_before_new_tag():
    xml = _parse_xml_string(b"<body>Hello!<br/></body>")
    assert_equal(
        xml_element(
            "body", {},
            [xml_text("Hello!"), xml_element("br", {}, [])]), xml)
Exemple #12
0
def can_parse_text_element():
    xml = _parse_xml_string(b"<body>Hello!</body>")
    assert_equal(xml_element("body", {}, [xml_text("Hello!")]), xml)
 def ignores_text_nodes(self):
     xml = xml_element("a", {}, [xml_text("Hello!")])
     assert_equal(None, xml.find_child("b"))
def can_parse_text_element_before_new_tag():
    xml = _parse_xml_string(b"<body>Hello!<br/></body>")
    assert_equal(xml_element("body", {}, [xml_text("Hello!"), xml_element("br", {}, [])]), xml)
def can_parse_text_element():
    xml = _parse_xml_string(b"<body>Hello!</body>")
    assert_equal(xml_element("body", {}, [xml_text("Hello!")]), xml)
def _text_element(value):
    return xml_element("w:t", {}, [xml_text(value)])
Exemple #17
0
 def ignores_text_nodes(self):
     xml = xml_element("a", {}, [xml_text("Hello!")])
     assert_equal(None, xml.find_child("b"))