summaryrefslogtreecommitdiffstats
path: root/src/booking/tests/test_stats.py
blob: 55013558ccc5de61268dfbf15e945839daa56352 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#############################################################################
# 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]])