Skip to content

Commit 5e60b97

Browse files
committed
hdr: add DocumentPart.header_part()
1 parent c55f4ed commit 5e60b97

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

docx/parts/document.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def get_style_id(self, style_or_name, style_type):
8484

8585
def header_part(self, rId):
8686
"""Return |HeaderPart| related by *rId*."""
87-
raise NotImplementedError
87+
return self.related_parts[rId]
8888

8989
@lazyproperty
9090
def inline_shapes(self):

tests/parts/test_document.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,18 @@ def it_can_drop_a_specified_header_part(self, drop_rel_):
4848

4949
drop_rel_.assert_called_once_with(document_part, "rId42")
5050

51+
def it_provides_access_to_a_header_part_by_rId(
52+
self, related_parts_prop_, related_parts_, header_part_
53+
):
54+
related_parts_prop_.return_value = related_parts_
55+
related_parts_.__getitem__.return_value = header_part_
56+
document_part = DocumentPart(None, None, None, None)
57+
58+
header_part = document_part.header_part("rId11")
59+
60+
related_parts_.__getitem__.assert_called_once_with("rId11")
61+
assert header_part is header_part_
62+
5163
def it_can_save_the_package_to_a_file(self, save_fixture):
5264
document, file_ = save_fixture
5365
document.save(file_)
@@ -336,6 +348,14 @@ def part_related_by_(self, request):
336348
def relate_to_(self, request):
337349
return method_mock(request, DocumentPart, 'relate_to')
338350

351+
@pytest.fixture
352+
def related_parts_(self, request):
353+
return instance_mock(request, dict)
354+
355+
@pytest.fixture
356+
def related_parts_prop_(self, request):
357+
return property_mock(request, DocumentPart, 'related_parts')
358+
339359
@pytest.fixture
340360
def SettingsPart_(self, request):
341361
return class_mock(request, 'docx.parts.document.SettingsPart')

0 commit comments

Comments
 (0)