1import pickle
2
3import pytest
4from praw.models import Message, SubredditMessage
5
6from ... import UnitTest
7
8
9class TestMessage(UnitTest):
10    def test_attribute_error(self):
11        with pytest.raises(AttributeError):
12            Message(self.reddit, _data={"id": "1"}).mark_as_read()
13
14    def test_equality(self):
15        message1 = Message(self.reddit, _data={"id": "1"})
16        message2 = Message(self.reddit, _data={"id": "1"})
17        message3 = Message(self.reddit, _data={"id": "2"})
18        assert message1 == message1
19        assert message2 == message2
20        assert message3 == message3
21        assert message1 == message2
22        assert message2 != message3
23        assert message1 != message3
24        assert "1" == message1
25        assert message1 == "1"
26
27    def test_fullname(self):
28        message = Message(self.reddit, _data={"id": "dummy"})
29        assert message.fullname == "t4_dummy"
30
31    def test_hash(self):
32        message1 = Message(self.reddit, _data={"id": "dummy1"})
33        message2 = Message(self.reddit, _data={"id": "dummy1"})
34        message3 = Message(self.reddit, _data={"id": "dummy2"})
35        assert hash(message1) == hash(message1)
36        assert hash(message2) == hash(message2)
37        assert hash(message3) == hash(message3)
38        assert hash(message1) == hash(message2)
39        assert hash(message2) != hash(message3)
40        assert hash(message1) != hash(message3)
41
42    def test_pickle(self):
43        message = Message(self.reddit, _data={"id": "dummy"})
44        for level in range(pickle.HIGHEST_PROTOCOL + 1):
45            other = pickle.loads(pickle.dumps(message, protocol=level))
46            assert message == other
47
48    def test_repr(self):
49        message = Message(self.reddit, _data={"id": "dummy"})
50        assert repr(message) == "Message(id='dummy')"
51
52    def test_str(self):
53        message = Message(self.reddit, _data={"id": "dummy"})
54        assert str(message) == "dummy"
55
56
57class TestSubredditMessage(UnitTest):
58    def test_inheritance(self):
59        message = SubredditMessage(self.reddit, _data={"id": "dummy"})
60        assert isinstance(message, Message)
61
62    def test_repr(self):
63        message = SubredditMessage(self.reddit, _data={"id": "dummy"})
64        assert repr(message) == "SubredditMessage(id='dummy')"
65
66    def test_str(self):
67        message = SubredditMessage(self.reddit, _data={"id": "dummy"})
68        assert str(message) == "dummy"
69