Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from datetime import datetime, timezone, timedelta
2from django.test import TestCase
3from policorp.serializers import AvailabilitySerializer, TaskSerializer, LocationSerializer
4from policorp.models import User, Location, Booking, Task, Availability
6class TestAvailabilitySerializer(TestCase):
8 fixtures = ['testsdata.json']
10 def test_availabilitySerializer_serialize(self):
12 # Availability
13 now = datetime.now(timezone.utc)
14 tomorrow = now + timedelta(days = 1)
15 loc_name = "Buenos Aires"
16 l1 = Location.objects.create_location(loc_name)
17 task_name = "Device Installation"
18 t1 = Task.objects.create_task(task_name, 30)
19 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
21 serializer = AvailabilitySerializer(instance=a1)
22 data = serializer.data
23 self.assertEqual(set(data.keys()), set(['id', 'when', 'where', 'what', 'booked']))
24 self.assertEqual(data['booked'], False)
25 self.assertEqual(datetime.fromisoformat(data['when']), tomorrow)
26 self.assertEqual(data['what'], TaskSerializer(instance=t1).data)
27 self.assertEqual(data['where'], LocationSerializer(instance=l1).data)
29 def test_availabilitySerializer_deserialize(self):
31 now = datetime.now(tz=timezone.utc)
32 locationid = 1
33 taskid = 1
34 availability = {
35 'when': now.isoformat(),
36 'where': locationid,
37 'what': taskid
38 }
40 serializer = AvailabilitySerializer(data=availability)
42 self.assertTrue(serializer.is_valid())
43 self.assertEqual(serializer.validated_data.get('what'), Task.objects.get(pk=taskid))
44 self.assertEqual(serializer.validated_data.get('where'), Location.objects.get(pk=locationid))
46 def test_availabilitySerializer_save_availability_after_deserialize(self):
48 # Deserialize an availability from data
49 now = datetime.now(tz=timezone.utc)
50 locationid = 1
51 taskid = 1
52 availability = {
53 'when': now.isoformat(),
54 'where': locationid,
55 'what': taskid
56 }
57 serializer = AvailabilitySerializer(data=availability)
59 # Save it
60 if (serializer.is_valid()):
61 availabilityObj = serializer.save()
62 self.assertEqual(availabilityObj.when, now)
63 self.assertEqual(availabilityObj.where, Location.objects.get(pk=locationid))
64 self.assertEqual(availabilityObj.what, Task.objects.get(pk=taskid))
65 self.assertEqual(availabilityObj.booked, False)