Voucher is_valid property
This commit is contained in:
parent
ae915681ac
commit
ab3ecae54b
@ -49,6 +49,10 @@ class Voucher(Expireable):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
code = models.CharField(unique=True, max_length=30)
|
code = models.CharField(unique=True, max_length=30)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def valid(self):
|
||||||
|
return not self.is_expired
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "Voucher " + str(self.code)
|
return "Voucher " + str(self.code)
|
||||||
|
76
django_lostplaces/lostplaces/tests/forms/__init__.py
Normal file
76
django_lostplaces/lostplaces/tests/forms/__init__.py
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
from django.core.exceptions import FieldDoesNotExist
|
||||||
|
|
||||||
|
class FormTestCase(TestCase):
|
||||||
|
'''
|
||||||
|
Base class for FormTests.
|
||||||
|
Parameters:
|
||||||
|
- form : Form to test
|
||||||
|
'''
|
||||||
|
form = None
|
||||||
|
|
||||||
|
def assertField(self, field_name, field_class, must_have={}, must_not_have={}):
|
||||||
|
'''
|
||||||
|
Tests if a field exists under the given name and
|
||||||
|
if the field is of the right type.
|
||||||
|
Also checks if the field has the given must_have attributes
|
||||||
|
and does not have any of the must_not_have attributes. If you
|
||||||
|
dont care about the value of the attribute you can just set it to
|
||||||
|
something that fullfills value == False (i.e. '' or 0)
|
||||||
|
'''
|
||||||
|
try:
|
||||||
|
field = self.form.base_fields[field_name]
|
||||||
|
except FieldDoesNotExist:
|
||||||
|
self.fail(
|
||||||
|
'Expecting %s to have a field named \'%s\'' % (
|
||||||
|
self.form.__name__,
|
||||||
|
field_name
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
type(field), field_class,
|
||||||
|
msg='Expecting type of %s to be %s' % (
|
||||||
|
str(field),
|
||||||
|
field_class.__name__
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for key, value in must_have.items():
|
||||||
|
if value:
|
||||||
|
self.assertEqual(
|
||||||
|
getattr(field, key), value,
|
||||||
|
msg='Expeting the value of %s %s to be \'%s\'' % (
|
||||||
|
str(field),
|
||||||
|
key,
|
||||||
|
value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.assertTrue(
|
||||||
|
hasattr(field, key),
|
||||||
|
msg='Expeting %s to have \'%s\'' % (
|
||||||
|
str(field),
|
||||||
|
key
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
for key, value in must_not_have.items():
|
||||||
|
if value:
|
||||||
|
self.assertTrue(
|
||||||
|
getattr(field, key) != value,
|
||||||
|
msg='Expeting the value of %s %s to not be \'%s\'' % (
|
||||||
|
str(field),
|
||||||
|
key,
|
||||||
|
value
|
||||||
|
)
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
self.assertFalse(
|
||||||
|
hasattr(field, value),
|
||||||
|
msg='Expeting %s to not have \'%s\'' % (
|
||||||
|
str(field),
|
||||||
|
key
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
return field
|
@ -0,0 +1,59 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
|
from django import forms
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
|
from lostplaces.tests.forms import FormTestCase
|
||||||
|
from lostplaces.forms import ExplorerCreationForm
|
||||||
|
from lostplaces.models.models import Voucher
|
||||||
|
|
||||||
|
class ExplorerCreationFormTestCase(FormTestCase):
|
||||||
|
"""
|
||||||
|
This test case only tests for the voucher since all other aspects don't realy matter
|
||||||
|
to this project and are already tested by django
|
||||||
|
"""
|
||||||
|
form = ExplorerCreationForm
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
Voucher.objects.create(
|
||||||
|
code='Imacode123',
|
||||||
|
expires_when=timezone.now() + datetime.timedelta(minutes=1)
|
||||||
|
)
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.post_data = {
|
||||||
|
'voucher': 'Imacode123',
|
||||||
|
'username': 'testpeter',
|
||||||
|
'email': 'testpeter@example.org',
|
||||||
|
'password1': 'Develop123',
|
||||||
|
'password2': 'Develop123'
|
||||||
|
}
|
||||||
|
|
||||||
|
def test_voucher_field(self):
|
||||||
|
self.assertField(
|
||||||
|
field_name='voucher',
|
||||||
|
field_class=forms.CharField
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_validation_valid(self):
|
||||||
|
form = ExplorerCreationForm(self.post_data)
|
||||||
|
self.assertTrue(
|
||||||
|
form.is_valid(),
|
||||||
|
msg='Expecting the %s to validate' % (
|
||||||
|
self.form.__name__
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_validation_invalid(self):
|
||||||
|
self.post_data = {
|
||||||
|
'voucher': 'Imanotacode123'
|
||||||
|
}
|
||||||
|
form = ExplorerCreationForm(self.post_data)
|
||||||
|
self.assertFalse(
|
||||||
|
form.is_valid(),
|
||||||
|
msg='Expecting the %s to not validate' % (
|
||||||
|
self.form.__name__
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user