|
9 | 9 | import pytest |
10 | 10 |
|
11 | 11 | from docx.enum.section import WD_ORIENT, WD_SECTION |
| 12 | +from docx.header import Header |
12 | 13 | from docx.section import Section, Sections |
13 | 14 | from docx.shared import Inches |
14 | 15 |
|
15 | 16 | from .unitutil.cxml import element, xml |
| 17 | +from .unitutil.mock import class_mock, instance_mock |
16 | 18 |
|
17 | 19 |
|
18 | 20 | class DescribeSections(object): |
@@ -109,8 +111,20 @@ def it_can_change_its_page_margins(self, margins_set_fixture): |
109 | 111 | setattr(section, margin_prop_name, new_value) |
110 | 112 | assert section._sectPr.xml == expected_xml |
111 | 113 |
|
| 114 | + def it_provides_access_to_its_header(self, header_fixture): |
| 115 | + section, Header_, sectPr, header_ = header_fixture |
| 116 | + header = section.header |
| 117 | + Header_.assert_called_once_with(sectPr) |
| 118 | + assert header is header_ |
| 119 | + |
112 | 120 | # fixtures ------------------------------------------------------- |
113 | 121 |
|
| 122 | + @pytest.fixture |
| 123 | + def header_fixture(self, Header_, header_): |
| 124 | + sectPr = element('w:sectPr') |
| 125 | + section = Section(sectPr) |
| 126 | + return section, Header_, sectPr, header_ |
| 127 | + |
114 | 128 | @pytest.fixture(params=[ |
115 | 129 | ('w:sectPr/w:pgMar{w:left=120}', 'left_margin', 76200), |
116 | 130 | ('w:sectPr/w:pgMar{w:right=240}', 'right_margin', 152400), |
@@ -247,3 +261,15 @@ def start_type_set_fixture(self, request): |
247 | 261 | section = Section(element(initial_cxml)) |
248 | 262 | expected_xml = xml(expected_cxml) |
249 | 263 | return section, new_start_type, expected_xml |
| 264 | + |
| 265 | + # fixture components --------------------------------------------- |
| 266 | + |
| 267 | + @pytest.fixture |
| 268 | + def Header_(self, request, header_): |
| 269 | + return class_mock( |
| 270 | + request, 'docx.section.Header', return_value=header_ |
| 271 | + ) |
| 272 | + |
| 273 | + @pytest.fixture |
| 274 | + def header_(self, request): |
| 275 | + return instance_mock(request, Header) |
0 commit comments