1111from mock import Mock
1212
1313from 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
1517from docx .oxml .parts .document import CT_Body , CT_Document
1618from docx .oxml .shared import nsmap
1719from docx .oxml .text import CT_R
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