1 from datetime import timedelta
3 from django.contrib import auth
4 from django.test import Client
5 from django.utils import timezone
6 from django.contrib.auth.models import Permission
7 from django.test import TestCase
8 from django.urls import reverse
9 from django.utils.encoding import force_text
10 from registration.forms import User
12 from account.models import UserProfile
13 from booking.models import Booking
14 from dashboard.models import Resource
15 from jenkins.models import JenkinsSlave
18 class BookingViewTestCase(TestCase):
20 self.client = Client()
21 self.slave = JenkinsSlave.objects.create(name='test', url='test')
22 self.owner = User.objects.create(username='owner')
23 self.res1 = Resource.objects.create(name='res1', slave=self.slave, description='x',
24 url='x',owner=self.owner)
25 self.user1 = User.objects.create(username='user1')
26 self.user1.set_password('user1')
27 self.user1profile = UserProfile.objects.create(user=self.user1)
30 self.add_booking_perm = Permission.objects.get(codename='add_booking')
31 self.user1.user_permissions.add(self.add_booking_perm)
33 self.user1 = User.objects.get(pk=self.user1.id)
36 def test_resource_bookings_json(self):
37 url = reverse('booking:bookings_json', kwargs={'resource_id': 0})
38 self.assertEqual(self.client.get(url).status_code, 404)
40 url = reverse('booking:bookings_json', kwargs={'resource_id': self.res1.id})
41 response = self.client.get(url)
42 self.assertEqual(response.status_code, 200)
43 self.assertJSONEqual(force_text(response.content), {"bookings": []})
44 booking1 = Booking.objects.create(start=timezone.now(),
45 end=timezone.now() + timedelta(weeks=1), user=self.user1,
47 response = self.client.get(url)
48 json = response.json()
49 self.assertEqual(response.status_code, 200)
50 self.assertIn('bookings', json)
51 self.assertEqual(len(json['bookings']), 1)
52 self.assertIn('start', json['bookings'][0])
53 self.assertIn('end', json['bookings'][0])
54 self.assertIn('id', json['bookings'][0])
55 self.assertIn('purpose', json['bookings'][0])
57 def test_booking_form_view(self):
58 url = reverse('booking:create', kwargs={'resource_id': 0})
59 self.assertEqual(self.client.get(url).status_code, 404)
62 url = reverse('booking:create', kwargs={'resource_id': self.res1.id})
63 self.client.login(username='user1',password='user1')
64 response = self.client.get(url)
65 self.assertEqual(response.status_code, 200)
66 self.assertTemplateUsed('booking/booking_calendar.html')
67 self.assertTemplateUsed('booking/booking_form.html')
68 self.assertIn('resource', response.context)