############################################################################# # Copyright (c) 2018 Parker Berberian, Sawyer Bergeron, Sean Smith, and others. # # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## import pytz from datetime import timedelta, datetime from django.test import TestCase from booking.models import Booking from booking.stats import StatisticsManager as sm from dashboard.testing_utils import make_user class StatsTestCases(TestCase): def test_no_booking_outside_span(self): now = datetime.now(pytz.utc) bad_date = now + timedelta(days=1200) Booking.objects.create(start=now, end=bad_date, owner=make_user(username='jj')) actual = sm.getContinuousBookingTimeSeries() dates = actual['booking'][0] for date in dates: self.assertNotEqual(date, bad_date) def check_booking_and_user_counts(self): now = datetime.now(pytz.utc) for i in range(20): Booking.objects.create( start=now, end=now + timedelta(weeks=3), owner=make_user(username='a')) for i in range(30): Booking.objects.create( start=now + timedelta(days=5), end=now + timedelta(weeks=3, days=5), owner=make_user(username='a')) for i in range(120): Booking.objects.create( start=now + timedelta(weeks=1), end=now + timedelta(weeks=4), owner=make_user(username='a')) dates = [[now, 20], [now + timedelta(days=5), 30], [now + timedelta(weeks=1), 120]] actual = sm.getContinuousBookingTimeSeries() for date in dates: self.assertEqual(date[1], actual['booking'][date[0]]) self.assertEqual(date[1], actual['booking'][date[1]])