def test_unread_entry_list_ordering(self): """Test user_entry_list will return all unread entries available to user, sorted chronologically, oldest to newest.""" # read a few of the entries so we can exclude them for entry in self.feedobj.entry_set.all()[:5]: logic.mark_entry_read(self.get_user(), entry) self._test_order(logic.user_entry_list(self.get_user(), unread=True))
def test_mark_read_entry_unread(self): "A user can mark an entry as being 'read' and then realise they want to come back to read it later so mark it 'unread'" # mark an entry as being read read_entry = logic.mark_entry_read(self.get_user(), self.entryobj) # mark entry as being 'unread' read_entry = logic.mark_entry_unread(self.get_user(), self.entryobj) self.assertTrue(read_entry.unread) # re-mark entry as being read (again) read_entry = logic.mark_entry_read(self.get_user(), self.entryobj) self.assertFalse(read_entry.unread) # double negative, ew
def quick_republish_entry(request, eid, slug): "A user can quickly republish an entry and fill in any optional fields later." # NOTE: user doesn't have to be subscribed to the feed the entry # came from in order to republish it entryobj = get_object_or_404(models.Entry, pk=eid) repubobj = logic.republish_entry(request.user, entryobj) logic.mark_entry_read(request.user, entryobj) if request.is_ajax(): return json_response("success") return named_redirect('reader', entryobj.id)
def test_mark_read(self): "A user can mark an entry as being 'read'" read_entry = logic.mark_entry_read(self.get_user(), self.entryobj) read_entry2 = models.ReadEntry.objects.get( user=self.get_user(), entry=self.entryobj) # raises DoesNotExist on error # test we have the same two entries self.assertEqual(read_entry, read_entry2)
def test_mark_read_twice(self): "A user can mark an entry as being 'read' many times without an error." for i in range(0, 5): # mark the entry read read_entry = logic.mark_entry_read(self.get_user(), self.entryobj) # fetch the only read entry models.ReadEntry.objects.get( user=self.get_user(), entry=self.entryobj) # raises DoesNotExist on error
def mark_entry_read(request, eid, slug): # ensure the entry exists before we attempt to mark it read entry = get_object_or_404(models.Entry, pk=eid) # note: user doesn't have to be subscribed to the feed entry came # from in order to mark it 'read' read_entry = logic.mark_entry_read(request.user, entry) if request.is_ajax(): return json_response("success") messages.success(request, "Entry marked read.") return named_redirect('reader')