|
16 | 16 | from docx.package import Package |
17 | 17 | from docx.parts.document import DocumentPart, InlineShapes |
18 | 18 | from docx.parts.numbering import NumberingPart |
| 19 | +from docx.parts.styles import StylesPart |
19 | 20 | from docx.table import Table |
20 | 21 | from docx.text import Paragraph, Run |
21 | 22 |
|
@@ -142,6 +143,24 @@ def it_creates_numbering_part_on_first_access_if_not_present( |
142 | 143 | ) |
143 | 144 | assert numbering_part is numbering_part_ |
144 | 145 |
|
| 146 | + def it_provides_access_to_the_styles_part(self, styles_part_get_fixture): |
| 147 | + document, document_part_, styles_part_ = styles_part_get_fixture |
| 148 | + styles_part = document.styles_part |
| 149 | + document_part_.part_related_by.assert_called_once_with(RT.STYLES) |
| 150 | + assert styles_part is styles_part_ |
| 151 | + |
| 152 | + def it_creates_styles_part_on_first_access_if_not_present( |
| 153 | + self, styles_part_create_fixture): |
| 154 | + document, StylesPart_, document_part_, styles_part_ = ( |
| 155 | + styles_part_create_fixture |
| 156 | + ) |
| 157 | + styles_part = document.styles_part |
| 158 | + StylesPart_.new.assert_called_once_with() |
| 159 | + document_part_.relate_to.assert_called_once_with( |
| 160 | + styles_part_, RT.STYLES |
| 161 | + ) |
| 162 | + assert styles_part is styles_part_ |
| 163 | + |
145 | 164 | # fixtures ------------------------------------------------------- |
146 | 165 |
|
147 | 166 | @pytest.fixture(params=[0, 1, 2, 5, 9]) |
@@ -307,6 +326,27 @@ def save_fixture(self, request, open_, package_): |
307 | 326 | document = Document() |
308 | 327 | return document, package_, file_ |
309 | 328 |
|
| 329 | + @pytest.fixture |
| 330 | + def StylesPart_(self, request, styles_part_): |
| 331 | + StylesPart_ = class_mock(request, 'docx.api.StylesPart') |
| 332 | + StylesPart_.new.return_value = styles_part_ |
| 333 | + return StylesPart_ |
| 334 | + |
| 335 | + @pytest.fixture |
| 336 | + def styles_part_(self, request): |
| 337 | + return instance_mock(request, StylesPart) |
| 338 | + |
| 339 | + @pytest.fixture |
| 340 | + def styles_part_create_fixture( |
| 341 | + self, document, StylesPart_, document_part_, styles_part_): |
| 342 | + document_part_.part_related_by.side_effect = KeyError |
| 343 | + return document, StylesPart_, document_part_, styles_part_ |
| 344 | + |
| 345 | + @pytest.fixture |
| 346 | + def styles_part_get_fixture(self, document, document_part_, styles_part_): |
| 347 | + document_part_.part_related_by.return_value = styles_part_ |
| 348 | + return document, document_part_, styles_part_ |
| 349 | + |
310 | 350 | @pytest.fixture |
311 | 351 | def table_(self, request): |
312 | 352 | return instance_mock(request, Table, style=None) |
|
0 commit comments