|
8 | 8 |
|
9 | 9 | from docx.enum.section import WD_ORIENT, WD_SECTION |
10 | 10 | from docx.parts.document import DocumentPart |
| 11 | +from docx.parts.hdrftr import HeaderPart |
11 | 12 | from docx.section import _Footer, _Header, Section, Sections |
12 | 13 | from docx.shared import Inches |
13 | 14 |
|
@@ -386,6 +387,19 @@ def it_can_change_whether_it_is_linked_to_previous_header( |
386 | 387 | assert _drop_header_part_.call_args_list == [call(header)] * drop_calls |
387 | 388 | assert _add_header_part_.call_args_list == [call(header)] * add_calls |
388 | 389 |
|
| 390 | + def it_can_add_a_header_part_to_help(self, document_part_, header_part_): |
| 391 | + sectPr = element("w:sectPr{r:a=b}") |
| 392 | + document_part_.add_header_part.return_value = header_part_, "rId3" |
| 393 | + header = _Header(sectPr, document_part_) |
| 394 | + |
| 395 | + header_part = header._add_header_part() |
| 396 | + |
| 397 | + document_part_.add_header_part.assert_called_once_with() |
| 398 | + assert sectPr.xml == xml( |
| 399 | + "w:sectPr{r:a=b}/w:headerReference{w:type=default,r:id=rId3}" |
| 400 | + ) |
| 401 | + assert header_part is header_part_ |
| 402 | + |
389 | 403 | def it_can_drop_the_related_header_part_to_help(self, document_part_): |
390 | 404 | sectPr = element("w:sectPr{r:a=b}/w:headerReference{w:type=default,r:id=rId42}") |
391 | 405 | header = _Header(sectPr, document_part_) |
@@ -449,3 +463,7 @@ def _drop_header_part_(self, request): |
449 | 463 | @pytest.fixture |
450 | 464 | def _has_header_part_prop_(self, request): |
451 | 465 | return property_mock(request, _Header, "_has_header_part") |
| 466 | + |
| 467 | + @pytest.fixture |
| 468 | + def header_part_(self, request): |
| 469 | + return instance_mock(request, HeaderPart) |
0 commit comments