From 44662f3514354706f4ecf009d80870b0f494fe66 Mon Sep 17 00:00:00 2001 From: Geert Kapteijns <ghkapteijns@gmail.com> Date: Sat, 6 May 2017 14:33:48 +0200 Subject: [PATCH] add additional tests for DOIToQueryForm --- commentaries/forms.py | 24 ++++++++++++------------ commentaries/test_forms.py | 21 +++++++++++++++------ 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/commentaries/forms.py b/commentaries/forms.py index b5b332e27..383eb9201 100644 --- a/commentaries/forms.py +++ b/commentaries/forms.py @@ -9,21 +9,21 @@ from .models import Commentary from scipost.models import Contributor +# class DOIToQueryForm(forms.Form): +# doi = forms.CharField(widget=forms.TextInput( +# {'label': 'DOI', 'placeholder': 'ex.: 10.21468/00.000.000000'})) + class DOIToQueryForm(forms.Form): - doi = forms.CharField(widget=forms.TextInput( + VALID_DOI_REGEXP = r'^(?i)10.\d{4,9}/[-._;()/:A-Z0-9]+$' + doi = forms.RegexField(regex=VALID_DOI_REGEXP, strip=False, widget=forms.TextInput( {'label': 'DOI', 'placeholder': 'ex.: 10.21468/00.000.000000'})) -# class DOIToQueryForm(forms.Form): -# VALID_DOI_REGEXP = r'^(?i)10.\d{4,9}/[-._;()/:A-Z0-9]+$' -# doi = forms.RegexField(regex=VALID_DOI_REGEXP, strip=False, widget=forms.TextInput( -# {'label': 'DOI', 'placeholder': 'ex.: 10.21468/00.000.000000'})) -# -# def clean_doi(self): -# input_doi = self.cleaned_data['doi'] -# if Commentary.objects.filter(pub_DOI=input_doi).exists(): -# error_message = 'There already exists a Commentary Page on this publication.' -# raise forms.ValidationError(error_message) -# return input_doi + def clean_doi(self): + input_doi = self.cleaned_data['doi'] + if Commentary.objects.filter(pub_DOI=input_doi).exists(): + error_message = 'There already exists a Commentary Page on this publication.' + raise forms.ValidationError(error_message) + return input_doi class IdentifierToQueryForm(forms.Form): diff --git a/commentaries/test_forms.py b/commentaries/test_forms.py index 8566a4c96..964eb0e80 100644 --- a/commentaries/test_forms.py +++ b/commentaries/test_forms.py @@ -14,12 +14,6 @@ from common.helpers.test import add_groups_and_permissions class TestDOIToQueryForm(TestCase): def setUp(self): add_groups_and_permissions() - doi_string = "10.21468/SciPostPhys.2.2.010" - self.valid_form_data = {'doi': doi_string} - - def test_valid_doi_is_valid(self): - form = DOIToQueryForm(self.valid_form_data) - self.assertTrue(form.is_valid()) def test_invalid_doi_is_invalid(self): invalid_data = {'doi': 'blablab'} @@ -34,6 +28,21 @@ class TestDOIToQueryForm(TestCase): error_message = form.errors['doi'][0] self.assertRegexpMatches(error_message, re.compile('already exist')) + def test_physrev_doi_is_valid(self): + physrev_doi = "10.21468/SciPostPhys.2.2.010" + form = DOIToQueryForm({'doi': physrev_doi}) + self.assertTrue(form.is_valid()) + + def test_scipost_doi_is_valid(self): + scipost_doi = "10.21468/SciPostPhys.2.2.010" + form = DOIToQueryForm({'doi': scipost_doi}) + self.assertTrue(form.is_valid()) + + def test_old_doi_is_valid(self): + old_doi = "10.1088/0022-3719/7/6/005" + form = DOIToQueryForm({'doi': old_doi}) + self.assertTrue(form.is_valid()) + class TestVetCommentaryForm(TestCase): def setUp(self): -- GitLab