Skip to content

Commit

Permalink
openlibhums#2817: Add issue level DOI unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mauromsl committed Sep 8, 2022
1 parent f0c00a9 commit a5cd0b5
Showing 1 changed file with 43 additions and 4 deletions.
47 changes: 43 additions & 4 deletions src/identifiers/tests/test_logic.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import datetime
from io import BytesIO, StringIO
import json
import mock
import pytz
import os


from django.test import TestCase
from django.conf import settings
from django.utils import timezone

from identifiers import logic, models
from core.models import SettingGroup
from journal import logic as journal_logic
from submission import models as submission_models
from utils.testing import helpers
from utils.setting_handler import save_setting
from utils.shared import clear_cache
from lxml import etree
from bs4 import BeautifulSoup
import requests
from io import BytesIO, StringIO
import os
import json

class TestLogic(TestCase):

@classmethod
Expand Down Expand Up @@ -353,6 +355,43 @@ def test_conference_deposit_xml_document_has_basically_correct_components(self):
# There should be two conference papers (articles)
self.assertEqual(2, len(soup.find_all('conference_paper')))

def test_issue_doi_deposited_correctly(self):
template = 'common/identifiers/crossref_doi_batch.xml'
issue = self.article_one.issue
issue.doi = issue_doi = "10.0001/issue"
issue.save()
identifier = self.article_one.get_doi_object
clear_cache()

template_context = logic.create_crossref_doi_batch_context(
self.article_one.journal,
{identifier},
)
deposit = logic.render_to_string(template, template_context)

soup = BeautifulSoup(deposit, 'lxml')
# There should be one doi_batch
issue_soup = soup.find('journal_issue')
found = False
if issue_soup:
issue_doi_soup = issue_soup.find("doi_data")
if issue_doi_soup:
self.assertEqual(issue_doi_soup.find("doi").string, issue_doi)
self.assertEqual(issue_doi_soup.find("resource").string, issue.url)
found = True
if not found:
raise AssertionError("No Issue DOI found on article deposit")

def test_issue_doi_auto_assigned(self):
issue = helpers.create_issue(self.journal_one, vol=99, number=99)
self.request.POST = {"assign_issue": issue.pk}
mock_messages = mock.patch('journal.logic.messages').start()
mock_messages.messages = mock.MagicMock()
save_setting('Identifiers', 'register_issue_dois', self.journal_one, '')
from events import registration
journal_logic.handle_assign_issue(self.request, self.article_one, [issue])
self.assertTrue(issue.doi)

def test_check_crossref_settings(self):

# Missing settings
Expand Down

0 comments on commit a5cd0b5

Please # to comment.