diff -r 2cb8d11aa9ca -r 8ff8e2aee0f9 src/notes/tests/api/session.py --- 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']) +