Hide keyboard shortcuts

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 

5 

6class TestAvailabilitySerializer(TestCase): 

7 

8 fixtures = ['testsdata.json'] 

9 

10 def test_availabilitySerializer_serialize(self): 

11 

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) 

20 

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) 

28 

29 def test_availabilitySerializer_deserialize(self): 

30 

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 } 

39 

40 serializer = AvailabilitySerializer(data=availability) 

41 

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)) 

45 

46 def test_availabilitySerializer_save_availability_after_deserialize(self): 

47 

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) 

58 

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)