from django.test import TestCase import datetime from django.utils import timezone from dateutil.relativedelta import relativedelta from users.models import User from .models import Vente, Facture, Cotisation, Paiement class VenteModelTests(TestCase): def setUp(self): self.user = User.objects.create( pseudo="testUser", email="test@example.org" ) self.paiement = Paiement.objects.create( moyen="test payment" ) self.f = Facture.objects.create( user=self.user, paiement=self.paiement, valid=True ) def test_one_day_cotisation(self): """ It should be possible to have one day membership. """ date = timezone.now() purchase = Vente.objects.create( facture=self.f, 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=1), delta=datetime.timedelta(seconds=1) ) def test_one_month_cotisation(self): """ It should be possible to have one day membership. """ date = timezone.now() purchase = Vente.objects.create( facture=self.f, number=1, name="Test purchase", duration=1, duration_days=0, type_cotisation="All", prix=0, ) delta = relativedelta(self.user.end_connexion(), date) delta.microseconds=0 self.assertEqual( delta, relativedelta(months=1), ) def test_one_month_and_one_week_cotisation(self): """ It should be possible to have one day membership. """ date = timezone.now() purchase = Vente.objects.create( facture=self.f, number=1, name="Test purchase", duration=1, duration_days=7, type_cotisation="All", prix=0, ) delta = relativedelta(self.user.end_connexion(), date) delta.microseconds=0 self.assertEqual( delta, relativedelta(months=1, days=7), ) def tearDown(self): self.f.delete() self.user.delete() self.paiement.delete()