src/notes/tests/api/note.py
changeset 119 8ff8e2aee0f9
parent 85 e17899ced2b8
child 120 892980a3af09
--- a/src/notes/tests/api/note.py	Tue Jul 18 17:59:28 2017 +0200
+++ b/src/notes/tests/api/note.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
 
@@ -16,6 +17,9 @@
 
 
 class NoteApiTests(APITransactionTestCase):
+    '''
+    Test Note api
+    '''
 
     def setUp(self):
         User = get_user_model()
@@ -67,6 +71,18 @@
             categorization="[]"
         )
 
+        self.note2 = Note.objects.create(
+            tc_start=timezone.now(),
+            tc_end=timezone.now(),
+            session=self.session1,
+            plain="example note 1.1",
+            html="<i>example note 1,1</i>",
+            raw="<i>example note 1.1</i>",
+            margin_note="margin note 1.1",
+            categorization="[]"
+        )
+
+
         Note.objects.create(
             tc_start=timezone.now(),
             tc_end=timezone.now(),
@@ -79,7 +95,7 @@
         )
 
     def test_create_note_no_user(self):
-        url = reverse('notes:notes-list',
+        url = reverse('notes:notes-session-list',
                       kwargs={'session_ext_id': self.session1.ext_id})
         response = self.client.post(url, {
             'tc_start': timezone.now(),
@@ -94,7 +110,7 @@
         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
 
     def test_create_note(self):
-        url = reverse('notes:notes-list',
+        url = reverse('notes:notes-session-list',
                       kwargs={'session_ext_id': self.session1.ext_id})
         self.client.login(username='test_user1', password='top_secret')
         response = self.client.post(url, {
@@ -115,7 +131,7 @@
         self.assertTrue(note)
 
     def test_create_note_with_ext_id(self):
-        url = reverse('notes:notes-list',
+        url = reverse('notes:notes-session-list',
                       kwargs={'session_ext_id': self.session1.ext_id})
         self.client.login(username='test_user1', password='top_secret')
         ext_id = str(uuid4())
@@ -138,7 +154,7 @@
         self.assertTrue(note)
 
     def test_update_note(self):
-        url = reverse('notes:notes-detail',
+        url = reverse('notes:notes-session-detail',
                       kwargs={'session_ext_id': self.session1.ext_id, 'ext_id': self.note1.ext_id})
         self.client.login(username='test_user1', password='top_secret')
         response = self.client.put(url, {
@@ -160,7 +176,7 @@
 
     #TODO: Fail if a tc_start, tc_end, session, ext_id updated, created are provided on update ?
     # def test_update_note_tc_start(self):
-    #     url = reverse('notes:notes-detail',
+    #     url = reverse('notes:notes-session-detail',
     #                   kwargs={'session_ext_id': self.session1.ext_id, 'ext_id': self.note1.ext_id})
     #     self.client.login(username='test_user1', password='top_secret')
     #     response = self.client.put(url, {
@@ -174,3 +190,53 @@
     #     }, format='json')
 
     #     self.assertEqual(response.status_code, status.HTTP_200_OK)
+
+    def test_root_note_list(self):
+        url = reverse('notes:note-list')
+        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)
+
+        json_resp = response.json()
+        self.assertIn('results', json_resp)
+        self.assertEqual(2, json_resp['count'])
+        self.assertEqual(2, len(json_resp['results']))
+
+        for note_json in json_resp['results']:
+            self.assertEqual(str(self.session1.ext_id), note_json.get('session'))
+
+
+    def test_root_note_list_modified(self):
+
+        nexthour = \
+            datetime.datetime.utcnow().replace(tzinfo=timezone.utc) +\
+            datetime.timedelta(hours=1)
+        Note.objects.filter(pk=self.note2.id).update(updated=nexthour)
+
+        url = reverse('notes:note-list')
+        self.client.login(username='test_user1', password='top_secret')
+
+        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_resp = response.json()
+        self.assertIn('results', json_resp)
+        self.assertEqual(1, json_resp['count'])
+
+        self.assertEqual(len(json_resp['results']), 1, "must have one note")
+        self.assertEqual(str(self.session1.ext_id), json_resp['results'][0].get('session'))
+
+
+    def test_root_note_detail(self):
+        url = reverse('notes:note-detail', kwargs={'ext_id': self.note2.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)
+
+        json_resp = response.json()
+        self.assertEqual(str(self.session1.ext_id), json_resp.get('session'))
+        self.assertEqual('example note 1.1', json_resp.get('plain'))