--- a/src/notes/tests/api/session.py Tue Jul 18 17:59:28 2017 +0200
+++ b/src/notes/tests/api/session.py Wed Jul 19 15:57:13 2017 +0200
@@ -1,6 +1,7 @@
"""
Tests the core api for sessions
"""
+import datetime
import logging
from uuid import uuid4
@@ -48,13 +49,20 @@
owner=user2
)
- Session.objects.create(
+ self.session3 = Session.objects.create(
title="a new session 3",
description="Description 3",
protocol="[]",
owner=user3
)
+ self.session4 = Session.objects.create(
+ title="a new session 4",
+ description="Description 4",
+ protocol="[]",
+ owner=user3
+ )
+
Note.objects.create(
tc_start=timezone.now(),
tc_end=timezone.now(),
@@ -90,8 +98,12 @@
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
json = response.json()
- self.assertEqual(len(json), 1, "must have one session")
- for session in json:
+ self.assertIn('results', json, "must have results")
+ self.assertIn('count', json, "must have count")
+ self.assertEqual(json['count'], 1, "must have one session")
+ self.assertEqual(len(json['results']), 1, "must have one session")
+
+ for session in json['results']:
self.assertEqual(session['owner'], 'test_user1')
@@ -144,7 +156,7 @@
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_list_notes(self):
- url = reverse('notes:notes-list', kwargs={'session_ext_id':str(self.session1.ext_id)})
+ url = reverse('notes:notes-session-list', kwargs={'session_ext_id':str(self.session1.ext_id)})
self.client.login(username='test_user1', password='top_secret')
response = self.client.get(url, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
@@ -156,9 +168,68 @@
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_list_notes_bad(self):
- url = reverse('notes:notes-list', kwargs={'session_ext_id':str(self.session2.ext_id)})
- logger.debug("URL: %s", url)
+ url = reverse('notes:notes-session-list', kwargs={'session_ext_id':str(self.session2.ext_id)})
self.client.login(username='test_user1', password='top_secret')
response = self.client.get(url, format='json')
- logger.debug(response.json())
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
+
+ def test_filter_modified_since(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user3', password='top_secret')
+ nexthour = \
+ datetime.datetime.utcnow().replace(tzinfo=timezone.utc) +\
+ datetime.timedelta(hours=1)
+ Session.objects.filter(pk=self.session4.id).update(updated=nexthour)
+
+ response = self.client.get(
+ url,
+ {'modified_since': (nexthour - datetime.timedelta(minutes=30)).timestamp()},
+ format='json'
+ )
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ json = response.json()
+ self.assertIn('results', json, "must have results")
+ self.assertIn('count', json, "must have count")
+ self.assertEqual(json['count'], 1, "must have one session")
+ self.assertEqual(len(json['results']), 1, "must have one session")
+
+ self.assertEqual(json['results'][0].get('title'), "a new session 4")
+
+
+ def test_filter_modified_since_zero(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user3', password='top_secret')
+
+ response = self.client.get(url, {'modified_since': 0}, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ json = response.json()
+ self.assertIn('results', json, "must have results")
+ self.assertIn('count', json, "must have count")
+ self.assertEqual(json['count'], 2, "must have two sessions")
+ self.assertEqual(len(json['results']), 2, "must have two sessions")
+
+ for session_json in json['results']:
+ self.assertIn(session_json.get('title'), ['a new session 3', 'a new session 4'])
+
+
+ def test_filter_modified_seconds(self):
+ url = reverse('notes:session-list')
+ self.client.login(username='test_user3', password='top_secret')
+
+ prevmoment = \
+ datetime.datetime.utcnow().replace(tzinfo=timezone.utc) -\
+ datetime.timedelta(seconds=5)
+
+ response = self.client.get(url, {'modified_since': prevmoment.timestamp()}, format='json')
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ json = response.json()
+ self.assertIn('results', json, "must have results")
+ self.assertIn('count', json, "must have count")
+ self.assertEqual(json['count'], 2, "must have two sessions")
+ self.assertEqual(len(json['results']), 2, "must have two sessions")
+ for session_json in json['results']:
+ self.assertIn(session_json.get('title'), ['a new session 3', 'a new session 4'])
+