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()