diff -r 006c5270128c -r 34a75bd8d0b9 src/notes/tests/api/sync.py --- a/src/notes/tests/api/sync.py Fri Jul 28 18:22:46 2017 +0200 +++ b/src/notes/tests/api/sync.py Tue Jul 25 19:11:26 2017 +0200 @@ -40,60 +40,85 @@ password='top_secret' ) - self.session1 = Session.objects.create( - title="a new session 1", - description="Description 1", - protocol="[]", - owner=user1 - ) + url = reverse('notes:session-list') + self.client.login(username='test_user1', password='top_secret') + response = self.client.post(url, { + 'title': "a new session 1", + 'description': "Description 1", + 'protocol': "[]" + }, format='json') + + logger.debug('REPOSNSE %r', response.json()) + + self.session1 = Session.objects.get(ext_id=response.json()['ext_id']) + self.client.logout() - self.session2 = Session.objects.create( - title="a new session 2", - description="Description 2", - protocol="[]", - owner=user2 - ) + self.client.login(username='test_user2', password='top_secret') + response = self.client.post(url, { + 'title': "a new session 2", + 'description': "Description 2", + 'protocol': "[]" + }, format='json') + + self.session2 = Session.objects.get(ext_id=response.json()['ext_id']) + self.client.logout() - Session.objects.create( - title="a new session 3", - description="Description 3", - protocol="[]", - owner=user3 - ) + self.client.login(username='test_user3', password='top_secret') + response = self.client.post(url, { + 'title': "a new session 3", + 'description': "Description 3", + 'protocol': "[]" + }, format='json') + + self.session3 = Session.objects.get(ext_id=response.json()['ext_id']) + self.client.logout() + + self.client.login(username='test_user1', password='top_secret') + + url = reverse('notes:notes-session-list', + kwargs={'session_ext_id': self.session1.ext_id}) - self.note1 = Note.objects.create( - tc_start=timezone.now(), - tc_end=timezone.now(), - session=self.session1, - plain="example note 1", - html="example note 1", - raw="example note 1", - margin_note="margin note 1", - categorization="[]" - ) + response = self.client.post(url, { + 'tc_start': timezone.now(), + 'tc_end': timezone.now(), + 'plain': "example note 1", + 'html': "example note 1", + 'raw': "example note 1", + 'margin_note': "margin note 1", + 'categorization': "[]" + }, format='json') + + self.note1 = Note.objects.get(ext_id=response.json()['ext_id']) - 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="[]" - ) + response = self.client.post(url, { + 'tc_start': timezone.now(), + 'tc_end': timezone.now(), + 'plain': "example note 2", + 'html': "example note 2", + 'raw': "example note 2", + 'margin_note': "margin note 2", + 'categorization': "[]" + }, format='json') + + self.note2 = Note.objects.get(ext_id=response.json()['ext_id']) + self.client.logout() + self.client.login(username='test_user2', password='top_secret') + url = reverse('notes:notes-session-list', + kwargs={'session_ext_id': self.session2.ext_id}) - Note.objects.create( - tc_start=timezone.now(), - tc_end=timezone.now(), - session=self.session2, - plain="example note 2", - html="example note", - raw="example note", - margin_note="margin note", - categorization="[]" - ) + response = self.client.post(url, { + 'tc_start': timezone.now(), + 'tc_end': timezone.now(), + 'plain': "example note 3", + 'html': "example note 3", + 'raw': "example note 3", + 'margin_note': "margin note 3", + 'categorization': "[]" + }, format='json') + + self.note3 = Note.objects.get(ext_id=response.json()['ext_id']) + self.client.logout() def test_not_authenticated(self): url = reverse('notes:sync-list') @@ -181,11 +206,19 @@ def test_modified_since_single_update(self): - self.note2.plain = "plain text modified" - self.note2.save() + self.client.login(username='test_user1', password='top_secret') + url = reverse('notes:notes-session-detail', + kwargs={'session_ext_id': self.session1.ext_id, 'ext_id': self.note2.ext_id}) + + self.client.put(url, { + 'plain': "example note 2 modified", + 'html': "example note 2 modified", + 'raw': "example note 2 modified", + 'margin_note': "margin note 2 modified", + 'categorization': "[]" + }, format='json') url = reverse('notes:sync-list') - self.client.login(username='test_user1', password='top_secret') nexthour = \ datetime.datetime.utcnow().replace(tzinfo=timezone.utc) +\ @@ -213,7 +246,15 @@ self.assertEqual(LogEntry.Action.UPDATE, sync_def['action']) def test_note_delete(self): - self.note2.delete() + + self.client.login(username='test_user1', password='top_secret') + url = reverse('notes:notes-session-detail', + kwargs={'session_ext_id': self.session1.ext_id, 'ext_id': self.note2.ext_id}) + + self.client.delete(url) + self.client.logout() + + url = reverse('notes:sync-list') self.client.login(username='test_user1', password='top_secret') response = self.client.get(url) @@ -231,3 +272,39 @@ self.assertEqual('note', sync_def['type']) self.assertEqual(0, sync_def['action']) self.assertEqual(sync_def['ext_id'],str(self.note1.ext_id)) + + def test_note_delete_modified(self): + + self.client.login(username='test_user1', password='top_secret') + url = reverse('notes:notes-session-detail', + kwargs={'session_ext_id': self.session1.ext_id, 'ext_id': self.note2.ext_id}) + + self.client.delete(url) + self.client.logout() + + + nexthour = \ + datetime.datetime.utcnow().replace(tzinfo=timezone.utc) +\ + datetime.timedelta(hours=1) + + LogEntry.objects.filter( + content_type=ContentType.objects.get_for_model(Note), + object_pk=self.note2.id, + action=LogEntry.Action.DELETE + ).update(timestamp=nexthour) + + url = reverse('notes:sync-list') + self.client.login(username='test_user1', password='top_secret') + response = self.client.get(url, {'modified_since': (nexthour-datetime.timedelta(minutes=30)).timestamp()}) + self.assertEqual(response.status_code, status.HTTP_200_OK) + json_resp = response.json() + self.assertIn('sessions', json_resp) + self.assertEqual(0, len(json_resp['sessions'])) + + self.assertIn('notes', json_resp) + self.assertEqual(1, len(json_resp['notes'])) + sync_def = json_resp['notes'][0] + self.assertEqual('note', sync_def['type']) + self.assertEqual(2, sync_def['action']) + self.assertEqual(sync_def['ext_id'],str(self.note2.ext_id)) +