def test_issue_has_supplement_when_supplement_volume_is_not_none(self): self.issue_json["v131"] = [{"_": "3"}] self.issue = issue_to_kernel(self._issue) self.assertEqual([["2019-01-29T00:00:00.000000Z", "3"]], self.issue["metadata"]["supplement"]) self.assertIn("s3", self.issue["id"])
def test_issue_has_titles(self): self.issue_json["v33"] = [{"l": "pt", "_": "Algum título"}] self.issue = issue_to_kernel(self._issue) self.assertEqual( [{"language": "pt", "value": "Algum título"}], self.issue["metadata"]["titles"], )
def test_issue_has_number_returns(self): issue_json = self.issue_json.copy() issue_json["v32"] = [{"_": "ahead"}] issue = Issue({"issue": issue_json}) _issue = issue_to_kernel(issue) self.assertEqual("ahead", issue.number) self.assertEqual("2448-167X-aop", _issue["id"])
def test_issue_has_supplement_when_supplement_volume_is_not_none(self): self.issue_json["v31"] = [{"_": "4"}] self.issue_json["v131"] = [{"_": "3"}] self.issue = issue_to_kernel(self._issue) self.assertEqual("3", self.issue["metadata"]["supplement"]) self.assertIn("s3", self.issue["id"])
def test_publication_season_range_of_six_months(self): self.issue_json["v43"] = [{"m": "Jan./Jun."}] self.issue = issue_to_kernel(self._issue) self.assertEqual( [["2019-01-29T00:00:00.000000Z", [1, 6]]], self.issue["metadata"]["publication_season"], )
def test_publication_season_start_and_end_is_equal(self): self.issue_json["v43"] = [{"m": "Feb./Feb."}] self.issue = issue_to_kernel(self._issue) self.assertEqual( [["2019-01-29T00:00:00.000000Z", [2]]], self.issue["metadata"]["publication_season"], )
def test_issue_has_supplement_when_supplement_number_is_not_none(self): self.issue_json["v32"] = [{"_": "4"}] self.issue_json["v132"] = [{"_": "2"}] self.issue = issue_to_kernel(self._issue) self.assertEqual("2", self.issue["metadata"]["supplement"]) self.assertIn("s2", self.issue["id"]) self.assertIn("s2", self.issue["_id"])
def test_issue_has_number(self): self.assertIsNone(self.issue["metadata"].get("volume")) self.issue_json["v32"] = [{"_": "1"}] self.issue = issue_to_kernel(self._issue) self.assertEqual("1", self.issue["metadata"]["number"]) self.assertIn("n1", self.issue["id"])
def test_issue_has_volume(self): self.issue_json["v31"] = [{"_": "21"}] self.issue = issue_to_kernel(self._issue) self.assertEqual("21", self.issue["metadata"]["volume"]) self.assertIn("v21", self.issue["id"]) self.assertIn("v21", self.issue["_id"])
def test_issue_has_volume(self): self.issue_json["v31"] = [{"_": "21"}] self.issue = issue_to_kernel(self._issue) self.assertEqual([["2019-01-29T00:00:00.000000Z", "21"]], self.issue["metadata"]["volume"]) self.assertIn("v21", self.issue["id"]) self.assertIn("v21", self.issue["_id"])
def setUp(self): self.issue_json = { "v65": [{ "_": "20190129" }], "v35": [{ "_": "2448-167X" }] } self._issue = Issue({"issue": self.issue_json}) self.issue = issue_to_kernel(self._issue)
def link_documents_bundles_with_journals(issue_path: str, output_path: str): """Busca pelo relacionamento entre periódicos e fascículos a partir de arquivos JSON extraídos de uma base MST. O resultado é escrito em um arquivo JSON contendo um objeto (dict) com identificadores de periócios como chaves e arrays de ids das issues que compõe o periódico""" journals_bundles = {} extract_isis.create_output_dir(output_path) issues_as_json = reading.read_json_file(issue_path) issues = conversion.conversion_issues_to_xylose(issues_as_json) issues = filter_issues(issues) for issue in issues: journal_id = issue.data["issue"]["v35"][0]["_"] journals_bundles.setdefault(journal_id, []) _issue_id = issue_to_kernel(issue)["_id"] exist_item = len( list( filter(lambda d: d["id"] == _issue_id, journals_bundles[journal_id]))) if not exist_item: _creation_date = parse_date(issue.publication_date) _supplement = "" if issue.type is "supplement": _supplement = "0" if issue.supplement_volume: _supplement = issue.supplement_volume elif issue.supplement_number: _supplement = issue.supplement_number journals_bundles[journal_id].append({ "id": _issue_id, "order": issue.order, "number": issue.number, "volume": issue.volume, "year": str(date_to_datetime(_creation_date).year), "supplement": _supplement, }) with open(output_path, "w") as output: output.write(json.dumps(journals_bundles, indent=4, sort_keys=True))
def conversion_issues_to_kernel(issues: List[Issue]) -> List[dict]: """Converte uma lista de issues em formato xylose para uma lista de issues em formato Kernel""" return [xylose_converter.issue_to_kernel(issue) for issue in issues]
def test_publication_months_range_of_six_months(self): self.issue_json["v43"] = [{"m": "Jan./Jun."}] self.issue = issue_to_kernel(self._issue) self.assertEqual( {"range": (1, 6)}, self.issue["metadata"]["publication_months"] )
def test_publication_months_start_and_end_is_equal(self): self.issue_json["v43"] = [{"m": "Feb./Feb."}] self.issue = issue_to_kernel(self._issue) self.assertEqual( {"range": (2, 2)}, self.issue["metadata"]["publication_months"], )
def test_issue_has_year_in_id_because_it_is_not_aop(self): self.issue_json["v31"] = [{"_": "21"}] self._issue = Issue({"issue": self.issue_json}) self.issue = issue_to_kernel(self._issue) self.assertIn("2019", self.issue["id"]) self.assertIn("2019", self.issue["_id"])