Skip to content

Commit

Permalink
fixes #43 fix signup pages
Browse files Browse the repository at this point in the history
Signed-off-by: Matias Varela <[email protected]>
  • Loading branch information
matuu committed Mar 4, 2019
1 parent ed21e3e commit 3bb9644
Show file tree
Hide file tree
Showing 4 changed files with 128 additions and 4 deletions.
Binary file added test_media/test_image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion website/members/forms.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
from django import forms
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils.timezone import now

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Row


from members.models import Person, Organization, Category
from members.models import Person, Organization, Category, Member


class SignupPersonForm(forms.ModelForm):
Expand Down Expand Up @@ -74,7 +75,10 @@ def save(self, commit=True):
person = super(SignupPersonForm, self).save(commit=False)
person.comments = (
"Se cargó a través del sitio web. Categoria seleccionada: %s." % category.name)
member = Member(registration_date=now(), category=category)
if commit:
member.save()
person.membership = member
person.save()
return person

Expand Down
3 changes: 2 additions & 1 deletion website/members/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.text import slugify

from django_extensions.db.models import TimeStampedModel

Expand Down Expand Up @@ -91,7 +92,7 @@ def __str__(self):
def picture_upload_path(instance, filename):
"""Customize the picture's upload path to MEDIA_ROOT/pictures/lastname_document.ext."""
ext = filename.split('.')[-1]
lastname = instance.last_name.lower().replace(' ', '')
lastname = slugify(instance.last_name.lower().replace(' ', ''))
return f"pictures/{lastname}_{instance.document_number}.{ext}"


Expand Down
123 changes: 121 additions & 2 deletions website/members/tests.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import os
import datetime
import tempfile

import logassert
from django.test import TestCase
from django.conf import settings
from django.test import TestCase, override_settings
from django.utils.timezone import now, make_aware
from django.urls import reverse

from members import logic, views
from members.models import Member, Patron, Category, PaymentStrategy, Quota
from members.models import (
Member, Patron, Category, PaymentStrategy, Quota, Person,
Organization)


DEFAULT_FEE = 100
Expand Down Expand Up @@ -43,6 +49,119 @@ def create_payment_strategy(platform=None, payer_id=None):
platform=platform, id_in_platform=payer_id, patron=patron)


def get_temporary_image():
image_path = os.path.join(settings.BASE_DIR, '..', 'test_media', 'test_image.png')
return open(image_path, 'rb')


@override_settings(MEDIA_ROOT=tempfile.gettempdir())
class SignupPagesTests(TestCase):

def test_get_signup_page(self):
response = self.client.get(reverse('signup'))
self.assertEqual(response.status_code, 200)
self.assertContains(response, reverse('signup_person'))
self.assertContains(response, reverse('signup_organization'))
self.assertTemplateUsed(response, 'members/signup_initial.html')

def test_get_signup_person_page(self):
response = self.client.get(reverse('signup_person'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'members/signup_form.html')

def test_get_signup_org_page(self):
response = self.client.get(reverse('signup_organization'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'members/signup_org_form.html')

def test_signup_submit_success(self):
# crear categoria
cat = Category.objects.create(name='Activo', description='', fee=50)

data = {
'category': cat.pk,
'first_name': 'Pepe',
'last_name': "Pompin",
'document_number': '124354656',
'email': '[email protected]',
'nationality': 'Argentino',
'marital_status': 'Soltero',
'occupation': 'Python dev',
'birth_date': '11/12/1999',
'street_address': 'Calle False 123',
'zip_code': '12345',
'city': 'Córdoba',
'province': 'Córdoba',
'country': 'Argentina',
'nickname': 'pepepin',
'picture': get_temporary_image()
}
response = self.client.get(reverse('signup_person'))
response = self.client.post(reverse('signup_person'), data=data)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse('signup_thankyou'))
person = Person.objects.get(nickname='pepepin')
self.assertEqual(person.first_name, 'Pepe')
self.assertEqual(person.email, '[email protected]')

def test_signup_submit_fail(self):
# crear categoria
cat = Category.objects.create(name='Activo', description='', fee=50)

data = {
'category': cat.pk,
'first_name': 'Pepe',
'last_name': "",
'document_number': '124354656',
'email': '[email protected]',
'nationality': 'Argentino',
'marital_status': 'Soltero',
'occupation': 'Python dev',
'birth_date': '11/12/1999',
'street_address': 'Calle False 123',
'zip_code': '12345',
'city': 'Córdoba',
'province': 'Córdoba',
'country': 'Argentina',
'nickname': 'pepepin',
'picture': get_temporary_image()
}
response = self.client.get(reverse('signup_person'))
response = self.client.post(reverse('signup_person'), data=data)
self.assertEqual(response.status_code, 200)
self.assertTrue("last_name" in response.context["form"].errors)

def test_signup_org_submit_success(self):
random_text = 'oihihepiuhsidufhaohfiubiufwieufh'
data = {
'name': 'Orga',
'contact_info': random_text,
'document_number': "3056456530",
'address': 'Calle False 123',
'social_media': '@orga',
}
response = self.client.get(reverse('signup_organization'))
response = self.client.post(reverse('signup_organization'), data=data)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse('signup_thankyou'))
orga = Organization.objects.get(name='Orga')
self.assertEqual(orga.contact_info, random_text)

def test_signup_org_submit_fail(self):
random_text = 'oihihepiuhsidufhaohfiubiufwieufh'
data = {
'name': '',
'contact_info': random_text,
'document_number': "3056456530",
'address': 'Calle False 123',
'social_media': '@orga',
}
response = self.client.get(reverse('signup_organization'))
response = self.client.post(reverse('signup_organization'), data=data)
self.assertEqual(response.status_code, 200)
self.assertTrue("name" in response.context["form"].errors)


class CreatePaymentTestCase(TestCase):
"""Tests for the simple payment creation."""

Expand Down

0 comments on commit 3bb9644

Please sign in to comment.