SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 47ffc28f authored by Geert Kapteijns's avatar Geert Kapteijns
Browse files

ArxivQueryForm tests

parent 6631e9da
No related branches found
No related tags found
No related merge requests found
......@@ -42,7 +42,11 @@ class DOIToQueryForm(forms.Form):
class ArxivQueryForm(forms.Form):
identifier = forms.CharField()
IDENTIFIER_PATTERN_NEW = r'^[0-9]{4,}.[0-9]{4,5}v[0-9]{1,2}$'
IDENTIFIER_PATTERN_OLD = r'^[-.a-z]+/[0-9]{7,}v[0-9]{1,2}$'
VALID_ARXIV_IDENTIFIER_REGEX = "(?:{})|(?:{})".format(IDENTIFIER_PATTERN_NEW, IDENTIFIER_PATTERN_OLD)
identifier = forms.RegexField(regex=VALID_ARXIV_IDENTIFIER_REGEX, strip=True)
# identifierpattern_new = re.compile("^[0-9]{4,}.[0-9]{4,5}v[0-9]{1,2}$")
# identifierpattern_old = re.compile("^[-.a-z]+/[0-9]{7,}v[0-9]{1,2}$")
......
......@@ -6,11 +6,38 @@ from common.helpers import model_form_data
from scipost.factories import UserFactory
from .factories import VettedCommentaryFactory, UnvettedCommentaryFactory
from .forms import RequestCommentaryForm, RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm
from .forms import RequestCommentaryForm, RequestPublishedArticleForm, VetCommentaryForm, DOIToQueryForm, ArxivQueryForm
from .models import Commentary
from common.helpers.test import add_groups_and_permissions
class TestArxivQueryForm(TestCase):
def test_new_arxiv_identifier_is_valid(self):
new_identifier_data = {'identifier': '1612.07611v1'}
form = ArxivQueryForm(new_identifier_data)
self.assertTrue(form.is_valid())
def test_old_arxiv_identifier_is_valid(self):
old_identifier_data = {'identifier': 'cond-mat/0612480v1'}
form = ArxivQueryForm(old_identifier_data)
self.assertTrue(form.is_valid())
def test_invalid_arxiv_identifier(self):
invalid_data = {'identifier': 'i am not valid'}
form = ArxivQueryForm(invalid_data)
self.assertFalse(form.is_valid())
def test_new_arxiv_identifier_without_version_number_is_invalid(self):
data = {'identifier': '1612.07611'}
form = ArxivQueryForm(data)
self.assertFalse(form.is_valid())
def test_old_arxiv_identifier_without_version_number_is_invalid(self):
data = {'identifier': 'cond-mat/0612480'}
form = ArxivQueryForm(data)
self.assertFalse(form.is_valid())
class TestDOIToQueryForm(TestCase):
def setUp(self):
add_groups_and_permissions()
......
......@@ -117,7 +117,17 @@ def prefill_using_DOI(request):
@permission_required('scipost.can_request_commentary_pages', raise_exception=True)
def prefill_using_arxiv_identifier(request):
if request.method == "POST":
return 1
arxiv_query_form = ArxivQueryForm(request.POST)
if arxiv_query_form.is_valid():
raise NotImplementedError
else:
form = RequestArxivPreprintForm()
context = {
'form': form,
'arxiv_query_form': arxiv_query_form,
}
return render(request, 'commentaries/request_arxiv_preprint.html', context)
else:
raise Http404
......
......@@ -6,50 +6,25 @@ from submissions.models import Submission
class ArxivCallerTest(TestCase):
def setUp(self):
self.valid_arxiv_identifier = '1612.07611v1'
def test_collects_metadata(self):
raise NotImplementedError
class ArxivCallerTestOld(TestCase):
def test_correct_lookup(self):
caller = ArxivCaller(Submission, '1611.09574v1')
caller.process()
self.assertEqual(caller.is_valid(), True)
self.assertIn('entries', caller.metadata)
def test_errorcode_for_non_existing_paper(self):
caller = ArxivCaller(Submission, '2611.09574v1')
caller.process()
self.assertEqual(caller.is_valid(), False)
self.assertEqual(caller.errorcode, 'preprint_does_not_exist')
def test_errorcode_for_bad_request(self):
caller = ArxivCaller(Submission, '161109574v1')
caller.process()
self.assertEqual(caller.is_valid(), False)
self.assertEqual(caller.errorcode, 'arxiv_bad_request')
def test_errorcode_for_already_published_journal_ref(self):
caller = ArxivCaller(Submission, '1412.0006v1')
caller.process()
self.assertEqual(caller.is_valid(), False)
self.assertEqual(caller.errorcode, 'paper_published_journal_ref')
self.assertNotEqual(caller.arxiv_journal_ref, '')
def test_identifier_new_style(self):
caller = ArxivCaller('1612.07611v1')
self.assertTrue(caller.is_valid)
correct_data = {
'pub_abstract': 'The Berezinskii-Kosterlitz-Thouless (BKT) transitions of the six-state clock\nmodel on the square lattice are investigated by means of the corner-transfer\nmatrix renormalization group method. The classical analogue of the entanglement\nentropy $S( L, T )$ is calculated for $L$ by $L$ square system up to $L = 129$,\nas a function of temperature $T$. The entropy has a peak at $T = T^{*}_{~}( L\n)$, where the temperature depends on both $L$ and boundary conditions. Applying\nthe finite-size scaling to $T^{*}_{~}( L )$ and assuming the presence of BKT\ntransitions, the transition temperature is estimated to be $T_1^{~} = 0.70$ and\n$T_2^{~} = 0.88$. The obtained results agree with previous analyses. It should\nbe noted that no thermodynamic function is used in this study.', 'author_list': ['Roman Krčmár', 'Andrej Gendiar', 'Tomotoshi Nishino'], 'arxiv_link': 'http://arxiv.org/abs/1612.07611v1', 'pub_title': 'Phase transition of the six-state clock model observed from the\n entanglement entropy'
}
self.assertEqual(caller.data, correct_data)
def test_errorcode_no_version_nr(self):
# Should be already caught in form validation
caller = ArxivCaller(Submission, '1412.0006')
def test_identifier_old_style(self):
caller = ArxivCaller('cond-mat/0612480')
self.assertTrue(caller.is_valid)
correct_data = {
'pub_title': 'Least Action Principle for the Real-Time Density Matrix Renormalization\n Group', 'arxiv_link': 'http://arxiv.org/abs/cond-mat/0612480v2', 'author_list': ['Kouji Ueda', 'Chenglong Jin', 'Naokazu Shibata', 'Yasuhiro Hieida', 'Tomotoshi Nishino'], 'pub_abstract': 'A kind of least action principle is introduced for the discrete time\nevolution of one-dimensional quantum lattice models. Based on this principle,\nwe obtain an optimal condition for the matrix product states on succeeding time\nslices generated by the real-time density matrix renormalization group method.\nThis optimization can also be applied to classical simulations of quantum\ncircuits. We discuss the time reversal symmetry in the fully optimized MPS.'
}
self.assertEqual(caller.data, correct_data)
caller.process()
self.assertEqual(caller.is_valid(), False)
self.assertEqual(caller.errorcode, 'bad_identifier')
def valid_but_nonexistent_identifier(self):
caller = ArxivCaller('1613.07611v1')
self.assertFalse(caller.is_valid)
class DOICallerTest(TestCase):
......@@ -85,3 +60,42 @@ class DOICallerTest(TestCase):
def test_valid_but_non_existent_doi(self):
caller = DOICaller('10.21468/NonExistentJournal.2.2.012')
self.assertEqual(caller.is_valid, False)
# class ArxivCallerTestOld(TestCase):
# def test_correct_lookup(self):
# caller = ArxivCaller(Submission, '1611.09574v1')
#
# caller.process()
#
# self.assertEqual(caller.is_valid(), True)
# self.assertIn('entries', caller.metadata)
#
# def test_errorcode_for_non_existing_paper(self):
# caller = ArxivCaller(Submission, '2611.09574v1')
#
# caller.process()
# self.assertEqual(caller.is_valid(), False)
# self.assertEqual(caller.errorcode, 'preprint_does_not_exist')
#
# def test_errorcode_for_bad_request(self):
# caller = ArxivCaller(Submission, '161109574v1')
#
# caller.process()
# self.assertEqual(caller.is_valid(), False)
# self.assertEqual(caller.errorcode, 'arxiv_bad_request')
#
# def test_errorcode_for_already_published_journal_ref(self):
# caller = ArxivCaller(Submission, '1412.0006v1')
#
# caller.process()
# self.assertEqual(caller.is_valid(), False)
# self.assertEqual(caller.errorcode, 'paper_published_journal_ref')
# self.assertNotEqual(caller.arxiv_journal_ref, '')
#
# def test_errorcode_no_version_nr(self):
# # Should be already caught in form validation
# caller = ArxivCaller(Submission, '1412.0006')
#
# caller.process()
# self.assertEqual(caller.is_valid(), False)
# self.assertEqual(caller.errorcode, 'bad_identifier')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment