Skip to content

Commit

Permalink
refactored tests layout
Browse files Browse the repository at this point in the history
  • Loading branch information
tuxcanfly committed Apr 1, 2013
1 parent 45fb92c commit 605b2cc
Show file tree
Hide file tree
Showing 12 changed files with 67 additions and 222 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ python:
# command to install dependencies
install: "pip install -r requirements.txt --use-mirrors"
# command to run tests
script: python manage.py test parsley
script: ./runtests.py
Empty file removed django_parsley/__init__.py
Empty file.
152 changes: 0 additions & 152 deletions django_parsley/settings.py

This file was deleted.

17 changes: 0 additions & 17 deletions django_parsley/urls.py

This file was deleted.

28 changes: 0 additions & 28 deletions django_parsley/wsgi.py

This file was deleted.

5 changes: 0 additions & 5 deletions parsley/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +0,0 @@
#Django requires every app to have models.
from django.db import models

class Student(models.Model):
name = models.CharField(max_length=100)
1 change: 1 addition & 0 deletions parsley/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from .tests import *
4 changes: 2 additions & 2 deletions parsley/forms.py → parsley/tests/forms.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from django import forms
from .decorators import parsleyfy
from parsley.decorators import parsleyfy
from .models import Student


Expand Down Expand Up @@ -74,4 +74,4 @@ class FormWithCustomChoices(forms.Form):
def __init__(self, *args, **kwargs):
super(FormWithCustomChoices, self).__init__(*args, **kwargs)
self.fields['state'] = forms.ChoiceField(
choices=get_state_choices())
choices=get_state_choices())
5 changes: 5 additions & 0 deletions parsley/tests/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#Django requires every app to have models.
from django.db import models

class Student(models.Model):
name = models.CharField(max_length=100)
32 changes: 15 additions & 17 deletions parsley/tests.py → parsley/tests/tests.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
from django.test import TestCase
from django import forms

from .forms import TextForm, TextForm2, FieldTypeForm, FormWithWidgets, \
StudentModelForm, FormWithCleanField, FormWithCustomInit, \
FormWithCustomChoices
from .decorators import parsleyfy
from parsley.decorators import parsleyfy

from .forms import (TextForm, TextForm2, FieldTypeForm, FormWithWidgets,
StudentModelForm, FormWithCleanField, FormWithCustomInit,
FormWithCustomChoices)


class CharFieldTest(TestCase):
def test_basic(self):
Expand All @@ -20,13 +22,15 @@ def test_basic(self):
self.assertEqual(form.fields["name"].widget.attrs, {"data-required": "true"})
self.assertEqual(form.fields["university"].widget.attrs, {})


class CharFieldDecoratedTest(TestCase):
def test_decorated(self):
"Tests that parsleyfy works as a class Decorator"
form = TextForm2()
self.assertEqual(form.fields["name"].widget.attrs, {"data-required": "true"})
self.assertEqual(form.fields["university"].widget.attrs, {})


class FieldTypeFormTest(TestCase):
def test_fields(self):
"Tests that parsleyfy adds data-required for things other than CharField"
Expand All @@ -37,6 +41,7 @@ def test_fields(self):
self.assertEqual(fields["email"].widget.attrs["data-required"], "true")
self.assertFalse("data-required" in fields["email2"].widget.attrs)


class DataTypeTest(TestCase):
def test_data_types(self):
"Test that different field types get correct data-type"
Expand All @@ -51,6 +56,7 @@ def test_data_types(self):
self.assertEqual(fields["income2"].widget.attrs["data-type"], "number")
self.assertEqual(fields["topnav"].widget.attrs["data-regexp"], "#[A-Fa-f0-9]{6}")


class LengthTest(TestCase):
def test_length(self):
form = FieldTypeForm()
Expand All @@ -71,13 +77,15 @@ def test_value(self):
self.assertEqual(num_attrs["data-min"], 10)
self.assertEqual(num_attrs["data-max"], 100)


class FormWithWidgetsTest(TestCase):
def test_widgets(self):
"Assert that @parsleyfy doesn't cloober existing attrs"
form = FormWithWidgets()
self.assertTrue(form.fields["description"].widget, forms.TextInput)
self.assertEqual("highlight", form.fields["blurb"].widget.attrs["class"])


class TestMetadata(TestCase):
def test_docstring(self):
form1 = TextForm()
Expand All @@ -104,7 +112,8 @@ def test_model_form(self):

def test_model_form_save(self):
form = StudentModelForm({"name": "Luke Skywalker"})
form.save()
form.save(commit=False)


class TestCustomInit(TestCase):
def test_custom_init(self):
Expand All @@ -117,6 +126,7 @@ def test_custom_choices(self):
self.assertEqual(form.fields['state'].choices,
[("NY", "NY"), ("OH", "OH")])


class TestCleanFields(TestCase):
def test_clean(self):
form = FormWithCleanField(data={"description": "foo"})
Expand All @@ -129,15 +139,3 @@ def test_clean_parslyfied(self):
self.assertEqual(form.is_bound, True)
self.assertEqual(form.is_valid(), False)
self.assertTrue(hasattr(form, "clean_description"))












File renamed without changes.
43 changes: 43 additions & 0 deletions runtests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/usr/bin/env python

import sys
import os
from os.path import dirname, abspath
from optparse import OptionParser

from django.conf import settings

# For convenience configure settings if they are not pre-configured or if we
# haven't been provided settings to use by environment variable.
if not settings.configured and not os.environ.get('DJANGO_SETTINGS_MODULE'):
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.sqlite3',
}
},
INSTALLED_APPS=[
'parsley',
],
)

from django.test.simple import DjangoTestSuiteRunner


def runtests(*test_args, **kwargs):
if not test_args:
test_args = ['parsley']
parent = dirname(abspath(__file__))
sys.path.insert(0, parent)
test_runner = DjangoTestSuiteRunner(
verbosity=kwargs.get('verbosity', 1),
interactive=kwargs.get('interactive', False),
failfast=kwargs.get('failfast'))
failures = test_runner.run_tests(test_args)
sys.exit(failures)

if __name__ == '__main__':
parser = OptionParser()
parser.add_option('--failfast', action='store_true', default=False, dest='failfast')
(options, args) = parser.parse_args()
runtests(failfast=options.failfast, *args)

0 comments on commit 605b2cc

Please sign in to comment.