1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
# encoding: utf-8
"""Unit test suite for the docx.parts.settings module"""
from __future__ import absolute_import, division, print_function, unicode_literals
import pytest
from docx.opc.constants import CONTENT_TYPE as CT
from docx.opc.package import OpcPackage
from docx.opc.part import PartFactory
from docx.package import Package
from docx.parts.settings import SettingsPart
from docx.settings import Settings
from ..unitutil.cxml import element
from ..unitutil.mock import class_mock, instance_mock, method_mock
class DescribeSettingsPart(object):
def it_is_used_by_loader_to_construct_settings_part(
self, load_, package_, settings_part_
):
partname, blob = 'partname', 'blob'
content_type = CT.WML_SETTINGS
load_.return_value = settings_part_
part = PartFactory(partname, content_type, None, blob, package_)
load_.assert_called_once_with(partname, content_type, blob, package_)
assert part is settings_part_
def it_provides_access_to_its_settings(self, settings_fixture):
settings_part, Settings_, settings_ = settings_fixture
settings = settings_part.settings
Settings_.assert_called_once_with(settings_part.element)
assert settings is settings_
def it_constructs_a_default_settings_part_to_help(self):
package = OpcPackage()
settings_part = SettingsPart.default(package)
assert isinstance(settings_part, SettingsPart)
assert settings_part.partname == '/word/settings.xml'
assert settings_part.content_type == CT.WML_SETTINGS
assert settings_part.package is package
assert len(settings_part.element) == 6
# fixtures -------------------------------------------------------
@pytest.fixture
def settings_fixture(self, Settings_, settings_):
settings_elm = element('w:settings')
settings_part = SettingsPart(None, None, settings_elm, None)
return settings_part, Settings_, settings_
# fixture components ---------------------------------------------
@pytest.fixture
def load_(self, request):
return method_mock(request, SettingsPart, 'load', autospec=False)
@pytest.fixture
def package_(self, request):
return instance_mock(request, Package)
@pytest.fixture
def Settings_(self, request, settings_):
return class_mock(
request, 'docx.parts.settings.Settings', return_value=settings_
)
@pytest.fixture
def settings_(self, request):
return instance_mock(request, Settings)
@pytest.fixture
def settings_part_(self, request):
return instance_mock(request, SettingsPart)
|