Skip to content

Commit

Permalink
parkstay.tests: improve coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Scott Percival committed Feb 16, 2018
1 parent f62aba0 commit 2a51ddc
Showing 1 changed file with 64 additions and 3 deletions.
67 changes: 64 additions & 3 deletions parkstay/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from ledger.accounts.models import EmailUser

from parkstay import models as ps
from parkstay import utils, models as ps
from parkstay.exceptions import BookingRangeWithinException

import datetime
Expand Down Expand Up @@ -42,7 +42,7 @@ def setUp(self):

# NOTE: don't need these, change booking ranges to have allow overlapping, absence imply open
# keep as an example for new tests
"""
"""
def _range_overlap_check(self, model, target, kwargs):
br1 = model.objects.create(range_start=datetime.date(2018, 1, 10), range_end=datetime.date(2018, 1, 15), **kwargs)
Expand Down Expand Up @@ -87,6 +87,67 @@ def test_campsite_range_overlap(self):
cs = ps.Campsite.objects.get(name='Campsite 1a')
cs.booking_ranges.all().delete()
self._range_overlap_check(ps.CampsiteBookingRange, cs, {'campsite': cs})
"""
"""

def test_utils_availability(self):
cg1 = ps.Campground.objects.get(name='Campground 1')
cg2 = ps.Campground.objects.get(name='Campground 2')
cs1a= ps.Campsite.objects.get(name='Campsite 1a')
cs1b= ps.Campsite.objects.get(name='Campsite 1b')
cs2a= ps.Campsite.objects.get(name='Campsite 2a')
cs2b= ps.Campsite.objects.get(name='Campsite 2b')

base_date = datetime.date.today()
ext_date = lambda x: base_date+datetime.timedelta(days=x)

cb1 = ps.CampgroundBookingRange.objects.create(
campground=cg1,
range_start=ext_date(10),
range_end=None,
status=1,
)
cb2 = ps.CampsiteBookingRange.objects.create(
campsite=cs2a,
range_start=ext_date(12),
range_end=None,
status=1
)
cb3 = ps.CampsiteBookingRange.objects.create(
campsite=cs2b,
range_start=ext_date(14),
range_end=ext_date(20),
status=1
)

cs_qs = ps.Campsite.objects.all()
# check for overlap of campground/campsite closures
self.assertEqual(utils.get_open_campgrounds(cs_qs, ext_date(1), ext_date(8)), set((cg1.pk, cg2.pk)))
self.assertEqual(utils.get_open_campgrounds(cs_qs, ext_date(8), ext_date(14)), set((cg2.pk,)))
self.assertEqual(utils.get_open_campgrounds(cs_qs, ext_date(10), ext_date(14)), set((cg2.pk,)))
self.assertEqual(utils.get_open_campgrounds(cs_qs, ext_date(10), ext_date(15)), set())
# check for earlier-than-today cutoff
self.assertEqual(utils.get_open_campgrounds(cs_qs, ext_date(-1), ext_date(8)), set())

av1 = utils.get_campsite_availability(cs_qs, ext_date(-1), ext_date(15))
# check for campsite closures
for d in [ext_date(x) for x in range(10, 15)]:
self.assertEqual(tuple(av1[cs1a.pk][d]), ('closed',))
self.assertEqual(tuple(av1[cs1b.pk][d]), ('closed',))

for d in [ext_date(x) for x in range(12, 15)]:
self.assertEqual(tuple(av1[cs2a.pk][d]), ('closed',))

for d in [ext_date(x) for x in range(14, 15)]:
self.assertEqual(tuple(av1[cs2b.pk][d]), ('closed',))

# check for earlier-than-today cutoff
for cs in cs_qs:
self.assertEqual(tuple(av1[cs.pk][ext_date(-1)]), ('tooearly',))

# check for far future cutoff
max_adv = cg2.max_advance_booking
av2 = utils.get_campsite_availability(ps.Campsite.objects.filter(id=cs2b.pk), ext_date(max_adv+1), ext_date(max_adv+3))
print(av2[cs2b.pk])
for i in range(max_adv+1, max_adv+3):
self.assertEqual(tuple(av2[cs2b.pk][ext_date(i)]), ('toofar',) if i > max_adv else ('open',))

0 comments on commit 2a51ddc

Please sign in to comment.