mirror of https://gitlab.federez.net/re2o/re2o
4 changed files with 274 additions and 2 deletions
@ -0,0 +1,166 @@ |
|||||
|
from django.test import TestCase |
||||
|
from django.urls import reverse |
||||
|
from django.contrib.auth.models import Permission |
||||
|
|
||||
|
import datetime |
||||
|
from dateutil.relativedelta import relativedelta |
||||
|
from django.utils import timezone |
||||
|
|
||||
|
from users.models import Adherent |
||||
|
from .models import Vente, Facture, Cotisation, Paiement, Article |
||||
|
|
||||
|
class NewFactureTests(TestCase): |
||||
|
def tearDown(self): |
||||
|
self.user.facture_set.all().delete() |
||||
|
self.user.delete() |
||||
|
self.paiement.delete() |
||||
|
self.article_one_day.delete() |
||||
|
self.article_one_month.delete() |
||||
|
self.article_one_month_and_one_week.delete() |
||||
|
|
||||
|
def setUp(self): |
||||
|
self.user = Adherent.objects.create( |
||||
|
pseudo="testUser", |
||||
|
email="test@example.org", |
||||
|
) |
||||
|
self.user.set_password('plopiplop') |
||||
|
self.user.user_permissions.set( |
||||
|
[ |
||||
|
Permission.objects.get_by_natural_key("add_facture", "cotisations", "Facture"), |
||||
|
Permission.objects.get_by_natural_key("use_every_payment", "cotisations", "Paiement"), |
||||
|
] |
||||
|
) |
||||
|
self.user.save() |
||||
|
|
||||
|
self.paiement = Paiement.objects.create( |
||||
|
moyen="test payment", |
||||
|
|
||||
|
) |
||||
|
self.article_one_day = Article.objects.create( |
||||
|
name="One day", |
||||
|
prix=0, |
||||
|
duration=0, |
||||
|
duration_days=1, |
||||
|
type_cotisation='All', |
||||
|
available_for_everyone=True |
||||
|
) |
||||
|
self.article_one_month = Article.objects.create( |
||||
|
name="One day", |
||||
|
prix=0, |
||||
|
duration=1, |
||||
|
duration_days=0, |
||||
|
type_cotisation='All', |
||||
|
available_for_everyone=True |
||||
|
) |
||||
|
self.article_one_month_and_one_week = Article.objects.create( |
||||
|
name="One day", |
||||
|
prix=0, |
||||
|
duration=1, |
||||
|
duration_days=7, |
||||
|
type_cotisation='All', |
||||
|
available_for_everyone=True |
||||
|
) |
||||
|
self.client.login( |
||||
|
username="testUser", |
||||
|
password="plopiplop" |
||||
|
) |
||||
|
|
||||
|
def test_invoice_with_one_day(self): |
||||
|
data = { |
||||
|
"Facture-paiement": self.paiement.pk, |
||||
|
"form-TOTAL_FORMS": 1, |
||||
|
"form-INITIAL_FORMS": 0, |
||||
|
"form-MIN_NUM_FORMS": 0, |
||||
|
"form-MAX_NUM_FORMS": 1000, |
||||
|
"form-0-article": 1, |
||||
|
"form-0-quantity": 1, |
||||
|
} |
||||
|
date = timezone.now() |
||||
|
response = self.client.post(reverse('cotisations:new-facture', kwargs={'userid':self.user.pk}), data) |
||||
|
self.assertEqual( |
||||
|
response.status_code, |
||||
|
302 |
||||
|
) |
||||
|
self.assertEqual( |
||||
|
response.url, |
||||
|
"/users/profil/%d"%self.user.pk |
||||
|
) |
||||
|
self.assertAlmostEqual( |
||||
|
self.user.end_connexion() - date, |
||||
|
datetime.timedelta(days=1), |
||||
|
delta=datetime.timedelta(seconds=1) |
||||
|
) |
||||
|
|
||||
|
def test_invoice_with_one_month(self): |
||||
|
data = { |
||||
|
"Facture-paiement": self.paiement.pk, |
||||
|
"form-TOTAL_FORMS": 1, |
||||
|
"form-INITIAL_FORMS": 0, |
||||
|
"form-MIN_NUM_FORMS": 0, |
||||
|
"form-MAX_NUM_FORMS": 1000, |
||||
|
"form-0-article": 2, |
||||
|
"form-0-quantity": 1, |
||||
|
} |
||||
|
date = timezone.now() |
||||
|
response = self.client.post(reverse('cotisations:new-facture', kwargs={'userid':self.user.pk}), data) |
||||
|
self.assertEqual( |
||||
|
response.status_code, |
||||
|
302 |
||||
|
) |
||||
|
self.assertEqual( |
||||
|
response.url, |
||||
|
"/users/profil/%d"%self.user.pk |
||||
|
) |
||||
|
delta = relativedelta(self.user.end_connexion(), date) |
||||
|
delta.microseconds=0 |
||||
|
self.assertEqual( |
||||
|
delta, |
||||
|
relativedelta(months=1), |
||||
|
) |
||||
|
|
||||
|
def test_invoice_with_one_month_and_one_week(self): |
||||
|
data = { |
||||
|
"Facture-paiement": self.paiement.pk, |
||||
|
"form-TOTAL_FORMS": 2, |
||||
|
"form-INITIAL_FORMS": 0, |
||||
|
"form-MIN_NUM_FORMS": 0, |
||||
|
"form-MAX_NUM_FORMS": 1000, |
||||
|
"form-0-article": 1, |
||||
|
"form-0-quantity": 7, |
||||
|
"form-1-article": 2, |
||||
|
"form-1-quantity": 1, |
||||
|
} |
||||
|
date = timezone.now() |
||||
|
response = self.client.post(reverse('cotisations:new-facture', kwargs={'userid':self.user.pk}), data) |
||||
|
self.assertEqual( |
||||
|
response.status_code, |
||||
|
302 |
||||
|
) |
||||
|
self.assertEqual( |
||||
|
response.url, |
||||
|
"/users/profil/%d"%self.user.pk |
||||
|
) |
||||
|
invoice = self.user.facture_set.first() |
||||
|
delta = relativedelta(self.user.end_connexion(), date) |
||||
|
delta.microseconds=0 |
||||
|
self.assertEqual( |
||||
|
delta, |
||||
|
relativedelta(months=1, days=7), |
||||
|
) |
||||
|
|
||||
|
|
||||
|
def test_several_articles_creates_several_purchases(self): |
||||
|
data = { |
||||
|
"Facture-paiement": self.paiement.pk, |
||||
|
"form-TOTAL_FORMS": 2, |
||||
|
"form-INITIAL_FORMS": 0, |
||||
|
"form-MIN_NUM_FORMS": 0, |
||||
|
"form-MAX_NUM_FORMS": 1000, |
||||
|
"form-0-article": 2, |
||||
|
"form-0-quantity": 1, |
||||
|
"form-1-article": 2, |
||||
|
"form-1-quantity": 1, |
||||
|
} |
||||
|
response = self.client.post(reverse('cotisations:new-facture', kwargs={'userid':self.user.pk}), data) |
||||
|
f = self.user.facture_set.first() |
||||
|
self.assertEqual(f.vente_set.count(), 2) |
||||
@ -0,0 +1,51 @@ |
|||||
|
from django.test import TestCase |
||||
|
|
||||
|
import datetime |
||||
|
from django.utils import timezone |
||||
|
|
||||
|
from users.models import User |
||||
|
from cotisations.models import Vente, Facture, Paiement |
||||
|
|
||||
|
class UserModelTests(TestCase): |
||||
|
def setUp(self): |
||||
|
self.user = User.objects.create( |
||||
|
pseudo="testUser" |
||||
|
) |
||||
|
|
||||
|
def tearDown(self): |
||||
|
self.user.facture_set.all().delete() |
||||
|
self.user.delete() |
||||
|
|
||||
|
def test_multiple_cotisations_are_taken_into_account(self): |
||||
|
paiement = Paiement.objects.create( |
||||
|
moyen="test payment" |
||||
|
) |
||||
|
invoice = Facture.objects.create( |
||||
|
user=self.user, |
||||
|
paiement=paiement, |
||||
|
valid=True |
||||
|
) |
||||
|
date = timezone.now() |
||||
|
purchase1 = Vente.objects.create( |
||||
|
facture=invoice, |
||||
|
number=1, |
||||
|
name="Test purchase", |
||||
|
duration=0, |
||||
|
duration_days=1, |
||||
|
type_cotisation="All", |
||||
|
prix=0, |
||||
|
) |
||||
|
purchase2 = Vente.objects.create( |
||||
|
facture=invoice, |
||||
|
number=1, |
||||
|
name="Test purchase", |
||||
|
duration=0, |
||||
|
duration_days=1, |
||||
|
type_cotisation="All", |
||||
|
prix=0, |
||||
|
) |
||||
|
self.assertAlmostEqual( |
||||
|
self.user.end_connexion() - date, |
||||
|
datetime.timedelta(days=2), |
||||
|
delta=datetime.timedelta(seconds=1) |
||||
|
) |
||||
Loading…
Reference in new issue