11
11
from docx .image .image import Image
12
12
from docx .opc .constants import RELATIONSHIP_TYPE as RT
13
13
from docx .opc .coreprops import CoreProperties
14
- from docx .package import ImageParts , Package
14
+ from docx .package import Package
15
15
from docx .parts .document import DocumentPart
16
16
from docx .parts .image import ImagePart
17
17
from docx .parts .numbering import NumberingPart
@@ -35,6 +35,16 @@ def it_can_save_the_package_to_a_file(self, save_fixture):
35
35
document .save (file_ )
36
36
document ._package .save .assert_called_once_with (file_ )
37
37
38
+ def it_can_get_or_add_an_image (self , get_image_fixture ):
39
+ document_part , path , image_part_ , rId_ , image_ = get_image_fixture
40
+
41
+ rId , image = document_part .get_or_add_image (path )
42
+
43
+ image_parts = document_part ._package .image_parts
44
+ image_parts .get_or_add_image_part .assert_called_once_with (path )
45
+ document_part .relate_to .assert_called_once_with (image_part_ , RT .IMAGE )
46
+ assert (rId , image ) == (rId_ , image_ )
47
+
38
48
def it_provides_access_to_the_document_styles (self , styles_fixture ):
39
49
document_part , styles_ = styles_fixture
40
50
styles = document_part .styles
@@ -67,18 +77,6 @@ def it_creates_numbering_part_if_not_present(self, nmprt_create_fixture):
67
77
)
68
78
assert numbering_part is numbering_part_
69
79
70
- def it_can_add_an_image_part_to_the_document (
71
- self , get_or_add_image_fixture ):
72
- (document , image_descriptor_ , image_parts_ , relate_to_ , image_part_ ,
73
- rId_ ) = get_or_add_image_fixture
74
- image_part , rId = document .get_or_add_image_part (image_descriptor_ )
75
- image_parts_ .get_or_add_image_part .assert_called_once_with (
76
- image_descriptor_
77
- )
78
- relate_to_ .assert_called_once_with (image_part_ , RT .IMAGE )
79
- assert image_part is image_part_
80
- assert rId == rId_
81
-
82
80
def it_knows_the_next_available_xml_id (self , next_id_fixture ):
83
81
document , expected_id = next_id_fixture
84
82
assert document .next_id == expected_id
@@ -137,6 +135,17 @@ def core_props_fixture(self, package_, core_properties_):
137
135
package_ .core_properties = core_properties_
138
136
return document_part , core_properties_
139
137
138
+ @pytest .fixture
139
+ def get_image_fixture (self , package_ , image_part_ , image_ , relate_to_ ):
140
+ document_part = DocumentPart (None , None , None , package_ )
141
+ path , rId_ = 'foobar.png' , 'rId42'
142
+
143
+ package_ .image_parts .get_or_add_image_part .return_value = image_part_
144
+ relate_to_ .return_value = rId_
145
+ image_part_ .image = image_
146
+
147
+ return document_part , path , image_part_ , rId_ , image_
148
+
140
149
@pytest .fixture
141
150
def get_style_fixture (self , styles_prop_ , style_ ):
142
151
document_part = DocumentPart (None , None , None , None )
@@ -236,17 +245,6 @@ def styles_part_get_fixture(self, part_related_by_, styles_part_):
236
245
def core_properties_ (self , request ):
237
246
return instance_mock (request , CoreProperties )
238
247
239
- @pytest .fixture
240
- def get_or_add_image_fixture (
241
- self , request , package_ , image_descriptor_ , image_parts_ ,
242
- relate_to_ , image_part_ , rId_ ):
243
- package_ .image_parts = image_parts_
244
- document = DocumentPart (None , None , None , package_ )
245
- return (
246
- document , image_descriptor_ , image_parts_ , relate_to_ ,
247
- image_part_ , rId_
248
- )
249
-
250
248
@pytest .fixture
251
249
def get_or_add_image_ (self , request ):
252
250
return method_mock (request , DocumentPart , 'get_or_add_image' )
@@ -255,20 +253,10 @@ def get_or_add_image_(self, request):
255
253
def image_ (self , request ):
256
254
return instance_mock (request , Image )
257
255
258
- @pytest .fixture
259
- def image_descriptor_ (self , request ):
260
- return instance_mock (request , str )
261
-
262
256
@pytest .fixture
263
257
def image_part_ (self , request ):
264
258
return instance_mock (request , ImagePart )
265
259
266
- @pytest .fixture
267
- def image_parts_ (self , request , image_part_ ):
268
- image_parts_ = instance_mock (request , ImageParts )
269
- image_parts_ .get_or_add_image_part .return_value = image_part_
270
- return image_parts_
271
-
272
260
@pytest .fixture
273
261
def InlineShapes_ (self , request ):
274
262
return class_mock (request , 'docx.parts.document.InlineShapes' )
@@ -298,14 +286,8 @@ def part_related_by_(self, request):
298
286
return method_mock (request , DocumentPart , 'part_related_by' )
299
287
300
288
@pytest .fixture
301
- def relate_to_ (self , request , rId_ ):
302
- relate_to_ = method_mock (request , DocumentPart , 'relate_to' )
303
- relate_to_ .return_value = rId_
304
- return relate_to_
305
-
306
- @pytest .fixture
307
- def rId_ (self , request ):
308
- return instance_mock (request , str )
289
+ def relate_to_ (self , request ):
290
+ return method_mock (request , DocumentPart , 'relate_to' )
309
291
310
292
@pytest .fixture
311
293
def style_ (self , request ):
0 commit comments