1from datetime import datetime, timedelta 2 3from django.core.exceptions import ImproperlyConfigured 4from django.db import models 5from django.test import TestCase 6 7from model_utils.managers import QueryManager 8from model_utils.models import TimeFramedModel 9from tests.models import TimeFrame, TimeFrameManagerAdded 10 11 12class TimeFramedModelTests(TestCase): 13 def setUp(self): 14 self.now = datetime.now() 15 16 def test_not_yet_begun(self): 17 TimeFrame.objects.create(start=self.now + timedelta(days=2)) 18 self.assertEqual(TimeFrame.timeframed.count(), 0) 19 20 def test_finished(self): 21 TimeFrame.objects.create(end=self.now - timedelta(days=1)) 22 self.assertEqual(TimeFrame.timeframed.count(), 0) 23 24 def test_no_end(self): 25 TimeFrame.objects.create(start=self.now - timedelta(days=10)) 26 self.assertEqual(TimeFrame.timeframed.count(), 1) 27 28 def test_no_start(self): 29 TimeFrame.objects.create(end=self.now + timedelta(days=2)) 30 self.assertEqual(TimeFrame.timeframed.count(), 1) 31 32 def test_within_range(self): 33 TimeFrame.objects.create(start=self.now - timedelta(days=1), 34 end=self.now + timedelta(days=1)) 35 self.assertEqual(TimeFrame.timeframed.count(), 1) 36 37 38class TimeFrameManagerAddedTests(TestCase): 39 def test_manager_available(self): 40 self.assertTrue(isinstance(TimeFrameManagerAdded.timeframed, QueryManager)) 41 42 def test_conflict_error(self): 43 with self.assertRaises(ImproperlyConfigured): 44 class ErrorModel(TimeFramedModel): 45 timeframed = models.BooleanField() 46