8
8
9
9
import pytest
10
10
11
+ from docx .opc .constants import RELATIONSHIP_TYPE as RT
11
12
from docx .opc .coreprops import CoreProperties
12
13
from docx .opc .package import OpcPackage , Unmarshaller
13
14
from docx .opc .packuri import PACKAGE_URI
@@ -116,6 +117,26 @@ def it_provides_access_to_the_core_properties(self, core_props_fixture):
116
117
core_properties = opc_package .core_properties
117
118
assert core_properties is core_properties_
118
119
120
+ def it_provides_access_to_the_core_properties_part_to_help (
121
+ self , core_props_part_fixture ):
122
+ opc_package , core_properties_part_ = core_props_part_fixture
123
+ core_properties_part = opc_package ._core_properties_part
124
+ assert core_properties_part is core_properties_part_
125
+
126
+ def it_creates_a_default_core_props_part_if_none_present (
127
+ self , default_core_props_fixture ):
128
+ opc_package , CorePropertiesPart_ , core_properties_part_ = (
129
+ default_core_props_fixture
130
+ )
131
+
132
+ core_properties_part = opc_package ._core_properties_part
133
+
134
+ CorePropertiesPart_ .default .assert_called_once_with (opc_package )
135
+ opc_package .relate_to .assert_called_once_with (
136
+ core_properties_part_ , RT .CORE_PROPERTIES
137
+ )
138
+ assert core_properties_part is core_properties_part_
139
+
119
140
# fixtures ---------------------------------------------
120
141
121
142
@pytest .fixture
@@ -127,6 +148,22 @@ def core_props_fixture(
127
148
core_properties_part_ .core_properties = core_properties_
128
149
return opc_package , core_properties_
129
150
151
+ @pytest .fixture
152
+ def core_props_part_fixture (
153
+ self , part_related_by_ , core_properties_part_ ):
154
+ opc_package = OpcPackage ()
155
+ part_related_by_ .return_value = core_properties_part_
156
+ return opc_package , core_properties_part_
157
+
158
+ @pytest .fixture
159
+ def default_core_props_fixture (
160
+ self , part_related_by_ , CorePropertiesPart_ , relate_to_ ,
161
+ core_properties_part_ ):
162
+ opc_package = OpcPackage ()
163
+ part_related_by_ .side_effect = KeyError
164
+ CorePropertiesPart_ .default .return_value = core_properties_part_
165
+ return opc_package , CorePropertiesPart_ , core_properties_part_
166
+
130
167
@pytest .fixture
131
168
def relate_to_part_fixture_ (self , request , pkg , rels_ , reltype ):
132
169
rId = 'rId99'
@@ -146,6 +183,10 @@ def related_part_fixture_(self, request, rels_, reltype):
146
183
147
184
# fixture components -----------------------------------
148
185
186
+ @pytest .fixture
187
+ def CorePropertiesPart_ (self , request ):
188
+ return class_mock (request , 'docx.opc.package.CorePropertiesPart' )
189
+
149
190
@pytest .fixture
150
191
def core_properties_ (self , request ):
151
192
return instance_mock (request , CoreProperties )
@@ -170,6 +211,10 @@ def PackageWriter_(self, request):
170
211
def PartFactory_ (self , request ):
171
212
return class_mock (request , 'docx.opc.package.PartFactory' )
172
213
214
+ @pytest .fixture
215
+ def part_related_by_ (self , request ):
216
+ return method_mock (request , OpcPackage , 'part_related_by' )
217
+
173
218
@pytest .fixture
174
219
def parts (self , request , parts_ ):
175
220
"""
@@ -214,6 +259,10 @@ def rel_attrs_(self, request):
214
259
rId = 'rId99'
215
260
return reltype , target_ , rId
216
261
262
+ @pytest .fixture
263
+ def relate_to_ (self , request ):
264
+ return method_mock (request , OpcPackage , 'relate_to' )
265
+
217
266
@pytest .fixture
218
267
def rels_ (self , request ):
219
268
return instance_mock (request , Relationships )
0 commit comments