def test_register_update_documents_opens_zip(
     self,
     MockZipFile,
     MockLogger,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     register_update_documents(**self.kwargs)
     MockZipFile.assert_called_once_with(self.kwargs["sps_package"])
 def test_register_update_documents_puts_each_doc_in_object_store(
     self,
     MockZipFile,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     mk_put_xml_into_object_store.side_effect = self.xmls_data
     register_update_documents(**self.kwargs)
     for xml_data in self.xmls_data:
         with self.subTest(xml_data=xml_data):
             mk_put_assets_and_pdfs_in_object_store.assert_any_call(
                 MockZipFile.return_value.__enter__.return_value, xml_data)
 def test_register_update_documents_calls_put_xml_into_object_store(
     self,
     MockZipFile,
     MockLogger,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     register_update_documents(**self.kwargs)
     for xml_filename in self.kwargs["xmls_to_preserve"]:
         with self.subTest(xml_filename=xml_filename):
             mk_put_xml_into_object_store.assert_any_call(
                 MockZipFile.return_value.__enter__.return_value,
                 xml_filename)
Beispiel #4
0
def register_update_documents(dag_run, **kwargs):

    _xmls_to_preserve = kwargs["ti"].xcom_pull(key="xmls_to_preserve",
                                               task_ids="delete_docs_task_id")
    if not _xmls_to_preserve:
        return False

    _optimized_package = kwargs["ti"].xcom_pull(
        key="optimized_package", task_ids="optimize_package_task_id")

    package = _optimized_package or dag_run.conf.get("sps_package")
    _documents, executions = sync_documents_to_kernel_operations.register_update_documents(
        package, _xmls_to_preserve)

    for execution in executions:
        execution["dag_run"] = kwargs.get("run_id")
        execution["pre_sync_dag_run"] = dag_run.conf.get("pre_syn_dag_run_id")
        execution["package_name"] = os.path.basename(_optimized_package)
        add_execution_in_database(table="xml_documents", data=execution)

    if _documents:
        kwargs["ti"].xcom_push(key="documents", value=_documents)
        return True
    else:
        return False
Beispiel #5
0
def register_update_documents(dag_run, **kwargs):
    _sps_package = dag_run.conf.get("sps_package")
    _xmls_to_preserve = kwargs["ti"].xcom_pull(key="xmls_to_preserve",
                                               task_ids="delete_docs_task_id")
    if _xmls_to_preserve:
        _documents = sync_documents_to_kernel_operations.register_update_documents(
            _sps_package, _xmls_to_preserve)
        if _documents:
            kwargs["ti"].xcom_push(key="documents", value=_documents)
 def test_register_update_documents_logs_error_if_put_xml_into_object_store_return_pidv3exception(
     self,
     MockZipFile,
     MockLogger,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     MockZipFile.return_value.__enter__.return_value.read.return_value = b""
     mk_put_xml_into_object_store.side_effect = [
         {},
         Pidv3Exception("Could not get scielo id v3"),
         {},
     ]
     register_update_documents(**self.kwargs)
     MockLogger.error.assert_any_call(
         'Could not put document "%s" in object store: %s',
         self.kwargs["xmls_to_preserve"][1],
         "Could not get scielo id v3",
     )
 def test_register_update_documents_logs_error_if_put_xml_into_object_store_error(
     self,
     MockZipFile,
     MockLogger,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     MockZipFile.return_value.__enter__.return_value.read.return_value = b""
     mk_put_xml_into_object_store.side_effect = [
         {},
         PutXMLInObjectStoreException("Put Doc in Object Store Error"),
         {},
     ]
     register_update_documents(**self.kwargs)
     MockLogger.info.assert_any_call(
         'Could not put document "%s" in object store: %s',
         self.kwargs["xmls_to_preserve"][1],
         "Put Doc in Object Store Error",
     )
    def test_register_update_documents_call_register_update_doc_into_kernel_raise_error(
        self,
        MockZipFile,
        MockLogger,
        mk_put_xml_into_object_store,
        mk_put_assets_and_pdfs_in_object_store,
        mk_register_update_doc_into_kernel,
    ):
        mk_put_assets_and_pdfs_in_object_store.side_effect = self.xmls_data
        mk_register_update_doc_into_kernel.side_effect = [
            None,
            RegisterUpdateDocIntoKernelException(
                "Register Doc in Kernel Error"),
            None,
        ]

        register_update_documents(**self.kwargs)
        MockLogger.error.assert_any_call(
            'Could not register or update document "%s" in Kernel: %s',
            self.kwargs["xmls_to_preserve"][1],
            "Register Doc in Kernel Error",
        )
 def test_register_update_documents_call_register_update_doc_into_kernel(
     self,
     MockZipFile,
     mk_put_xml_into_object_store,
     mk_put_assets_and_pdfs_in_object_store,
     mk_register_update_doc_into_kernel,
 ):
     expected = copy.deepcopy(self.xmls_data)
     mk_put_xml_into_object_store.side_effect = self.xmls_data
     mk_assets_and_pdfs = {
         "assets": [{
             "asset_id": "test"
         }],
         "pdfs": [{
             "filename": "test"
         }],
     }
     mk_put_assets_and_pdfs_in_object_store.return_value = mk_assets_and_pdfs
     register_update_documents(**self.kwargs)
     for xml_data in expected:
         xml_data.update(mk_assets_and_pdfs)
         with self.subTest(xml_data=xml_data):
             mk_register_update_doc_into_kernel.assert_any_call(xml_data)
    def test_register_update_documents_returns_syncronized_documents_metadata_list(
        self,
        MockZipFile,
        mk_put_xml_into_object_store,
        mk_put_assets_and_pdfs_in_object_store,
        mk_register_update_doc_into_kernel,
    ):
        expected = [self.xmls_data[0], self.xmls_data[2]]
        mk_put_xml_into_object_store.side_effect = self.xmls_data
        mk_register_update_doc_into_kernel.side_effect = [
            None,
            RegisterUpdateDocIntoKernelException(
                "Register Doc in Kernel Error"),
            None,
        ]

        result, _ = register_update_documents(**self.kwargs)
        self.assertEqual(result, expected)