Skip to content

Commit 64d6a55

Browse files
author
Steve Canny
committed
doc: add PartFactory call test for DocumentPart
1 parent 4382db7 commit 64d6a55

File tree

2 files changed

+61
-15
lines changed

2 files changed

+61
-15
lines changed

tests/opc/test_package.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -460,14 +460,6 @@ def CustomPartClass_(self, request, part_of_custom_type_):
460460
CustomPartClass_.load.return_value = part_of_custom_type_
461461
return CustomPartClass_
462462

463-
@pytest.fixture
464-
def part_of_custom_type_(self, request):
465-
return instance_mock(request, Part)
466-
467-
@pytest.fixture
468-
def part_of_default_type_(self, request):
469-
return instance_mock(request, Part)
470-
471463
@pytest.fixture
472464
def DefaultPartClass_(self, request, part_of_default_type_):
473465
DefaultPartClass_ = cls_attr_mock(
@@ -484,6 +476,14 @@ def package_(self, request):
484476
def package_2_(self, request):
485477
return instance_mock(request, OpcPackage)
486478

479+
@pytest.fixture
480+
def part_of_custom_type_(self, request):
481+
return instance_mock(request, Part)
482+
483+
@pytest.fixture
484+
def part_of_default_type_(self, request):
485+
return instance_mock(request, Part)
486+
487487
@pytest.fixture
488488
def partname_(self, request):
489489
return instance_mock(request, PackURI)

tests/parts/test_document.py

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
from mock import Mock
1212

1313
from docx.enum.shape import WD_INLINE_SHAPE
14-
from docx.opc.constants import RELATIONSHIP_TYPE as RT
14+
from docx.opc.constants import CONTENT_TYPE as CT, RELATIONSHIP_TYPE as RT
15+
from docx.opc.package import PartFactory
16+
from docx.opc.packuri import PackURI
1517
from docx.oxml.parts.document import CT_Body, CT_Document
1618
from docx.oxml.shared import nsmap
1719
from docx.oxml.text import CT_R
@@ -39,7 +41,23 @@
3941
)
4042

4143

42-
class Describe_Document(object):
44+
class DescribeDocumentPart(object):
45+
46+
def it_is_used_by_PartFactory_to_construct_main_document_part(
47+
self, part_load_fixture):
48+
# fixture ----------------------
49+
document_part_load_, partname_, blob_, package_, document_part_ = (
50+
part_load_fixture
51+
)
52+
content_type = CT.WML_DOCUMENT_MAIN
53+
reltype = RT.OFFICE_DOCUMENT
54+
# exercise ---------------------
55+
part = PartFactory(partname_, content_type, reltype, blob_, package_)
56+
# verify -----------------------
57+
document_part_load_.assert_called_once_with(
58+
partname_, content_type, blob_, package_
59+
)
60+
assert part is document_part_
4361

4462
def it_can_be_constructed_by_opc_part_factory(
4563
self, oxml_fromstring_, init):
@@ -99,6 +117,18 @@ def it_knows_the_next_available_xml_id(self, next_id_fixture):
99117

100118
# fixtures -------------------------------------------------------
101119

120+
@pytest.fixture
121+
def _Body_(self, request):
122+
return class_mock(request, 'docx.parts.document._Body')
123+
124+
@pytest.fixture
125+
def blob_(self, request):
126+
return instance_mock(request, str)
127+
128+
@pytest.fixture
129+
def content_type_(self, request):
130+
return instance_mock(request, str)
131+
102132
@pytest.fixture
103133
def document(self):
104134
return DocumentPart(None, None, None, None)
@@ -120,13 +150,18 @@ def document_body_fixture(self, request, _Body_):
120150
return document, _Body_, body_elm
121151

122152
@pytest.fixture
123-
def _Body_(self, request):
124-
return class_mock(request, 'docx.parts.document._Body')
153+
def document_part_(self, request):
154+
return instance_mock(request, DocumentPart)
155+
156+
@pytest.fixture
157+
def document_part_load_(self, request):
158+
return method_mock(request, DocumentPart, 'load')
125159

126160
@pytest.fixture
127161
def get_or_add_image_fixture(
128162
self, request, package_, image_descriptor_, image_parts_,
129163
relate_to_, image_part_, rId_):
164+
package_.image_parts = image_parts_
130165
document = DocumentPart(None, None, None, package_)
131166
return (
132167
document, image_descriptor_, image_parts_, relate_to_,
@@ -185,9 +220,20 @@ def oxml_fromstring_(self, request):
185220

186221
@pytest.fixture
187222
def package_(self, request, image_parts_):
188-
package_ = instance_mock(request, Package)
189-
package_.image_parts = image_parts_
190-
return package_
223+
return instance_mock(request, Package)
224+
225+
@pytest.fixture
226+
def part_load_fixture(
227+
self, document_part_load_, partname_, blob_, package_,
228+
document_part_):
229+
document_part_load_.return_value = document_part_
230+
return (
231+
document_part_load_, partname_, blob_, package_, document_part_
232+
)
233+
234+
@pytest.fixture
235+
def partname_(self, request):
236+
return instance_mock(request, PackURI)
191237

192238
@pytest.fixture
193239
def relate_to_(self, request, rId_):

0 commit comments

Comments
 (0)