def test_get_documents_bundle_success(self): session_db = Session() bundle = DocumentsBundle(manifest=SAMPLE_ISSUES_KERNEL[0]) session_db.documents_bundles.add(bundle) result = inserting.get_documents_bundle(session_db, bundle.id(), True, "0987-0987") self.assertIsInstance(result, DocumentsBundle) self.assertEqual(result.id(), "0001-3714-1998-v29-n3")
def create_aop_bundle(session_db, issn): journal = session_db.journals.fetch(issn) bundle_id = scielo_ids_generator.aops_bundle_id(issn) bundle = DocumentsBundle( manifest=manifest.get_document_bundle_manifest(bundle_id, utcnow()) ) add_bundle(session_db, bundle) journal.ahead_of_print_bundle = bundle.id() update_journal(session_db, journal) return session_db.documents_bundles.fetch(bundle.id())
def link_documents_bundles_with_documents( documents_bundle: DocumentsBundle, documents: List[str], session: Session ): """Função responsável por atualizar o relacionamento entre documents bundles e documents no nível de banco de dados""" for document in documents: try: documents_bundle.add_document(document) except AlreadyExists: logger.info( "Document %s already exists in documents bundle %s" % (document, documents_bundle) ) update_bundle(session, documents_bundle)
def link_documents_bundles_with_documents(documents_bundle: DocumentsBundle, documents: List[str], session: Session): """Função responsável por atualizar o relacionamento entre documents bundles e documents no nível de banco de dados""" for document in documents: try: documents_bundle.add_document(document) except AlreadyExists: logger.info("Document %s already exists in documents bundle %s" % (document, documents_bundle)) session.documents_bundles.update(documents_bundle) session.changes.add({ "timestamp": utcnow(), "entity": "DocumentsBundle", "id": documents_bundle.id(), })
def import_issues(json_file: str, session: Session): """Fachada com passo a passo de processamento e carga de fascículo em formato JSON para a base Kernel""" issues_as_json = reading.read_json_file(json_file) issues_as_xylose = conversion.conversion_issues_to_xylose(issues_as_json) issues_as_xylose = filter_issues(issues_as_xylose) manifests = conversion.conversion_issues_to_kernel(issues_as_xylose) for manifest in manifests: issue = DocumentsBundle(manifest=manifest) try: add_bundle(session, issue) except AlreadyExists as exc: logger.info(exc)
def test_register_documents_in_documents_bundle_issn_with_spaces( self, mk_read_json_file, mk_open): documents = [ { "pid_v3": "JwqGdMDrdcV3Z7MFHgtKvVk", "acron": "aiss", "eissn": None, "issn": "0036-3634 ", "number": "4", "order": "00349", "pid": "S0021-25712009000400001", "pissn": "0036-3634", "supplement": None, "volume": "45", "year": "2009", }, ] journals = [SAMPLES_JOURNAL] mk_read_json_file.return_value = journals mock_file = MagicMock() mock_file.readlines.return_value = [ json.dumps(document) for document in documents ] mk_open.return_value.__enter__.return_value = mock_file mk_open.return_value.__exit__.return_value = Mock(return_value=False) session_db = Session() manifest = DocumentsBundle(SAMPLE_ISSUES_KERNEL[0]) session_db.documents_bundles.add(manifest) inserting.register_documents_in_documents_bundle( session_db, "/tmp/documents.json", "/tmp/journals.json") err_filename = os.path.join(config.get("ERRORS_PATH"), "insert_documents_in_bundle.err") self.assertEqual(os.path.isfile(err_filename), True) expected = ( '{"issue": "0036-3634-2009-v45-n4", ' '"items": [{"id": "JwqGdMDrdcV3Z7MFHgtKvVk", "order": "00349"}]}\n' ) with open(err_filename) as fp: content = fp.read() self.assertEqual(content, expected)
def setUp(self): self.session = Session() self.documents_bundle = DocumentsBundle(SAMPLE_ISSUES_KERNEL[0]) self.session.documents_bundles.add(self.documents_bundle)
class TestLinkDocumentsBundleWithDocuments(unittest.TestCase): def setUp(self): self.session = Session() self.documents_bundle = DocumentsBundle(SAMPLE_ISSUES_KERNEL[0]) self.session.documents_bundles.add(self.documents_bundle) def fetch_documents_bundle(self): return self.session.documents_bundles.fetch(self.documents_bundle.id()) def test_should_link_documents_bundle_with_documents(self): inserting.link_documents_bundles_with_documents( self.documents_bundle, [{ "id": "doc-1", "order": "0001" }, { "id": "doc-2", "order": "0002" }], self.session, ) self.assertEqual( [{ "id": "doc-1", "order": "0001" }, { "id": "doc-2", "order": "0002" }], self.fetch_documents_bundle().documents, ) def test_should_not_insert_duplicated_documents(self): inserting.link_documents_bundles_with_documents( self.documents_bundle, [{ "id": "doc-1", "order": "0001" }, { "id": "doc-1", "order": "0001" }], self.session, ) self.assertEqual([{ "id": "doc-1", "order": "0001" }], self.fetch_documents_bundle().documents) def test_should_register_changes(self): inserting.link_documents_bundles_with_documents( self.documents_bundle, [{ "id": "doc-1", "order": "0001" }, { "id": "doc-2", "order": "0002" }], self.session, ) _changes = self.session.changes.filter() self.assertEqual(1, len(_changes)) self.assertEqual(self.documents_bundle.id(), _changes[0]["id"]) self.assertEqual("DocumentsBundle", _changes[0]["entity"])