-
Notifications
You must be signed in to change notification settings - Fork 67
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
#2734 More work on testing and revising template context generation
- Loading branch information
Showing
5 changed files
with
275 additions
and
126 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,75 +9,185 @@ | |
|
||
|
||
class TestLogic(TestCase): | ||
def setUp(self): | ||
self.press = helpers.create_press() | ||
self.press.save() | ||
self.journal_one, self.journal_two = helpers.create_journals() | ||
self.request = helpers.Request() | ||
self.request.press = self.press | ||
self.request.journal = self.journal_one | ||
self.article_one = helpers.create_article(self.journal_one) | ||
|
||
def test_create_crossref_context(self): | ||
|
||
@classmethod | ||
def setUpTestData(cls): | ||
|
||
cls.press = helpers.create_press() | ||
cls.press.save() | ||
cls.journal_one, cls.journal_two = helpers.create_journals() | ||
save_setting('general', 'journal_issn', cls.journal_one, '1234-5678') | ||
save_setting('general', 'print_issn', cls.journal_one, '8765-4321') | ||
save_setting('Identifiers', 'use_crossref', cls.journal_one, True) | ||
save_setting('Identifiers', 'crossref_prefix', cls.journal_one, '10.0000') | ||
cls.request = helpers.Request() | ||
cls.request.press = cls.press | ||
cls.request.journal = cls.journal_one | ||
|
||
# Issue 5.3 has one article | ||
cls.issue_five_three = helpers.create_issue(cls.journal_one, volume=5, issue_number=3) | ||
|
||
cls.article_one = helpers.create_article(cls.journal_one) | ||
cls.doi_one = logic.generate_crossref_doi_with_pattern(cls.article_one) | ||
cls.issue_five_three.articles.add(cls.article_one) | ||
cls.article_one.primary_issue = cls.issue_five_three | ||
cls.article_one.abstract = 'Test abstract.' | ||
cls.article_one.snapshot_authors() | ||
cls.article_one.license = submission_models.Licence.objects.filter( | ||
journal=cls.journal_one, | ||
).first() | ||
cls.article_one.page_numbers = '1-72' | ||
cls.article_one.save() | ||
|
||
cls.issue_five_three.save() | ||
|
||
# Issue 6.1 has two articles that should be registered together | ||
# in a single Crossref journal issue block | ||
cls.issue_six_one = helpers.create_issue(cls.journal_one, volume=6, issue_number=1) | ||
|
||
cls.article_two = helpers.create_article(cls.journal_one) | ||
cls.doi_two = logic.generate_crossref_doi_with_pattern(cls.article_two) | ||
cls.issue_six_one.articles.add(cls.article_two) | ||
cls.article_two.primary_issue = cls.issue_six_one | ||
cls.article_two.save() | ||
|
||
cls.article_three = helpers.create_article(cls.journal_one) | ||
cls.doi_three = logic.generate_crossref_doi_with_pattern(cls.article_three) | ||
cls.issue_six_one.articles.add(cls.article_three) | ||
cls.article_three.primary_issue = cls.issue_six_one | ||
cls.article_three.save() | ||
|
||
# But issue 6.1 also has another couple articles that should be registered individually | ||
# because they have special attributes | ||
cls.article_four = helpers.create_article(cls.journal_one) | ||
cls.article_four.ISSN_override = '5555-5555' | ||
cls.doi_four = logic.generate_crossref_doi_with_pattern(cls.article_four) | ||
cls.issue_six_one.articles.add(cls.article_four) | ||
cls.article_four.primary_issue = cls.issue_six_one | ||
cls.article_four.save() | ||
|
||
cls.article_five = helpers.create_article(cls.journal_one) | ||
cls.article_five.publication_title = 'A Very Special Old Publication' | ||
cls.doi_five = logic.generate_crossref_doi_with_pattern(cls.article_five) | ||
cls.issue_six_one.articles.add(cls.article_five) | ||
cls.article_five.primary_issue = cls.issue_six_one | ||
cls.article_five.save() | ||
|
||
cls.issue_six_one.save() | ||
|
||
def test_create_crossref_doi_batch_context(self): | ||
self.maxDiff = None | ||
expected_data = {} | ||
|
||
self.article_one.abstract = 'Test abstract.' | ||
expected_data['abstract'] = self.article_one.abstract | ||
|
||
expected_data['article_title'] = 'Test Article from Utils Testing Helpers' | ||
expected_data['depositor_email'] = '[email protected]' | ||
save_setting('Identifiers', 'crossref_email', | ||
self.journal_one, '[email protected]') | ||
|
||
expected_data['article_url'] = self.article_one.url | ||
expected_data['depositor_name'] = 'Journal One' | ||
save_setting('Identifiers', 'crossref_name', | ||
self.journal_one, 'Journal One') | ||
|
||
self.article_one.snapshot_authors() | ||
expected_data['authors'] = [author.email for author in self.article_one.frozenauthor_set.all()] | ||
expected_data['registrant'] = 'registrant' | ||
save_setting('Identifiers', 'crossref_registrant', | ||
self.journal_one, 'registrant') | ||
|
||
save_setting( | ||
'Identifiers', 'crossref_prefix', self.journal_one, '10.0000') | ||
expected_data['is_conference'] = self.journal_one.is_conference | ||
|
||
expected_data['citation_list'] = None | ||
expected_data['date_accepted'] = None | ||
expected_data['date_published'] = None | ||
context = logic.create_crossref_doi_batch_context( | ||
self.journal_one, | ||
set([self.doi_one]) | ||
) | ||
|
||
save_setting( | ||
'Identifiers', 'crossref_email', self.journal_one, '[email protected]') | ||
expected_data['depositor_email'] = '[email protected]' | ||
# A couple things need to be adjusted with context for test to work | ||
for key in ['batch_id', 'now', 'timestamp', 'timestamp_suffix']: | ||
context.pop(key) | ||
|
||
save_setting( | ||
'Identifiers', 'crossref_name', self.journal_one, 'Journal One') | ||
expected_data['depositor_name'] = 'Journal One' | ||
# Don't test lower levels of nested context in this test | ||
expected_data['crossref_issues'] = [] | ||
if 'crossref_issues' in context: | ||
context['crossref_issues'] = [] | ||
|
||
expected_data['doi'] = self.article_one.render_sample_doi() | ||
self.assertEqual(expected_data, context) | ||
|
||
self.issue_five_three = helpers.create_issue(self.journal_one) | ||
self.issue_five_three.articles.add(self.article_one) | ||
expected_data['issue'] = self.issue_five_three | ||
expected_data['journal_issn'] = '0000-0000' | ||
expected_data['journal_title'] = 'Journal One' | ||
|
||
self.article_one.license = submission_models.Licence.objects.filter( | ||
journal=self.journal_one, | ||
).first() | ||
expected_data['license'] = submission_models.Licence.objects.filter( | ||
journal=self.journal_one, | ||
).first().url | ||
def test_create_crossef_issues_context(self): | ||
# Just expect the right number of crossref_issues | ||
# each with the right keys | ||
expected_data = [ | ||
{'journal':None,'issue':None,'articles':None} for x in range(4) | ||
] | ||
|
||
identifiers = set() | ||
identifiers.add(self.doi_one) # Should be on its own in 5.3 | ||
identifiers.add(self.doi_two) # Should go together with below in 6.1 | ||
identifiers.add(self.doi_three) # Should go together with above in 6.1 | ||
identifiers.add(self.doi_four) # Should be on its own due to Article.ISSN_override | ||
identifiers.add(self.doi_five) # Should be on its own due to Article.publication_title | ||
context = logic.create_crossref_issues_context( | ||
self.journal_one, | ||
identifiers, | ||
) | ||
|
||
# Knock out the lower levels of data | ||
for i, crossref_issue in enumerate(context): | ||
for key in context[i].keys(): | ||
context[i][key] = None | ||
|
||
self.article_one.page_numbers = '1-72' | ||
expected_data['pages'] = self.article_one.page_numbers | ||
self.assertEqual(expected_data, context) | ||
|
||
expected_data['print_issn'] = '' | ||
|
||
save_setting( | ||
'Identifiers', 'crossref_registrant', self.journal_one, 'registrant') | ||
expected_data['registrant'] = 'registrant' | ||
def test_create_crossref_issue_context(self): | ||
expected_issue = self.issue_five_three | ||
expected_number_of_articles = 1 | ||
context = logic.create_crossref_issue_context( | ||
self.journal_one, | ||
set([self.doi_one]), | ||
self.issue_five_three, | ||
) | ||
self.assertEqual(expected_issue, context['issue']) | ||
self.assertEqual(expected_number_of_articles, len(context['articles'])) | ||
|
||
expected_issue = self.issue_six_one | ||
expected_number_of_articles = 2 | ||
context = logic.create_crossref_issue_context( | ||
self.journal_one, | ||
set([self.doi_two, self.doi_three]), | ||
self.issue_six_one, | ||
) | ||
self.assertEqual(expected_issue, context['issue']) | ||
self.assertEqual(expected_number_of_articles, len(context['articles'])) | ||
|
||
|
||
def test_create_crossref_journal_context(self): | ||
expected_data = { | ||
'journal_title': 'Journal One', | ||
'journal_issn': '1234-5678', | ||
'print_issn': '8765-4321', | ||
} | ||
context = logic.create_crossref_journal_context(self.journal_one) | ||
self.assertEqual(expected_data, context) | ||
|
||
|
||
context = logic.create_crossref_context(self.article_one) | ||
def test_create_crossref_article_context(self): | ||
expected_data = { | ||
'article_title': self.article_one.title, | ||
'abstract': self.article_one.abstract, | ||
'article_url': self.article_one.url, | ||
'authors': [ | ||
author.email for author in self.article_one.frozenauthor_set.all() | ||
], | ||
'citation_list': None, | ||
'date_accepted': None, | ||
'date_published': None, | ||
'doi': self.doi_one.identifier, | ||
'license': submission_models.Licence.objects.filter( | ||
journal=self.journal_one, | ||
).first().url, | ||
'pages': self.article_one.page_numbers | ||
} | ||
|
||
# A couple things need to be adjusted with context for test to work | ||
context = logic.create_crossref_article_context(self.article_one) | ||
context['authors'] = [author.email for author in context['authors']] | ||
for k in ['batch_id', 'now', 'timestamp', 'timestamp_suffix']: | ||
context.pop(k) | ||
|
||
self.assertEqual(expected_data, context) | ||
|
||
|
Oops, something went wrong.