@@ -105,6 +105,23 @@ def it_knows_the_next_available_xml_id(self, next_id_fixture):
105105 document , expected_id = next_id_fixture
106106 assert document .next_id == expected_id
107107
108+ def it_provides_access_to_its_styles_part_to_help (
109+ self , styles_part_get_fixture ):
110+ document_part , styles_part_ = styles_part_get_fixture
111+ styles_part = document_part ._styles_part
112+ document_part .part_related_by .assert_called_once_with (RT .STYLES )
113+ assert styles_part is styles_part_
114+
115+ def it_creates_default_styles_part_if_not_present_to_help (
116+ self , styles_part_create_fixture ):
117+ document_part , StylesPart_ , styles_part_ = styles_part_create_fixture
118+ styles_part = document_part ._styles_part
119+ StylesPart_ .default .assert_called_once_with (document_part .package )
120+ document_part .relate_to .assert_called_once_with (
121+ styles_part_ , RT .STYLES
122+ )
123+ assert styles_part is styles_part_
124+
108125 # fixtures -------------------------------------------------------
109126
110127 @pytest .fixture
@@ -181,6 +198,21 @@ def styles_fixture(self, _styles_part_prop_, styles_part_, styles_):
181198 styles_part_ .styles = styles_
182199 return document_part , styles_
183200
201+ @pytest .fixture
202+ def styles_part_create_fixture (
203+ self , package_ , part_related_by_ , StylesPart_ , styles_part_ ,
204+ relate_to_ ):
205+ document_part = DocumentPart (None , None , None , package_ )
206+ part_related_by_ .side_effect = KeyError
207+ StylesPart_ .default .return_value = styles_part_
208+ return document_part , StylesPart_ , styles_part_
209+
210+ @pytest .fixture
211+ def styles_part_get_fixture (self , part_related_by_ , styles_part_ ):
212+ document_part = DocumentPart (None , None , None , None )
213+ part_related_by_ .return_value = styles_part_
214+ return document_part , styles_part_
215+
184216 @pytest .fixture
185217 def tables_fixture (self , document_part_body_ , body_ , tables_ ):
186218 document_part = DocumentPart (None , None , None , None )
@@ -257,6 +289,10 @@ def package_(self, request):
257289 def paragraphs_ (self , request ):
258290 return instance_mock (request , list )
259291
292+ @pytest .fixture
293+ def part_related_by_ (self , request ):
294+ return method_mock (request , DocumentPart , 'part_related_by' )
295+
260296 @pytest .fixture
261297 def relate_to_ (self , request , rId_ ):
262298 relate_to_ = method_mock (request , DocumentPart , 'relate_to' )
@@ -293,6 +329,10 @@ def start_type_(self, request):
293329 def styles_ (self , request ):
294330 return instance_mock (request , Styles )
295331
332+ @pytest .fixture
333+ def StylesPart_ (self , request ):
334+ return class_mock (request , 'docx.parts.document.StylesPart' )
335+
296336 @pytest .fixture
297337 def styles_part_ (self , request ):
298338 return instance_mock (request , StylesPart )
0 commit comments