Pranjal Yadav has proposed merging lp:~godricglow/postorius/tests_forms into 
lp:postorius.

Requested reviews:
  Mailman Coders (mailman-coders)

For more details, see:
https://code.launchpad.net/~godricglow/postorius/tests_forms/+merge/251740

Added tests for forms.py. Improving overall coverage
-- 
Your team Mailman Coders is requested to review the proposed merge of 
lp:~godricglow/postorius/tests_forms into lp:postorius.
=== modified file 'src/postorius/forms.py'
--- src/postorius/forms.py	2015-02-09 14:35:44 +0000
+++ src/postorius/forms.py	2015-03-04 13:56:28 +0000
@@ -17,7 +17,7 @@
 # Postorius.  If not, see <http://www.gnu.org/licenses/>.
 
 from django import forms
-from django.core.validators import validate_email, URLValidator
+from django.core.validators import validate_email, URLValidator, validate_slug
 from django.utils.translation import gettext_lazy as _
 from fieldset_forms import FieldsetForm
 from django.forms.models import modelformset_factory
@@ -102,6 +102,7 @@
     Form fields to add a new list. Languages are hard coded which should
     be replaced by a REST lookup of available languages.
     """
+
     listname = forms.CharField(
         label=_('List Name'),
         required=True,
@@ -126,6 +127,7 @@
         label=_('Description'),
         required=True)
 
+
     def __init__(self, domain_choices, *args, **kwargs):
         super(ListNew, self).__init__(*args, **kwargs)
         self.fields["mail_host"] = forms.ChoiceField(
@@ -138,17 +140,20 @@
         if len(domain_choices) < 2:
             self.fields["mail_host"].help_text = _(
                 "Site admin has not created any domains")
-            # if len(choices) < 2:
+            #if len(choices) < 2:
             #    help_text=_("No domains available: " +
             #                "The site admin must create new domains " +
             #                "before you will be able to create a list")
 
     def clean_listname(self):
+        
+        cleaned_data = super(ListNew, self).clean()
+        listname = cleaned_data.get('listname')
         try:
-            validate_email(self.cleaned_data['listname'] + '@example.net')
+            validate_slug(listname)
         except:
             raise forms.ValidationError(_("Please enter a valid listname"))
-        return self.cleaned_data['listname']
+        return listname
 
     class Meta:
 
@@ -827,14 +832,19 @@
         widget=forms.PasswordInput(render_value=False))
 
     def clean(self):
-        cleaned_data = self.cleaned_data
-        password = cleaned_data.get("password")
-        password_repeat = cleaned_data.get("password_repeat")
+        password = self.cleaned_data.get('password')
+        password_repeat = self.cleaned_data.get('password_repeat')
         if password != password_repeat:
             raise forms.ValidationError("Passwords must be identical.")
-
-        return cleaned_data
-
+        return password_repeat
+
+    def clean_email(self):
+        email = self.cleaned_data['email']
+        try:
+            validate_email(email)
+        except:
+            raise forms.ValidationError(_("Please enter a valid email ID"))
+        return email
 
 class UserSettings(FieldsetForm):
 

=== modified file 'src/postorius/tests/__init__.py'
--- src/postorius/tests/__init__.py	2015-02-10 13:56:47 +0000
+++ src/postorius/tests/__init__.py	2015-03-04 13:56:28 +0000
@@ -20,7 +20,6 @@
 
 from django.conf import settings
 
-
 TEST_ROOT = os.path.abspath(os.path.dirname(__file__))
 
 FIXTURES_DIR = getattr(

=== modified file 'src/postorius/tests/test_forms.py'
--- src/postorius/tests/test_forms.py	2015-02-09 14:35:44 +0000
+++ src/postorius/tests/test_forms.py	2015-03-04 13:56:28 +0000
@@ -15,9 +15,7 @@
 # You should have received a copy of the GNU General Public License along with
 # Postorius.  If not, see <http://www.gnu.org/licenses/>.
 from django.utils import unittest
-
-from postorius.forms import UserPreferences, DomainNew
-
+from postorius.forms import UserPreferences, DomainNew, ListNew, UserNew
 
 class UserPreferencesTest(unittest.TestCase):
 
@@ -32,20 +30,78 @@
 
 class DomainNewTest(unittest.TestCase):
 
+    def setUp(self):
+        self.form_data = {
+            'mail_host': 'mailman.most-desirable.org',
+            'web_host': 'http://mailman.most-desirable.org',
+            'description': 'The Most Desirable organization',
+            'contact_address': 'cont...@mailman.most-desirable.org',
+        }
+
     def test_form_fields_webhost(self):
-        form = DomainNew({
-            'mail_host': 'mailman.most-desirable.org',
-            'web_host': 'http://mailman.most-desirable.org',
-            'description': 'The Most Desirable organization',
-            'contact_address': 'cont...@mailman.most-desirable.org',
-        })
+        form = DomainNew(self.form_data)
         self.assertTrue(form.is_valid())
 
     def test_form_fields_webhost_invalid(self):
-        form = DomainNew({
+        self.form_data['web_host'] = 'mailman.most-desirable.org'
+        form = DomainNew(self.form_data)
+        self.assertFalse(form.is_valid())
+
+    def test_form_fields_mailhost(self):
+        form = DomainNew(self.form_data)
+        self.assertTrue(form.is_valid())
+
+    def test_form_fields_mailhost_invalid(self):
+        self.form_data['mail_host'] = 'mailman.most-desirable..org'
+        form = DomainNew(self.form_data)
+        self.assertFalse(form.is_valid())
+
+class ListNewTest(unittest.TestCase):
+
+    def setUp(self):
+        self.choosable_domains = [('mailman.most-desirable.org', 'mailman.most-desirable.org')]
+        
+        self.form_data = {
+            'listname' : 'test_list1',
             'mail_host': 'mailman.most-desirable.org',
-            'web_host': 'mailman.most-desirable.org',
+            'list_owner': 'ja...@example.com',
+            'advertised': 'True',
             'description': 'The Most Desirable organization',
-            'contact_address': 'cont...@mailman.most-desirable.org',
-        })
-        self.assertFalse(form.is_valid())
+        }
+
+    def test_form_fields_listname(self):
+        form = ListNew(self.choosable_domains,self.form_data)
+        self.assertTrue(form.is_valid())    
+
+    def test_form_fields_listname_invalid(self):
+        self.form_data['listname'] = 'test$list1'
+        form = ListNew(self.choosable_domains,self.form_data)
+        self.assertFalse(form.is_valid())
+
+class UserNewTest(unittest.TestCase): 
+
+    def setUp(self):
+        self.form_data = {
+            'display_name' : 'Pranjal Yadav',
+            'email' : 'pran...@example.com',
+            'password' : 'password123',                   
+            'password_repeat' : 'password123',
+        }
+
+    def test_form_fields_password(self):
+        form = UserNew(self.form_data)
+        self.assertTrue(form.is_valid())
+
+    def test_form_fields_password_invalid(self):
+        self.form_data['password_repeat'] = 'random'
+        form = UserNew(self.form_data)
+        self.assertFalse(form.is_valid())
+
+    def test_form_fields_email(self):
+        form = UserNew(self.form_data)
+        self.assertTrue(form.is_valid())
+
+    def test_form_fields_email_invalid(self):
+        self.form_data['email'] = 'pran...@example..com'
+        form = UserNew(self.form_data)
+        self.assertFalse(form.is_valid())
\ No newline at end of file

_______________________________________________
Mailman-coders mailing list
Mailman-coders@python.org
https://mail.python.org/mailman/listinfo/mailman-coders

Reply via email to