def it_can_iterate_over_parts_by_walking_rels_graph(self): # +----------+ +--------+ # | pkg_rels |-----> | part_1 | # +----------+ +--------+ # | | ^ # v v | # external +--------+ # | part_2 | # +--------+ part1, part2 = (Mock(name='part1'), Mock(name='part2')) part1.rels = { 1: Mock(name='rel1', is_external=False, target_part=part2) } part2.rels = { 1: Mock(name='rel2', is_external=False, target_part=part1) } pkg = OpcPackage() pkg._rels = { 1: Mock(name='rel3', is_external=False, target_part=part1), 2: Mock(name='rel4', is_external=True), } # verify ----------------------- assert part1 in pkg.iter_parts() assert part2 in pkg.iter_parts() assert len([p for p in pkg.iter_parts()]) == 2
def it_can_save_to_a_pkg_file(self, pkg_file_, PackageWriter_, parts, parts_): pkg = OpcPackage() pkg.save(pkg_file_) for part in parts_: part.before_marshal.assert_called_once_with() PackageWriter_.write.assert_called_once_with(pkg_file_, pkg._rels, parts_)
def it_can_find_the_next_available_vector_partname(self, next_partname_fixture, iter_parts_, PackURI_, packuri_): """A vector partname is one with a numeric suffix, like header42.xml.""" parts_, expected_value = next_partname_fixture iter_parts_.return_value = iter(parts_) PackURI_.return_value = packuri_ package = OpcPackage() partname = package.next_partname(template="/foo/bar/baz%d.xml") PackURI_.assert_called_once_with(expected_value) assert partname is packuri_
def it_can_provide_a_list_of_the_parts_it_contains(self): # mockery ---------------------- parts = [Mock(name='part1'), Mock(name='part2')] pkg = OpcPackage() # verify ----------------------- with patch.object(OpcPackage, 'iter_parts', return_value=parts): assert pkg.parts == [parts[0], parts[1]]
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
def it_can_construct_a_default_styles_part_to_help(self): package = OpcPackage() styles_part = StylesPart.default(package) assert isinstance(styles_part, StylesPart) assert styles_part.partname == '/word/styles.xml' assert styles_part.content_type == CT.WML_STYLES assert styles_part.package is package assert len(styles_part.element) == 6
def it_can_open_a_pkg_file(self, PackageReader_, PartFactory_, Unmarshaller_): # mockery ---------------------- pkg_file = Mock(name='pkg_file') pkg_reader = PackageReader_.from_file.return_value # exercise --------------------- pkg = OpcPackage.open(pkg_file) # verify ----------------------- PackageReader_.from_file.assert_called_once_with(pkg_file) Unmarshaller_.unmarshal.assert_called_once_with( pkg_reader, pkg, PartFactory_) assert isinstance(pkg, OpcPackage)
def it_creates_a_default_core_props_part_if_none_present( self, part_related_by_, CorePropertiesPart_, relate_to_, core_properties_part_): part_related_by_.side_effect = KeyError CorePropertiesPart_.default.return_value = core_properties_part_ opc_package = OpcPackage() core_properties_part = opc_package._core_properties_part CorePropertiesPart_.default.assert_called_once_with(opc_package) relate_to_.assert_called_once_with(opc_package, core_properties_part_, RT.CORE_PROPERTIES) assert core_properties_part is core_properties_part_
def it_initializes_its_rels_collection_on_first_reference( self, Relationships_): pkg = OpcPackage() rels = pkg.rels Relationships_.assert_called_once_with(PACKAGE_URI.baseURI) assert rels == Relationships_.return_value
def pkg_with_rels_(self, request, rels_): pkg = OpcPackage() pkg._rels = rels_ return pkg
def pkg(self, request): return OpcPackage()
def related_part_fixture_(self, request, rels_, reltype): related_part_ = instance_mock(request, Part, name='related_part_') rels_.part_with_reltype.return_value = related_part_ pkg = OpcPackage() pkg._rels = rels_ return pkg, reltype, related_part_
def core_props_part_fixture(self, part_related_by_, core_properties_part_): opc_package = OpcPackage() part_related_by_.return_value = core_properties_part_ return opc_package, core_properties_part_
def core_props_fixture(self, _core_properties_part_prop_, core_properties_part_, core_properties_): opc_package = OpcPackage() _core_properties_part_prop_.return_value = core_properties_part_ core_properties_part_.core_properties = core_properties_ return opc_package, core_properties_