Skip to content

Commit

Permalink
test: add JALC tests for ORCID index functionality
Browse files Browse the repository at this point in the history
Add tests to verify ORCID index functionality for adding ORCIDs to authors in JALC processing. Tests confirm that:

- ORCID is correctly added from index for single authors
- No ORCID is assigned when authors are perfect homonyms
- Empty ORCID index results in no ORCID additions

The tests verify existing behavior works as expected.
  • Loading branch information
arcangelo7 committed Jan 23, 2025
1 parent bcaf793 commit 275355b
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 4 deletions.
4 changes: 0 additions & 4 deletions oc_ds_converter/jalc/jalc_processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
from __future__ import annotations

import csv
import pathlib
from os.path import exists
from oc_ds_converter.pubmed.get_publishers import ExtractPublisherDOI

from oc_ds_converter.oc_idmanager.doi import DOIManager
from oc_ds_converter.oc_idmanager.issn import ISSNManager
Expand All @@ -29,7 +26,6 @@
import os
import os.path
import json
import re
import warnings
from pathlib import Path
from typing import Optional
Expand Down
116 changes: 116 additions & 0 deletions test/jalc_processing_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,62 @@

class TestJalcProcessing(unittest.TestCase):

def setUp(self):
"""Setup comune per i test che include entity dict di esempio"""
# Entity dict con autori singoli
self.entity_dict_single_author = {
"data": {
"doi": "10.11178/example.1",
"creator_list": [
{
"sequence": "1",
"type": "person",
"names": [
{
"lang": "ja",
"last_name": "山田",
"first_name": "太郎"
}
],
"role": "author"
}
]
}
}

# Entity dict con autori omonimi
self.entity_dict_homonyms = {
"data": {
"doi": "10.11178/example.2",
"creator_list": [
{
"sequence": "1",
"type": "person",
"names": [
{
"lang": "ja",
"last_name": "田中",
"first_name": "一郎"
}
],
"role": "author"
},
{
"sequence": "2",
"type": "person",
"names": [
{
"lang": "ja",
"last_name": "田中",
"first_name": "一郎"
}
],
"role": "author"
}
]
}
}

def test_csv_creator(self):
jalc_processor_citing = JalcProcessing(orcid_index=IOD, doi_csv=WANTED_DOIS_FOLDER, citing=True)
jalc_processor_cited = JalcProcessing(orcid_index=IOD, doi_csv=WANTED_DOIS_FOLDER, citing=False)
Expand Down Expand Up @@ -4479,6 +4535,66 @@ def test_to_validated_id_list(self):
self.assertEqual(out_1, exp_1)
j_p.storage_manager.delete_storage()

def test_get_agents_strings_list_with_orcid_index(self):
"""Test aggiunta ORCID da index per autore"""
jalc_processor = JalcProcessing()
csv_manager = CSVManager()
# Creo un ORCID index con entry per l'autore
csv_manager.data = {
'10.11178/example.1': {
'山田, 太郎 [0000-0001-2345-6789]'
}
}
jalc_processor.orcid_index = csv_manager

authors_list = jalc_processor.get_authors(self.entity_dict_single_author["data"])
authors_strings_list, _ = jalc_processor.get_agents_strings_list(
self.entity_dict_single_author["data"]["doi"],
authors_list
)

expected_authors = ['山田, 太郎 [orcid:0000-0001-2345-6789]']
self.assertEqual(authors_strings_list, expected_authors)

def test_get_agents_strings_list_partial_orcid_index(self):
"""Test quando l'ORCID index contiene solo uno degli autori omonimi"""
jalc_processor = JalcProcessing()
csv_manager = CSVManager()
# ORCID index con solo uno degli autori omonimi
csv_manager.data = {
'10.11178/example.2': {
'田中, 一郎 [0000-0003-4567-8901]'
}
}
jalc_processor.orcid_index = csv_manager

authors_list = jalc_processor.get_authors(self.entity_dict_homonyms["data"])
authors_strings_list, _ = jalc_processor.get_agents_strings_list(
self.entity_dict_homonyms["data"]["doi"],
authors_list
)

# In caso di omonimi perfetti, l'ORCID non viene assegnato a nessuno
expected_authors = ['田中, 一郎', '田中, 一郎']
self.assertEqual(authors_strings_list, expected_authors)

def test_get_agents_strings_list_empty_orcid_index(self):
"""Test quando l'ORCID index è vuoto"""
jalc_processor = JalcProcessing()
csv_manager = CSVManager()
# ORCID index vuoto
csv_manager.data = {}
jalc_processor.orcid_index = csv_manager

authors_list = jalc_processor.get_authors(self.entity_dict_single_author["data"])
authors_strings_list, _ = jalc_processor.get_agents_strings_list(
self.entity_dict_single_author["data"]["doi"],
authors_list
)

expected_authors = ['山田, 太郎']
self.assertEqual(authors_strings_list, expected_authors)


if __name__ == '__main__':
unittest.main()

0 comments on commit 275355b

Please sign in to comment.