From c5d9b45f431acc632525d35aaf873fa7e703e1d8 Mon Sep 17 00:00:00 2001 From: Laetitia Getti Date: Fri, 17 Mar 2023 17:39:25 +0100 Subject: [PATCH] fonction is_ongoing et tests --- la_chariotte/order/models.py | 10 ++++++++++ la_chariotte/order/tests.py | 26 ++++++++++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/la_chariotte/order/models.py b/la_chariotte/order/models.py index 44a2619..5bec1f1 100644 --- a/la_chariotte/order/models.py +++ b/la_chariotte/order/models.py @@ -1,9 +1,19 @@ +import datetime + from django.db import models +from django.utils import timezone + class Grouped_order(models.Model): name = models.CharField(max_length=100, null=True) # optionnal orga = models.CharField(max_length=100) # a changer, utiliser ForeignKey de user date = models.DateField('Date de livraison') + deadline = models.DateTimeField('Date limite de commande') + + def is_ongoing(self): + """Returns True if the grouped order is open for new Orders - False if it's too late""" + return self.deadline >= timezone.now() + def __str__(self): return self.name if self.name else f"Commande groupée {self.pk} du {self.date} organisée par {self.orga}" diff --git a/la_chariotte/order/tests.py b/la_chariotte/order/tests.py index 7ce503c..37453f1 100644 --- a/la_chariotte/order/tests.py +++ b/la_chariotte/order/tests.py @@ -1,3 +1,25 @@ -from django.test import TestCase +import datetime + +from django.test import TestCase +from django.utils import timezone +from .models import Grouped_order + + +class GroupedOrderModelTests(TestCase): + + def test_is_ongoing_with_ongoing_grouped_order(self): + """ + is_ongoing() returns True if the deadline is not crossed + """ + deadline = timezone.now() + datetime.timedelta(days=10) + ongoing_gr_order = Grouped_order(deadline=deadline) + self.assertIs(ongoing_gr_order.is_ongoing(), True) + + def test_is_ongoing_with_old_grouped_order(self): + """ + is_ongoing() returns False if the deadline is crossed + """ + deadline = timezone.now() - datetime.timedelta(hours=1) + ongoing_gr_order = Grouped_order(deadline=deadline) + self.assertIs(ongoing_gr_order.is_ongoing(), False) -# Create your tests here.