88 absolute_import , division , print_function , unicode_literals
99)
1010
11+ from docx .enum .style import WD_STYLE_TYPE
1112from docx .enum .text import WD_ALIGN_PARAGRAPH
1213from docx .oxml .text .paragraph import CT_P
1314from docx .oxml .text .run import CT_R
15+ from docx .parts .document import DocumentPart
1416from docx .text .paragraph import Paragraph
1517from docx .text .run import Run
1618
1719import pytest
1820
1921from ..unitutil .cxml import element , xml
20- from ..unitutil .mock import call , class_mock , instance_mock , method_mock
22+ from ..unitutil .mock import (
23+ call , class_mock , instance_mock , method_mock , property_mock
24+ )
2125
2226
2327class DescribeParagraph (object ):
@@ -47,8 +51,12 @@ def it_can_change_its_alignment_value(self, alignment_set_fixture):
4751 assert paragraph ._p .xml == expected_xml
4852
4953 def it_knows_its_paragraph_style (self , style_get_fixture ):
50- paragraph , expected_style = style_get_fixture
51- assert paragraph .style == expected_style
54+ paragraph , style_id_ , style_ = style_get_fixture
55+ style = paragraph .style
56+ paragraph .part .get_style .assert_called_once_with (
57+ style_id_ , WD_STYLE_TYPE .PARAGRAPH
58+ )
59+ assert style is style_
5260
5361 def it_can_change_its_paragraph_style (self , style_set_fixture ):
5462 paragraph , value , expected_xml = style_set_fixture
@@ -175,15 +183,13 @@ def runs_fixture(self, p_, Run_, r_, r_2_, runs_):
175183 run_ , run_2_ = runs_
176184 return paragraph , Run_ , r_ , r_2_ , run_ , run_2_
177185
178- @pytest .fixture (params = [
179- ('w:p' , 'Normal' ),
180- ('w:p/w:pPr' , 'Normal' ),
181- ('w:p/w:pPr/w:pStyle{w:val=Heading1}' , 'Heading1' ),
182- ])
183- def style_get_fixture (self , request ):
184- p_cxml , expected_style = request .param
186+ @pytest .fixture
187+ def style_get_fixture (self , part_prop_ ):
188+ style_id = 'Foobar'
189+ p_cxml = 'w:p/w:pPr/w:pStyle{w:val=%s}' % style_id
185190 paragraph = Paragraph (element (p_cxml ), None )
186- return paragraph , expected_style
191+ style_ = part_prop_ .return_value .get_style .return_value
192+ return paragraph , style_id , style_
187193
188194 @pytest .fixture (params = [
189195 ('w:p' , 'Heading1' ,
@@ -233,6 +239,10 @@ def text_set_fixture(self):
233239 def add_run_ (self , request ):
234240 return method_mock (request , Paragraph , 'add_run' )
235241
242+ @pytest .fixture
243+ def document_part_ (self , request ):
244+ return instance_mock (request , DocumentPart )
245+
236246 @pytest .fixture
237247 def _insert_paragraph_before_ (self , request ):
238248 return method_mock (request , Paragraph , '_insert_paragraph_before' )
@@ -241,6 +251,12 @@ def _insert_paragraph_before_(self, request):
241251 def p_ (self , request , r_ , r_2_ ):
242252 return instance_mock (request , CT_P , r_lst = (r_ , r_2_ ))
243253
254+ @pytest .fixture
255+ def part_prop_ (self , request , document_part_ ):
256+ return property_mock (
257+ request , Paragraph , 'part' , return_value = document_part_
258+ )
259+
244260 @pytest .fixture
245261 def Run_ (self , request , runs_ ):
246262 run_ , run_2_ = runs_
0 commit comments