Esempio n. 1
0
class UnreadTests(Base):
    def setUp(self):
        super(UnreadTests, self).setUp()
        self.user1 = User('self.user1', '123456')
        self.user2 = User('self.user2', '123456')
        self.conv = Conversation(self.user1, 'some title')
        self.conv.messages.append(Message(self.user2, 'first message'))
        self.conv.messages.append(Message(self.user2, 'second message'))
        self.conv.messages.append(Message(self.user1, 'third message'))
        self.conv.messages.append(Message(self.user2, 'fourth message'))
        db.session.add_all([self.user1, self.user2])
        db.session.commit()

    def test_all_unread(self):
        messages = self.conv.get_unread_messages(for_user=self.user1)
        assert len(messages) == 4
        messages = self.conv.get_unread_messages(for_user=self.user2)
        assert len(messages) == 4

    def test_no_unread(self):
        self.user1.set_last_read_message(self.conv, message_id=4)
        db.session.commit()
        messages = self.conv.get_unread_messages(for_user=self.user1)
        assert len(messages) == 0

    def test_some_unread(self):
        self.user1.set_last_read_message(self.conv, message_id=2)
        self.user1.set_last_read_message(self.conv, message_id=3)
        user1messages = self.conv.get_unread_messages(for_user=self.user1)
        user2messages = self.conv.get_unread_messages(for_user=self.user2)
        [m.text for m in user1messages] == ['third message', 'fourth message']
        [m.text for m in user2messages] == ['fourth message']

    def test_mark_read(self):
        self.conv.mark_read(self.user1)
        db.session.commit()
        user1messages = self.conv.get_unread_messages(for_user=self.user1)
        assert len(user1messages) == 0