Skip to content
Snippets Groups Projects
test_models.py 2.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • from datetime import date, timedelta
    
    from django.core.exceptions import ValidationError
    
    from django.test import TestCase
    
    
    from opentech.apply.funds.workflow import SingleStage
    
    from .factories import FundTypeFactory, RoundFactory
    
    
    class TestFundModel(TestCase):
        def test_can_access_workflow_class(self):
    
            fund = FundTypeFactory(parent=None)
    
            self.assertEqual(fund.workflow, 'single')
            self.assertEqual(fund.workflow_class, SingleStage)
    
    
    
    class TestRoundModel(TestCase):
        def setUp(self):
            self.fund = FundTypeFactory(parent=None)
    
        def make_round(self, **kwargs):
            data = {'parent': self.fund}
            data.update(kwargs)
            return RoundFactory(**data)
    
        def test_normal_start_end_doesnt_error(self):
            self.make_round()
    
        def test_end_before_start(self):
            yesterday = date.today() + timedelta(days=-1)
            with self.assertRaises(ValidationError):
                self.make_round(end_date=yesterday)
    
        def test_end_overlaps(self):
            existing_round = self.make_round()
            overlapping_end = existing_round.end_date - timedelta(-1)
            start = existing_round.start_date - timedelta(-1)
            with self.assertRaises(ValidationError):
                self.make_round(start_date=start, end_date=overlapping_end)
    
        def test_start_overlaps(self):
            existing_round = self.make_round()
            overlapping_start = existing_round.start_date + timedelta(1)
            end = existing_round.end_date + timedelta(1)
            with self.assertRaises(ValidationError):
                self.make_round(start_date=overlapping_start, end_date=end)
    
        def test_inside_overlaps(self):
            existing_round = self.make_round()
            overlapping_start = existing_round.start_date + timedelta(1)
            overlapping_end = existing_round.end_date - timedelta(1)
            with self.assertRaises(ValidationError):
                self.make_round(start_date=overlapping_start, end_date=overlapping_end)
    
        def test_other_fund_not_impacting(self):
            self.make_round()
            new_fund = FundTypeFactory(parent=None)
            # Will share the same start and end dates
            self.make_round(parent=new_fund)