def test_documents_to_delete_raises_error_if_SPS_Package_error(
         self, MockLogger, MockXML, MockSPS_Package):
     MockSPS_Package.side_effect = TypeError("XML error")
     MockZipFile = MagicMock()
     with self.assertRaises(DocumentToDeleteException) as exc_info:
         document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     self.assertEqual(str(exc_info.exception), "XML error")
 def test_document_to_delete_creates_etree_parser(self, mk_etree,
                                                  MockSPS_Package):
     MockSPS_Package.return_value.is_document_deletion = False
     MockZipFile = MagicMock()
     MockZipFile.read.return_value = XML_FILE_CONTENT
     document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     mk_etree.XMLParser.assert_called_once_with(remove_blank_text=True,
                                                no_network=True)
示例#3
0
 def test_document_to_delete_creates_etree_xml(self, mk_etree, MockSPS_Package):
     MockParser = Mock()
     mk_etree.XMLParser.return_value = MockParser
     MockSPS_Package.return_value.is_document_deletion = False
     MockZipFile = MagicMock()
     MockZipFile.read.return_value = XML_FILE_CONTENT
     document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     mk_etree.XML.assert_called_once_with(XML_FILE_CONTENT, MockParser)
示例#4
0
 def test_document_to_delete_raises_error_if_read_from_zip_error(
     self, MockXML, MockSPS_Package
 ):
     MockZipFile = MagicMock()
     MockZipFile.read.side_effect = KeyError("File not found in the archive")
     with self.assertRaises(DocumentToDeleteException) as exc_info:
         document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     self.assertEqual(str(exc_info.exception), "'File not found in the archive'")
 def test_document_to_delete_creates_SPS_Package_instance(
         self, mk_etree, MockSPS_Package):
     MockXML = Mock()
     mk_etree.XML.return_value = MockXML
     MockSPS_Package.return_value.is_document_deletion = False
     MockZipFile = MagicMock()
     document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     MockSPS_Package.assert_called_once_with(MockXML,
                                             "1806-907X-rba-53-01-1-8.xml")
 def test_documents_to_delete_raises_error_if_no_scielo_id_in_xml(self):
     article_id = etree.Element("article-id")
     article_id.set("specific-use", "delete")
     xml_file = etree.XML(XML_FILE_CONTENT)
     am_tag = xml_file.find(".//article-meta")
     am_tag.append(article_id)
     scielo_id_tag = xml_file.find(".//article-id[@specific-use='scielo']")
     am_tag.remove(scielo_id_tag)
     deleted_xml_file = etree.tostring(xml_file)
     MockZipFile = MagicMock()
     MockZipFile.read.return_value = deleted_xml_file
     with self.assertRaises(DocumentToDeleteException) as exc_info:
         document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     self.assertEqual(str(exc_info.exception), "Missing element in XML")
 def test_documents_to_delete_returns_documents_id_to_delete_and_xmls_to_delete(
         self):
     article_id = etree.Element("article-id")
     article_id.set("specific-use", "delete")
     xml_file = etree.XML(XML_FILE_CONTENT)
     am_tag = xml_file.find(".//article-meta")
     am_tag.append(article_id)
     deleted_xml_file = etree.tostring(xml_file)
     MockZipFile = MagicMock()
     MockZipFile.read.return_value = deleted_xml_file
     result = document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     self.assertEqual(
         result, "FX6F3cbyYmmwvtGmMB7WCgr")  # SciELO ID de XML_FILE_CONTENT
def delete_documents(sps_package, xmls_filenames):
    """
    Deleta documentos informados do Kernel

    dict sps_packages_xmls: dict com os paths dos pacotes SPS e os respectivos nomes dos
        arquivos XML.
    """
    Logger.debug("delete_documents IN")
    Logger.info("Reading sps_package: %s" % sps_package)
    xmls_to_delete = []
    with ZipFile(sps_package) as zipfile:
        for i, sps_xml_file in enumerate(xmls_filenames, 1):
            Logger.info(
                'Reading XML file "%s" from ZIP file "%s" [%s/%s]',
                sps_xml_file,
                sps_package,
                i,
                len(xmls_filenames),
            )
            try:
                doc_to_delete = document_to_delete(zipfile, sps_xml_file)
            except DocumentToDeleteException as exc:
                Logger.info('Could not delete document "%s": %s', sps_xml_file,
                            str(exc))
            else:
                if doc_to_delete:
                    xmls_to_delete.append(sps_xml_file)
                    try:
                        delete_doc_from_kernel(doc_to_delete)
                    except DeleteDocFromKernelException as exc:
                        Logger.info(
                            'Could not delete "%s" (scielo_id: "%s") from kernel: %s',
                            sps_xml_file, doc_to_delete, str(exc))
                    else:
                        Logger.info(
                            'Document "%s" (scielo_id: "%s") deleted from kernel',
                            sps_xml_file, doc_to_delete)
    Logger.debug("delete_documents OUT")
    return list(set(xmls_filenames) - set(xmls_to_delete))
 def test_document_to_delete_reads_xml_from_zip(self, mk_etree,
                                                MockSPS_Package):
     MockSPS_Package.return_value.is_document_deletion = False
     MockZipFile = MagicMock()
     document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     MockZipFile.read.assert_any_call("1806-907X-rba-53-01-1-8.xml")
 def test_documents_to_delete_returns_none_if_xml_is_not_to_delete(self):
     MockZipFile = MagicMock()
     MockZipFile.read.return_value = XML_FILE_CONTENT
     result = document_to_delete(MockZipFile, "1806-907X-rba-53-01-1-8.xml")
     self.assertIsNone(result)