Skip to content

Commit 54772cf

Browse files
committed
add tests for validator functions for WTform StringFields
1 parent 8491579 commit 54772cf

File tree

1 file changed

+74
-1
lines changed

1 file changed

+74
-1
lines changed

qiita_pet/test/test_user_handlers.py

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
# -----------------------------------------------------------------------------
88

99
from unittest import main
10+
from wtforms.validators import ValidationError
11+
from wtforms import StringField
1012

1113
from qiita_pet.test.tornado_test_base import TestHandlerBase
14+
from qiita_pet.handlers.user_handlers import UserProfile
1215

1316

1417
class TestUserProfile(TestHandlerBase):
@@ -17,7 +20,6 @@ class TestUserProfile(TestHandlerBase):
1720

1821

1922
class TestUserProfileHandler(TestHandlerBase):
20-
2123
def test_get(self):
2224
response = self.get('/profile/')
2325
self.assertEqual(response.code, 200)
@@ -44,6 +46,77 @@ def test_post_profile(self):
4446
response = self.post('/profile/', post_args)
4547
self.assertEqual(response.code, 200)
4648

49+
def test_validators_social(self):
50+
# None or empty should be valid
51+
obs = UserProfile.validate_general(None, "", "")
52+
self.assertEqual(obs, None)
53+
obs = UserProfile.validate_general("", "", "")
54+
self.assertEqual(obs, None)
55+
56+
# having white spaces should raise errors
57+
with self.assertRaises(ValidationError):
58+
obs = UserProfile.validate_general(" infix", "", "")
59+
with self.assertRaises(ValidationError):
60+
obs = UserProfile.validate_general("infix ", "", "")
61+
with self.assertRaises(ValidationError):
62+
obs = UserProfile.validate_general(" infix ", "", "")
63+
obs = UserProfile.validate_general("infix", "", "")
64+
self.assertEqual(obs, 'infix')
65+
66+
with self.assertRaises(ValidationError):
67+
obs = UserProfile.validate_general(
68+
"http://kurt.com/id1234", "msg", r"http://kurt.\w{1,3}/")
69+
70+
def test_validator_orcid_id(self):
71+
field = StringField("testfield")
72+
73+
field.data = "0000-0002-0975-9019"
74+
obs = UserProfile.validator_orcid_id(None, field)
75+
self.assertEqual(obs, None)
76+
77+
field.data = "https://orcid.org/0000-0002-0975-9019"
78+
with self.assertRaises(ValidationError):
79+
obs = UserProfile.validator_orcid_id(None, field)
80+
81+
field.data = "wrong"
82+
with self.assertRaises(ValidationError):
83+
obs = UserProfile.validator_orcid_id(None, field)
84+
85+
def test_validator_gscholar_id(self):
86+
field = StringField("testfield")
87+
88+
field.data = "_e3QL94AAAAJ"
89+
obs = UserProfile.validator_gscholar_id(None, field)
90+
self.assertEqual(obs, None)
91+
92+
field.data = ('https://scholar.google.com/citations?user=_e3QL94AAAAJ&'
93+
'hl=en')
94+
with self.assertRaises(ValidationError):
95+
obs = UserProfile.validator_gscholar_id(None, field)
96+
97+
field.data = 'user=_e3QL94AAAAJ&hl=en'
98+
with self.assertRaises(ValidationError):
99+
obs = UserProfile.validator_gscholar_id(None, field)
100+
101+
field.data = 'user=_e3QL94AAAAJ'
102+
with self.assertRaises(ValidationError):
103+
obs = UserProfile.validator_gscholar_id(None, field)
104+
105+
field.data = '=_e3QL94AAAAJ'
106+
with self.assertRaises(ValidationError):
107+
obs = UserProfile.validator_gscholar_id(None, field)
108+
109+
def test_validator_rgate_id(self):
110+
field = StringField("testfield")
111+
112+
field.data = "Rob-Knight"
113+
obs = UserProfile.validator_rgate_id(None, field)
114+
self.assertEqual(obs, None)
115+
116+
field.data = 'https://www.researchgate.net/profile/Rob-Knight'
117+
with self.assertRaises(ValidationError):
118+
obs = UserProfile.validator_rgate_id(None, field)
119+
47120

48121
class TestUserJobsHandler(TestHandlerBase):
49122
def test_get(self):

0 commit comments

Comments
 (0)