Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 55 additions & 76 deletions researcher/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def test_person_name_join_name(self):
]

for text, expected in test_cases:
with self.subTest(text=text, excepted=expected):
with self.subTest(text=text, expected=expected):
result = PersonName.join_names(*text)
self.assertEqual(expected, result)

Expand Down Expand Up @@ -104,7 +104,7 @@ def test_researcher_orcid_create_wrong_orcid(self):
user=self.user,
orcid="http://orcid.org/0000-0002-9147-057",
)

def test_researcher_orcid_create_wrong_domain_orcid(self):
with self.assertRaises(ValidationError):
ResearcherOrcid.get_or_create(
Expand All @@ -119,18 +119,18 @@ def test_researcher_orcid_create_wrong_orcid_without_domain(self):
orcid="0000-0002-9147-057",
)


class NewResearcherTest(TestCase):
def setUp(self):
self.user = User.objects.create(username="teste", password="teste")
# ParentalKey
self.researcher_id_orcid = ResearcherOrcid.get_or_create(
user=self.user,
orcid="0000-0002-1825-0097",
)
self.researcher_id_orcid_2 = ResearcherOrcid.get_or_create(
user=self.user,
orcid="0000-0001-5109-3700",
)
)

self.location = Location.create_or_update(
user=self.user,
Expand All @@ -145,7 +145,7 @@ def setUp(self):
self.organization = Organization.create_or_update(
user=self.user,
name="Name of institution",
acronym="Acronym of institution",
acronym="INSTITUTIONACRON",
url="www.teste.com.br",
location=self.location,
institution_type_mec="institution_type_mec",
Expand All @@ -154,15 +154,17 @@ def setUp(self):
self.organization_2 = Organization.create_or_update(
user=self.user,
name="Name of institution 2",
acronym="Acronym of institution 2",
acronym="INSTACRON 2",
url="www.teste2.com.br",
location=self.location,
institution_type_mec="institution_type_mec",
is_official=True,
)

@staticmethod
def get_or_create_researcher(user, given_names, last_name, suffix, orcid=None, affiliation=None):
def get_or_create_researcher(
user, given_names, last_name, suffix, orcid=None, affiliation=None
):
return NewResearcher.get_or_create(
user=user,
given_names=given_names,
Expand All @@ -181,7 +183,6 @@ def get_or_create_researcher_id(user, researcher, identifier, source_name):
source_name=source_name,
)


def test_new_researcher_create(self):
researcher = self.get_or_create_researcher(
user=self.user,
Expand Down Expand Up @@ -241,8 +242,8 @@ def test_researcher_id_create_with_wrong_lattes(self):
ResearcherIds.get_or_create(
user=self.user,
researcher=researcher,
identifier="user.teste",
source_name="EMAIL",
identifier="invalid_lattes_format",
source_name="LATTES",
)

def test_new_researcher_create_two_times(self):
Expand Down Expand Up @@ -286,7 +287,6 @@ def test_new_researcher_create_two_times(self):
)
self.assertEqual(researcher[0].orcid.orcid, "0000-0002-1825-0097")
self.assertEqual(researcher[0].affiliation, self.organization)
self.assertEqual(researcher[0].affiliation, self.organization)
self.assertEqual(ResearcherIds.objects.all().count(), 1)
self.assertEqual(researcher_id_email_1, researcher_id_email_2)
self.assertEqual(researcher_1, researcher_2)
Expand Down Expand Up @@ -344,7 +344,7 @@ def test_new_researcher_create_two_times_different_name_same_orcid(self):
researcher=researcher_2,
identifier="user.teste2@dom.org",
source_name="EMAIL",
)
)
researcher = NewResearcher.objects.all()
self.assertEqual(researcher.count(), 2)
self.assertEqual(researcher[0].given_names, "Anna")
Expand All @@ -362,7 +362,7 @@ def test_new_researcher_create_two_times_different_name_same_orcid(self):
self.assertEqual(
researcher[1].researcher_ids.first().identifier, "user.teste2@dom.org"
)
self.assertEqual(researcher[0].orcid.orcid, researcher[1].orcid.orcid)
self.assertEqual(researcher[0].orcid.orcid, researcher[1].orcid.orcid)

def test_new_researcher_create_two_times_same_name_different_orcid(self):
researcher_1 = self.get_or_create_researcher(
Expand Down Expand Up @@ -412,7 +412,7 @@ def test_new_researcher_create_two_times_same_name_different_orcid(self):
)
self.assertEqual(researcher[1].orcid.orcid, "0000-0001-5109-3700")
self.assertNotEqual(researcher[0], researcher[1])

def test_new_researcher_create_without_orcid_same_affiliation(self):
researcher_1 = self.get_or_create_researcher(
user=self.user,
Expand Down Expand Up @@ -447,7 +447,6 @@ def test_new_researcher_create_without_orcid_same_affiliation(self):
self.assertEqual(researcher_1, researcher_2)
self.assertEqual(researcher_1.affiliation, self.organization)
self.assertEqual(researcher_1.affiliation, researcher_2.affiliation)
self.assertEqual(researcher_1, researcher_2)


class MigrationResearcherTest(TestCase):
Expand Down Expand Up @@ -491,9 +490,7 @@ def setUp(self):
affiliation=self.affiliation,
)

def get_args(
self,
):
def get_args(self):
return dict(
username=self.user.username,
user_id=None,
Expand Down Expand Up @@ -591,55 +588,44 @@ class AffiliationMixinTest(TestCase):
Tests for AffiliationMixin - testing through a concrete implementation.
Since AffiliationMixin is abstract, we test it via the article.models.ArticleAffiliation class.
"""

def setUp(self):
"""Set up test data."""
from article.models import Article, ArticleAffiliation
from location.models import Country

self.user = User.objects.create(username="testuser", password="testpass")

# Create a location for the organization
self.country = Country.objects.create(
name="Brazil",
acron2="BR",
acron3="BRA"
)
self.location = Location.objects.create(

self.country = Country.objects.create(name="Brazil", acronym="BR", acron3="BRA")
self.location = Location.create_or_update(
user=self.user,
country=self.country,
state_name="São Paulo",
state_acronym="SP",
city_name="São Paulo"
city_name="São Paulo",
)

# Create an organization

self.organization = Organization.objects.create(
name="Universidade de São Paulo",
acronym="USP",
location=self.location,
creator=self.user
)

# Create an article for ArticleAffiliation tests
self.article = Article.objects.create(
creator=self.user
creator=self.user,
)


self.article = Article.objects.create(creator=self.user)
self.ArticleAffiliation = ArticleAffiliation

def test_affiliation_mixin_create_with_organization(self):
"""Test creating an affiliation with organization."""
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
organization=self.organization
user=self.user, article=self.article, organization=self.organization
)

self.assertIsNotNone(affiliation.id)
self.assertEqual(affiliation.organization, self.organization)
self.assertEqual(affiliation.article, self.article)
self.assertEqual(affiliation.creator, self.user)

def test_affiliation_mixin_create_with_raw_data(self):
"""Test creating an affiliation with raw organization data."""
affiliation = self.ArticleAffiliation.create(
Expand All @@ -650,109 +636,102 @@ def test_affiliation_mixin_create_with_raw_data(self):
raw_country_name="United States",
raw_country_code="USA",
raw_state_name="California",
raw_city_name="San Francisco"
raw_city_name="San Francisco",
)

self.assertIsNotNone(affiliation.id)
self.assertEqual(affiliation.raw_text, "University of Example")
self.assertEqual(affiliation.raw_institution_name, "University of Example")
self.assertEqual(affiliation.raw_country_name, "United States")
self.assertEqual(affiliation.raw_country_code, "USA")
self.assertEqual(affiliation.raw_state_name, "California")
self.assertEqual(affiliation.raw_city_name, "San Francisco")

def test_affiliation_mixin_get(self):
"""Test getting an affiliation."""
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
organization=self.organization
user=self.user, article=self.article, organization=self.organization
)

retrieved = self.ArticleAffiliation.get(
article=self.article,
organization=self.organization
article=self.article, organization=self.organization
)

self.assertEqual(retrieved.id, affiliation.id)
self.assertEqual(retrieved.organization, self.organization)

def test_affiliation_mixin_get_raises_value_error(self):
"""Test that get raises ValueError when article is not provided."""
with self.assertRaises(ValueError):
self.ArticleAffiliation.get(article=None)

def test_affiliation_mixin_create_or_update_creates(self):
"""Test create_or_update creates when affiliation doesn't exist."""
affiliation = self.ArticleAffiliation.create_or_update(
user=self.user,
article=self.article,
organization=self.organization,
raw_text="Test Organization"
raw_text="Test Organization",
)

self.assertIsNotNone(affiliation.id)
self.assertEqual(affiliation.organization, self.organization)
self.assertEqual(affiliation.raw_text, "Test Organization")
self.assertEqual(self.ArticleAffiliation.objects.count(), 1)

def test_affiliation_mixin_create_or_update_updates(self):
"""Test create_or_update updates when affiliation exists."""
# Create initial affiliation
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
organization=self.organization,
raw_text="Initial Text"
raw_text="Initial Text",
)
initial_id = affiliation.id

# Update the affiliation

updated = self.ArticleAffiliation.create_or_update(
user=self.user,
article=self.article,
organization=self.organization,
raw_text="Updated Text"
raw_text="Updated Text",
)

self.assertEqual(updated.id, initial_id)
self.assertEqual(updated.raw_text, "Updated Text")
self.assertEqual(updated.updated_by, self.user)
self.assertEqual(self.ArticleAffiliation.objects.count(), 1)

def test_affiliation_mixin_create_with_both_organization_and_raw(self):
"""Test creating with both organization and raw data."""
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
organization=self.organization,
raw_text="Raw Organization Name",
raw_institution_name="Raw Institution"
raw_institution_name="Raw Institution",
)

self.assertIsNotNone(affiliation.id)
self.assertEqual(affiliation.organization, self.organization)
self.assertEqual(affiliation.raw_text, "Raw Organization Name")
self.assertEqual(affiliation.raw_institution_name, "Raw Institution")

def test_article_affiliation_str(self):
"""Test string representation of ArticleAffiliation."""
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
organization=self.organization
user=self.user, article=self.article, organization=self.organization
)

expected = f"{self.article} - {self.organization}"
self.assertEqual(str(affiliation), expected)

def test_article_affiliation_str_with_raw_data(self):
"""Test string representation with raw data."""
affiliation = self.ArticleAffiliation.create(
user=self.user,
article=self.article,
raw_institution_name="Test Institution"
raw_institution_name="Test Institution",
)

expected = f"{self.article} - Test Institution"
self.assertEqual(str(affiliation), expected)
Loading