def test_list_messages_in_thread(self):
# no authentication
response = self.client_unauthenticated.get("{0}{1}/list_messages_in_thread/".format(self.url, self.thread1.id))
self.assertEqual(403, response.status_code)
# no permission
response = self.client_authenticated.get("{0}{1}/list_messages_in_thread/".format(self.url, self.thread_unrelated.id))
self.assertEqual(403, response.status_code)
# ok
# participant 3 has read the 2 last messages, 1 only the first
p1 = Participation.objects.create(participant=self.participant3, thread=self.thread3)
p1.date_last_check = now() - timedelta(days=1)
p1.save()
p2 = Participation.objects.create(participant=self.participant1, thread=self.thread3)
p2.date_last_check = now() - timedelta(days=2)
p2.save()
# we change the date of the messages
self.m31.sent_at = p1.date_last_check = now() - timedelta(days=3)
self.m31.save()
self.m32.sent_at = p1.date_last_check = now() - timedelta(days=1, hours=12)
self.m32.save()
response = self.client_authenticated.get("{0}{1}/list_messages_in_thread/".format(self.url, self.thread3.id))
messages_dct = parse_json_response(response.data)
messages = messages_dct["results"]
self.assertEqual([self.m33.id, self.m32.id, self.m31.id], [m["id"] for m in messages])
self.assertEqual([set([]), set([self.participant3.id]), set([self.participant1.id, self.participant3.id])], [set(m["readers"]) for m in messages])
评论列表
文章目录