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 django.test import TestCase
2from datetime import datetime, timedelta, time
3from django.utils import timezone
4from policorp.models import Availability, Booking, Location, Task
5from policorp.tests import aux
6import json
8class TestAvailability(TestCase):
10 def test_get_availability_all(self):
11 """ GIVEN 1 availability; WHEN requesting all availabilities; THEN 1 availability should be returned """
13 loc_name = "Buenos Aires"
14 l1 = Location.objects.create_location(loc_name)
15 task_name = "Device Installation"
16 t1 = Task.objects.create_task(task_name, 30)
17 a1 = Availability.objects.create_availability(datetime.now(timezone.utc), l1, t1)
18 self.assertEqual(len(Availability.objects.get_all()), 1)
20 def test_get_availability_all_ordered_by_date_ascendant_1(self):
21 """ GIVEN 3 availabilities; WHEN requesting all availabilities; THEN 3 availabilities should be returned in ascendant order by schedule date """
23 loc_name = "Buenos Aires"
24 l1 = Location.objects.create_location(loc_name)
25 task_name = "Device Installation"
26 t1 = Task.objects.create_task(task_name, 30)
27 now = datetime.now(timezone.utc)
28 a3 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
29 a1 = Availability.objects.create_availability(now + timedelta(days = 1), l1, t1)
30 a2 = Availability.objects.create_availability(now + timedelta(days = 2), l1, t1)
31 self.assertEqual(len(Availability.objects.get_all()), 3)
32 self.assertEqual(Availability.objects.get_all()[0], a1)
33 self.assertEqual(Availability.objects.get_all()[1], a2)
34 self.assertEqual(Availability.objects.get_all()[2], a3)
36 def test_get_availability_all_ordered_by_date_ascendant_2(self):
37 """ GIVEN 3 availabilities, 1 booked; WHEN requesting all availabilities; THEN 2 availabilities should be returned in ascendant order by schedule date """
39 loc_name = "Buenos Aires"
40 l1 = Location.objects.create_location(loc_name)
41 task_name = "Device Installation"
42 t1 = Task.objects.create_task(task_name, 30)
43 now = datetime.now(timezone.utc)
44 a3 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
45 a1 = Availability.objects.create_availability(now + timedelta(days = 1), l1, t1)
46 a2 = Availability.objects.create_availability(now + timedelta(days = 2), l1, t1)
47 a2.book()
48 self.assertEqual(len(Availability.objects.get_all()), 2)
49 self.assertIn(a1, Availability.objects.get_all())
50 self.assertIn(a3, Availability.objects.get_all())
51 self.assertTrue(Availability.objects.get_all()[0].when < Availability.objects.get_all()[1].when)
53 def test_get_availability_all_with_location(self):
54 """GIVEN 1 availability at Buenos Aires, tomorrow; WHEN requesting all availabilities; THEN 1 availability should be returned at Buenos Aires, tomorrow"""
56 now = datetime.now(timezone.utc)
57 tomorrow = now + timedelta(days = 1)
58 loc_name = "Buenos Aires"
59 l1 = Location.objects.create_location(loc_name)
60 task_name = "Device Installation"
61 t1 = Task.objects.create_task(task_name, 30)
62 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
63 self.assertEqual(len(Availability.objects.get_all()), 1)
64 availability = Availability.objects.get_all()[0]
65 self.assertEqual(availability.when, tomorrow)
66 self.assertEqual(availability.where.name, loc_name)
68 def test_get_availability_all_by_task(self):
69 """ GIVEN 1 availability at Cordoba, tomorrow, for "Device Installation", WHEN requesting all availabilities for "Device Installation", THEN 1 availability should be returned at Cordoba, tomorrow for "Device Installation" """
71 now = datetime.now(timezone.utc)
72 tomorrow = now + timedelta(days = 1)
73 loc_name = "Cordoba"
74 l1 = Location.objects.create_location(loc_name)
75 task_name = "Device Installation"
76 t1 = Task.objects.create_task(task_name, 30)
77 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
78 self.assertEqual(len(Availability.objects.get_all_by_task(task_name)), 1)
79 availability = Availability.objects.get_all_by_task(task_name)[0]
80 self.assertEqual(availability.when, tomorrow)
81 self.assertEqual(availability.where.name, loc_name)
82 self.assertEqual(availability.what.name, task_name)
84 def test_get_availability_all_by_task_ordered_by_date_ascendant_1(self):
85 """ GIVEN 3 availabilities, 1 for Device Installation, 2 for Repair; WHEN requesting all availabilities for "Repair"; THEN 2 availabilities should be returned in ascendant order by schedule date for task "Repair" """
87 loc_name = "Buenos Aires"
88 l1 = Location.objects.create_location(loc_name)
89 install = Task.objects.create_task("Device Installation", 30)
90 repair = Task.objects.create_task("Repair", 30)
91 now = datetime.now(timezone.utc)
92 a3 = Availability.objects.create_availability(now + timedelta(days = 3), l1, install)
93 a2 = Availability.objects.create_availability(now + timedelta(days = 2), l1, repair)
94 a1 = Availability.objects.create_availability(now + timedelta(days = 1), l1, repair)
95 self.assertEqual(len(Availability.objects.get_all_by_task(repair.name)), 2)
96 self.assertIn(a1, Availability.objects.get_all_by_task(repair.name))
97 self.assertIn(a2, Availability.objects.get_all_by_task(repair.name))
98 self.assertTrue(Availability.objects.get_all_by_task(repair.name)[0].when < Availability.objects.get_all_by_task(repair.name)[1].when)
99 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[0].what, repair)
100 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[1].what, repair)
102 def test_get_availability_all_by_task_ordered_by_date_ascendant_2(self):
103 """ GIVEN 3 availabilities, 1 for Device Installation, 2 for Repair; WHEN requesting all availabilities for "Repair"; THEN 2 availabilities should be returned in ascendant order by schedule date for task "Repair" """
105 loc_name = "Buenos Aires"
106 l1 = Location.objects.create_location(loc_name)
107 install = Task.objects.create_task("Device Installation", 30)
108 repair = Task.objects.create_task("Repair", 30)
109 now = datetime.now(timezone.utc)
110 a3 = Availability.objects.create_availability(now + timedelta(days = 3), l1, install)
111 a2 = Availability.objects.create_availability(now + timedelta(days = 1), l1, repair)
112 a1 = Availability.objects.create_availability(now + timedelta(days = 2), l1, repair)
113 self.assertEqual(len(Availability.objects.get_all_by_task(repair.name)), 2)
114 self.assertIn(a1, Availability.objects.get_all_by_task(repair.name))
115 self.assertIn(a2, Availability.objects.get_all_by_task(repair.name))
116 self.assertTrue(Availability.objects.get_all_by_task(repair.name)[0].when < Availability.objects.get_all_by_task(repair.name)[1].when)
117 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[0].what, repair)
118 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[1].what, repair)
120 def test_get_availability_all_by_task_ordered_by_date_ascendant_3(self):
121 """ GIVEN 3 availabilities, 1 for Device Installation, 2 for Repair, 1 Repair is boooked; WHEN requesting all availabilities for "Repair"; THEN 1 availabilities should be returned in ascendant order by schedule date for task "Repair" """
123 loc_name = "Buenos Aires"
124 l1 = Location.objects.create_location(loc_name)
125 install = Task.objects.create_task("Device Installation", 30)
126 repair = Task.objects.create_task("Repair", 30)
127 now = datetime.now(timezone.utc)
128 a3 = Availability.objects.create_availability(now + timedelta(days = 3), l1, install)
129 a2 = Availability.objects.create_availability(now + timedelta(days = 2), l1, repair)
130 a1 = Availability.objects.create_availability(now + timedelta(days = 1), l1, repair)
131 a1.book()
132 self.assertEqual(len(Availability.objects.get_all_by_task(repair.name)), 1)
133 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[0], a2)
134 self.assertEqual(Availability.objects.get_all_by_task(repair.name)[0].what, repair)
136 def test_availability_serialize(self):
137 loc_name = "Córdoba"
138 l1 = Location.objects.create_location(loc_name)
139 task_name = "Device Installation"
140 t1 = Task.objects.create_task(task_name, 30)
141 now = datetime.now(timezone.utc)
142 a1 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
144 expected = {'id': 1, 'when': (now + timedelta(days = 3)).isoformat(), 'where': l1.json(), 'what': t1.json()}
145 self.assertEqual(a1.json()["when"], (now + timedelta(days = 3)).isoformat())
146 self.assertJSONEqual(json.dumps(a1.json()["where"]), json.dumps(l1.json()))
147 self.assertJSONEqual(json.dumps(a1.json()["what"]), json.dumps(t1.json()))
149 def test_availability_booked_initially_false(self):
150 """ New availability should be not booked by default """
151 loc_name = "Córdoba"
152 l1 = Location.objects.create_location(loc_name)
153 task_name = "Device Installation"
154 t1 = Task.objects.create_task(task_name, 30)
155 now = datetime.now(timezone.utc)
156 a1 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
158 self.assertFalse(a1.booked)
160 def test_availability_book(self):
161 """ Given an availabiliy, when booked, then it is marked as booked """
162 loc_name = "Córdoba"
163 l1 = Location.objects.create_location(loc_name)
164 task_name = "Device Installation"
165 t1 = Task.objects.create_task(task_name, 30)
166 now = datetime.now(timezone.utc)
167 a1 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
168 a1.book()
170 self.assertTrue(a1.booked)
172 def test_availability_free(self):
173 """ GIVEN a booked availabiliy; WHEN freed; THEN it is marked as not booked """
174 loc_name = "Córdoba"
175 l1 = Location.objects.create_location(loc_name)
176 task_name = "Device Installation"
177 t1 = Task.objects.create_task(task_name, 30)
178 now = datetime.now(timezone.utc)
179 a1 = Availability.objects.create_availability(now + timedelta(days = 3), l1, t1)
180 a1.book()
181 self.assertTrue(a1.booked)
182 a1.free()
183 self.assertFalse(a1.booked)
185 def test_get_availability_next_by_task_and_date(self):
186 """ GIVEN 1 availability at Cordoba, tomorrow, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for tomorrow, THEN 1 availability should be returned at Cordoba, tomorrow for "Device Installation" """
188 now = datetime.now(timezone.utc)
189 tomorrow = now + timedelta(days = 1)
190 loc_name = "Cordoba"
191 l1 = Location.objects.create_location(loc_name)
192 task_name = "Device Installation"
193 t1 = Task.objects.create_task(task_name, 30)
194 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
195 result = Availability.objects.get_next_by_task_and_date(task_name, tomorrow)
196 self.assertEqual(len(result), 1)
197 availability = result[0]
198 self.assertEqual(availability.when, tomorrow)
199 self.assertEqual(availability.where.name, loc_name)
200 self.assertEqual(availability.what.name, task_name)
202 def test_get_availability_next_by_task_and_date_no_availabilities_at_date(self):
203 """ GIVEN 1 availability at Cordoba, tomorrow + 1, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for today, THEN 0 availability should be returned """
205 now = datetime.now(timezone.utc)
206 tomorrow = now + timedelta(days = 1)
207 loc_name = "Cordoba"
208 l1 = Location.objects.create_location(loc_name)
209 task_name = "Device Installation"
210 t1 = Task.objects.create_task(task_name, 30)
211 a1 = Availability.objects.create_availability(tomorrow + timedelta(days = 1), l1, t1)
212 result = Availability.objects.get_next_by_task_and_date(task_name, tomorrow)
213 self.assertEqual(len(result), 0)
215 def test_get_availability_next_by_task_and_date_no_more_availabilities_today(self):
216 """ GIVEN 1 availability at Cordoba, now - 30min, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for today, THEN 0 availability should be returned """
218 now = datetime.now(timezone.utc)
219 loc_name = "Cordoba"
220 l1 = Location.objects.create_location(loc_name)
221 task_name = "Device Installation"
222 t1 = Task.objects.create_task(task_name, 60)
223 a1 = Availability.objects.create_availability(now + timedelta(minutes = -30), l1, t1)
224 result = Availability.objects.get_next_by_task_and_date(task_name, now)
225 self.assertEqual(len(result), 0)
227 def test_get_availability_next_by_task_and_date_1_availability_today(self):
228 """ GIVEN 1 availability at Cordoba, now + 30min, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for today, THEN 1 availability should be returned """
230 now = datetime.now(timezone.utc)
231 loc_name = "Cordoba"
232 l1 = Location.objects.create_location(loc_name)
233 task_name = "Device Installation"
234 t1 = Task.objects.create_task(task_name, 60)
235 a1 = Availability.objects.create_availability(now + timedelta(minutes = 30), l1, t1)
236 result = Availability.objects.get_next_by_task_and_date(task_name, now)
237 self.assertEqual(len(result), 1)
238 availability = result[0]
239 self.assertEqual(availability.when, now + timedelta(minutes = 30))
240 self.assertEqual(availability.where.name, loc_name)
241 self.assertEqual(availability.what.name, task_name)
243 def test_get_availability_next_by_task_and_date_2_availability_today_ordered_ascending(self):
244 """ GIVEN 2 availabilities at Cordoba, now + 30min and now + 60min, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for today, THEN 2 availabilities should be returned """
246 now = datetime.now(timezone.utc)
247 loc_name = "Cordoba"
248 l1 = Location.objects.create_location(loc_name)
249 task_name = "Device Installation"
250 t1 = Task.objects.create_task(task_name, 60)
251 a1 = Availability.objects.create_availability(now + timedelta(minutes = 60), l1, t1)
252 a2 = Availability.objects.create_availability(now + timedelta(minutes = 30), l1, t1)
253 result = Availability.objects.get_next_by_task_and_date(task_name, now)
254 self.assertEqual(len(result), 2)
255 availability = result[0]
256 self.assertEqual(availability.when, now + timedelta(minutes = 30))
257 self.assertEqual(availability.where.name, loc_name)
258 self.assertEqual(availability.what.name, task_name)
259 availability = result[1]
260 self.assertEqual(availability.when, now + timedelta(minutes = 60))
261 self.assertEqual(availability.where.name, loc_name)
262 self.assertEqual(availability.what.name, task_name)
264 def test_get_availability_next_by_task_and_date_1_availability_today2(self):
265 """ GIVEN 2 availabilities at Cordoba, now + 30min and now - 60min, for "Device Installation"; WHEN requesting next availabilities for "Device Installation" for today, THEN 1 availability should be returned for now + 30min"""
267 now = datetime.now(timezone.utc)
268 loc_name = "Cordoba"
269 l1 = Location.objects.create_location(loc_name)
270 task_name = "Device Installation"
271 t1 = Task.objects.create_task(task_name, 60)
272 a1 = Availability.objects.create_availability(now + timedelta(minutes = 30), l1, t1)
273 a2 = Availability.objects.create_availability(now + timedelta(minutes = -60), l1, t1)
274 result = Availability.objects.get_next_by_task_and_date(task_name, now)
275 self.assertEqual(len(result), 1)
276 availability = result[0]
277 self.assertEqual(availability.when, now + timedelta(minutes = 30))
278 self.assertEqual(availability.where.name, loc_name)
279 self.assertEqual(availability.what.name, task_name)
281 def test_get_availability_next_by_task_and_date_none(self):
282 """ GIVEN 2 availabilities at Cordoba, [day after tomorrow at 12:30] and [day after tomorrow at 11:00]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 2 availabilites should be returned """
284 afterTomorrow = datetime.now(timezone.utc) + timedelta(days=2)
285 time1 = time(hour=11, minute=00, tzinfo=timezone.utc)
286 time2 = time(hour=12, minute=30, tzinfo=timezone.utc)
287 loc_name = "Cordoba"
288 l1 = Location.objects.create_location(loc_name)
289 task_name = "Device Installation"
290 t1 = Task.objects.create_task(task_name, 60)
291 a1 = Availability.objects.create_availability(datetime.combine(afterTomorrow, time1), l1, t1)
292 a2 = Availability.objects.create_availability(datetime.combine(afterTomorrow, time2), l1, t1)
293 result = Availability.objects.get_next_by_task_and_date(task_name, None)
294 self.assertEqual(len(result), 2)
295 availability = result[0]
296 self.assertEqual(availability.when, datetime.combine(afterTomorrow, time1))
297 self.assertEqual(availability.where.name, loc_name)
298 self.assertEqual(availability.what.name, task_name)
299 availability = result[1]
300 self.assertEqual(availability.when, datetime.combine(afterTomorrow, time2))
301 self.assertEqual(availability.where.name, loc_name)
302 self.assertEqual(availability.what.name, task_name)
304 def test_get_availability_next_by_task_and_date_none_2(self):
305 """ GIVEN 2 availabilities at Cordoba, [yesterday + 30min] and [day after tomorrow - 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 1 availability should be returned (day after tomorrow)"""
307 now = datetime.now(timezone.utc)
308 loc_name = "Cordoba"
309 l1 = Location.objects.create_location(loc_name)
310 task_name = "Device Installation"
311 t1 = Task.objects.create_task(task_name, 60)
312 a1 = Availability.objects.create_availability(now + timedelta(days=-1, minutes = 30), l1, t1)
313 a2 = Availability.objects.create_availability(now + timedelta(days=2, minutes = -60), l1, t1)
314 result = Availability.objects.get_next_by_task_and_date(task_name, None)
315 self.assertEqual(len(result), 1)
316 availability = result[0]
317 self.assertEqual(availability.when, now + timedelta(days=2, minutes = -60))
318 self.assertEqual(availability.where.name, loc_name)
319 self.assertEqual(availability.what.name, task_name)
321 def test_get_availability_next_by_task_and_date_none_3(self):
322 """ GIVEN 2 availabilities at Cordoba, [now - 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 0 availabilities should be returned """
324 now = datetime.now(timezone.utc)
325 loc_name = "Cordoba"
326 l1 = Location.objects.create_location(loc_name)
327 task_name = "Device Installation"
328 t1 = Task.objects.create_task(task_name, 60)
329 a2 = Availability.objects.create_availability(now + timedelta(minutes = -60), l1, t1)
330 result = Availability.objects.get_next_by_task_and_date(task_name, None)
331 self.assertEqual(len(result), 0)
333 def test_get_availability_next_by_task_and_date_none_4(self):
334 """ GIVEN 1 availability at Cordoba, [now + 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 1 availability should be returned """
336 now = datetime.now(timezone.utc)
337 loc_name = "Cordoba"
338 l1 = Location.objects.create_location(loc_name)
339 task_name = "Device Installation"
340 t1 = Task.objects.create_task(task_name, 60)
341 a2 = Availability.objects.create_availability(now + timedelta(minutes = 60), l1, t1)
342 result = Availability.objects.get_next_by_task_and_date(task_name, None)
343 self.assertEqual(len(result), 1)
344 availability = result[0]
345 self.assertEqual(availability.when, now + timedelta(minutes = 60))
346 self.assertEqual(availability.where.name, loc_name)
347 self.assertEqual(availability.what.name, task_name)
349 def test_get_availability_next_by_task_and_date_none_5(self):
350 """ GIVEN 2 availabilities at Cordoba, [now - 30min] and [now + 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 1 availability should be returned [now + 60min] """
352 now = datetime.now(timezone.utc)
353 loc_name = "Cordoba"
354 l1 = Location.objects.create_location(loc_name)
355 task_name = "Device Installation"
356 t1 = Task.objects.create_task(task_name, 60)
357 a1 = Availability.objects.create_availability(now + timedelta(minutes = -30), l1, t1)
358 a2 = Availability.objects.create_availability(now + timedelta(minutes = 60), l1, t1)
359 result = Availability.objects.get_next_by_task_and_date(task_name, None)
360 self.assertEqual(len(result), 1)
361 availability = result[0]
362 self.assertEqual(availability.when, now + timedelta(minutes = 60))
363 self.assertEqual(availability.where.name, loc_name)
364 self.assertEqual(availability.what.name, task_name)
366 def test_get_availability_next_by_task_and_date_none_6(self):
367 """ GIVEN 2 availabilities at Cordoba, [now - 30min] and [tomorrow + 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 1 availability should be returned tomorrow + 60min] """
369 now = datetime.now(timezone.utc)
370 loc_name = "Cordoba"
371 l1 = Location.objects.create_location(loc_name)
372 task_name = "Device Installation"
373 t1 = Task.objects.create_task(task_name, 60)
374 a1 = Availability.objects.create_availability(now + timedelta(minutes = -30), l1, t1)
375 a2 = Availability.objects.create_availability(now + timedelta(days=1, minutes = 60), l1, t1)
376 result = Availability.objects.get_next_by_task_and_date(task_name, None)
377 self.assertEqual(len(result), 1)
378 availability = result[0]
379 self.assertEqual(availability.when, now + timedelta(days=1, minutes = 60))
380 self.assertEqual(availability.where.name, loc_name)
381 self.assertEqual(availability.what.name, task_name)
383 def test_get_availability_next_by_task_and_date_none_7(self):
384 """ GIVEN 3 availabilities at Cordoba, [now - 30min],[tomorrow + 60min],[day after tomorrow + 60min]; WHEN requesting next availabilities for "Device Installation" without a date; THEN 1 availability should be returned tomorrow + 60min] """
386 now = datetime.now(timezone.utc)
387 l1 = Location.objects.create_location("Cordoba")
388 t1 = Task.objects.create_task("Device Installation", 60)
389 a1 = Availability.objects.create_availability(now + timedelta(minutes = -30), l1, t1)
390 a2 = Availability.objects.create_availability(now + timedelta(days=1, minutes = 60), l1, t1)
391 a2 = Availability.objects.create_availability(now + timedelta(days=2, minutes = 60), l1, t1)
392 result = Availability.objects.get_next_by_task_and_date(t1.name, None)
393 self.assertEqual(len(result), 1)
394 availability = result[0]
395 self.assertEqual(availability.when, now + timedelta(days=1, minutes = 60))
396 self.assertEqual(availability.where.name, l1.name)
397 self.assertEqual(availability.what.name, t1.name)
399 def test_get_availability_all_by_location_and_date_tomorrow(self):
400 """ GIVEN 1 availability at Cordoba, tomorrow, for "Device Installation", WHEN requesting all availabilities for "Device Installation" for tomorrow at Córdoba, THEN 1 availability should be returned at Cordoba, tomorrow for "Device Installation" """
402 now = datetime.now(timezone.utc)
403 tomorrow = now + timedelta(days = 1)
404 l1 = Location.objects.create_location("Cordoba")
405 t1 = Task.objects.create_task("Device Installation", 30)
406 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
407 availabilities = Availability.objects.get_all_by_location_and_date(l1, tomorrow)
408 self.assertEqual(len(availabilities), 1)
409 availability = availabilities[0]
410 self.assertEqual(availability.when, tomorrow)
411 self.assertEqual(availability.where.name, l1.name)
412 self.assertEqual(availability.what.name, t1.name)
414 def test_get_availability_all_by_location_and_date_anotherdate(self):
415 """ GIVEN 1 availability at Cordoba, tomorrow, for "Device Installation", WHEN requesting all availabilities for "Device Installation" for today at Córdoba, THEN 0 availabilities should be returned """
417 now = datetime.now(timezone.utc)
418 tomorrow = now + timedelta(days = 1)
419 loc_name = "Cordoba"
420 l1 = Location.objects.create_location(loc_name)
421 task_name = "Device Installation"
422 t1 = Task.objects.create_task(task_name, 30)
423 a1 = Availability.objects.create_availability(tomorrow, l1, t1)
424 availabilities = Availability.objects.get_all_by_location_and_date(l1, now)
425 self.assertEqual(len(availabilities), 0)
427 def test_get_availability_all_by_location_and_date_tomorrow_elsewhere(self):
428 """ GIVEN 1 availability at Cordoba, tomorrow, for "Device Installation", WHEN requesting all availabilities for "Device Installation" for today at Córdoba, THEN 0 availabilities should be returned """
430 now = datetime.now(timezone.utc)
431 tomorrow = now + timedelta(days = 1)
432 l1 = Location.objects.create_location("Cordoba")
433 l2 = Location.objects.create_location("Rosario")
434 t1 = Task.objects.create_task("Device Installation", 30)
435 a1 = Availability.objects.create_availability(tomorrow, l2, t1)
436 availabilities = Availability.objects.get_all_by_location_and_date(l1, tomorrow)
437 self.assertEqual(len(availabilities), 0)