diff -r 2cb8d11aa9ca -r 8ff8e2aee0f9 src/notes/tests/api/note.py --- 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="example note 1,1", + raw="example note 1.1", + 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'))