8
0
Fork 0
mirror of https://gitlab.federez.net/re2o/re2o synced 2024-05-16 23:56:12 +00:00
re2o/cotisations/test_views.py

149 lines
5.2 KiB
Python
Raw Normal View History

2019-11-03 23:25:29 +00:00
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
2019-11-03 23:25:29 +00:00
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")
2019-11-03 23:25:29 +00:00
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"
),
2019-11-03 23:25:29 +00:00
]
)
self.user.save()
self.paiement = Paiement.objects.create(moyen="test payment")
2019-11-03 23:25:29 +00:00
self.article_one_day = Article.objects.create(
name="One day",
prix=0,
duration_connection=0,
duration_days_connection=1,
duration_membership=0,
duration_days_membership=1,
available_for_everyone=True,
2019-11-03 23:25:29 +00:00
)
self.article_one_month = Article.objects.create(
name="One mounth",
2019-11-03 23:25:29 +00:00
prix=0,
duration_connection=1,
duration_days_connection=0,
duration_membership=1,
duration_days_membership=0,
available_for_everyone=True,
2019-11-03 23:25:29 +00:00
)
self.article_one_month_and_one_week = Article.objects.create(
name="One mounth and one week",
2019-11-03 23:25:29 +00:00
prix=0,
duration_connection=1,
duration_days_connection=7,
duration_membership=1,
duration_days_membership=7,
available_for_everyone=True,
2019-11-03 23:25:29 +00:00
)
self.client.login(username="testUser", password="plopiplop")
2019-11-03 23:25:29 +00:00
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
2019-11-03 23:25:29 +00:00
)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, "/users/profil/%d" % self.user.pk)
2019-11-03 23:25:29 +00:00
self.assertAlmostEqual(
self.user.end_connexion() - date,
datetime.timedelta(days=1),
delta=datetime.timedelta(seconds=1),
2019-11-03 23:25:29 +00:00
)
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
2019-11-03 23:25:29 +00:00
)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, "/users/profil/%d" % self.user.pk)
2019-11-03 23:25:29 +00:00
delta = relativedelta(self.user.end_connexion(), date)
delta.microseconds = 0
self.assertEqual(delta, relativedelta(months=1))
2019-11-03 23:25:29 +00:00
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
2019-11-03 23:25:29 +00:00
)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, "/users/profil/%d" % self.user.pk)
2019-11-03 23:25:29 +00:00
invoice = self.user.facture_set.first()
delta = relativedelta(self.user.end_connexion(), date)
delta.microseconds = 0
self.assertEqual(delta, relativedelta(months=1, days=7))
2019-11-03 23:25:29 +00:00
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
)
2019-11-03 23:25:29 +00:00
f = self.user.facture_set.first()
self.assertEqual(f.vente_set.count(), 2)