示例#1
0
 def test_hash(self):
     reason1 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="a"),
                             id="x")
     reason2 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="a"),
                             id="2")
     reason3 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="b"),
                             id="1")
     reason4 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="A"),
                             id="x")
     reason5 = RemovalReason(
         self.reddit,
         subreddit=Subreddit(self.reddit, display_name="a"),
         reason_id="X",
     )
     assert hash(reason1) == hash(reason1)
     assert hash(reason2) == hash(reason2)
     assert hash(reason3) == hash(reason3)
     assert hash(reason1) != hash(reason2)
     assert hash(reason1) != hash(reason3)
     assert hash(reason1) == hash(reason4)
     assert hash(reason1) != hash(reason5)
示例#2
0
 def test_equality(self):
     reason1 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="a"),
                             id="x")
     reason2 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="a"),
                             id="2")
     reason3 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="b"),
                             id="1")
     reason4 = RemovalReason(self.reddit,
                             subreddit=Subreddit(self.reddit,
                                                 display_name="A"),
                             id="x")
     reason5 = RemovalReason(
         self.reddit,
         subreddit=Subreddit(self.reddit, display_name="a"),
         reason_id="X",
     )
     assert reason1 == reason1
     assert reason1 == "x"
     assert reason2 == reason2
     assert reason3 == reason3
     assert reason1 != reason2
     assert reason1 != reason3
     assert reason1 == reason4
     assert reason1 != reason5
示例#3
0
    def test_construct_failure(self):
        message = "Either `display_name` or `_data` must be provided."
        with pytest.raises(TypeError) as excinfo:
            Subreddit(self.reddit)
        assert str(excinfo.value) == message

        with pytest.raises(TypeError) as excinfo:
            Subreddit(self.reddit, "dummy", {"id": "dummy"})
        assert str(excinfo.value) == message
示例#4
0
 def test_hash(self):
     subreddit1 = Subreddit(self.reddit, _data={"display_name": "dummy1", "n": 1})
     subreddit2 = Subreddit(self.reddit, _data={"display_name": "Dummy1", "n": 2})
     subreddit3 = Subreddit(self.reddit, _data={"display_name": "dummy3", "n": 2})
     assert hash(subreddit1) == hash(subreddit1)
     assert hash(subreddit2) == hash(subreddit2)
     assert hash(subreddit3) == hash(subreddit3)
     assert hash(subreddit1) == hash(subreddit2)
     assert hash(subreddit2) != hash(subreddit3)
     assert hash(subreddit1) != hash(subreddit3)
 def test_exception(self):
     with pytest.raises(ValueError):
         RemovalReason(self.reddit,
                       subreddit=Subreddit(self.reddit, display_name="a"))
     with pytest.raises(ValueError):
         RemovalReason(
             self.reddit,
             subreddit=Subreddit(self.reddit, display_name="a"),
             id="test",
             _data={},
         )
示例#6
0
 def test_equality(self):
     subreddit1 = Subreddit(self.reddit, _data={"display_name": "dummy1", "n": 1})
     subreddit2 = Subreddit(self.reddit, _data={"display_name": "Dummy1", "n": 2})
     subreddit3 = Subreddit(self.reddit, _data={"display_name": "dummy3", "n": 2})
     assert subreddit1 == subreddit1
     assert subreddit2 == subreddit2
     assert subreddit3 == subreddit3
     assert subreddit1 == subreddit2
     assert subreddit2 != subreddit3
     assert subreddit1 != subreddit3
     assert "dummy1" == subreddit1
     assert subreddit2 == "dummy1"
示例#7
0
 async def test_reply(self):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         reply = await conversation.reply("A message")
     assert isinstance(reply, ModmailMessage)
示例#8
0
 def test_repr(self):
     page = WikiPage(self.reddit,
                     subreddit=Subreddit(self.reddit, "a"),
                     name="x")
     assert repr(
         page
     ) == "WikiPage(subreddit=Subreddit(display_name='a'), name='x')"
示例#9
0
 async def test_read__other_conversations(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         other_conversation = await subreddit.modmail("fajcu")
         await conversation.read(other_conversations=[other_conversation])
示例#10
0
 def test_fullname(self):
     subreddit = Subreddit(self.reddit,
                           _data={
                               "display_name": "name",
                               "id": "dummy"
                           })
     assert subreddit.fullname == "t5_dummy"
示例#11
0
 def test_str(self):
     subreddit = Subreddit(self.reddit,
                           _data={
                               "display_name": "name",
                               "id": "dummy"
                           })
     assert str(subreddit) == "name"
示例#12
0
    def test_repr(self):
        draft = Draft(self.reddit, id="draft_id")
        assert repr(draft) == "Draft(id='draft_id')"

        data = {"id": "draft_id", "body": "body", "kind": "markdown"}
        subreddit = Subreddit(None, "subreddit")
        draft = Draft(self.reddit,
                      _data={
                          **data, "subreddit": subreddit,
                          "title": None
                      })
        assert repr(draft) == "Draft(id='draft_id' subreddit='subreddit')"

        draft = Draft(self.reddit,
                      _data={
                          **data, "subreddit": None,
                          "title": "title"
                      })
        assert repr(draft) == "Draft(id='draft_id' title='title')"

        draft = Draft(self.reddit,
                      _data={
                          **data, "subreddit": subreddit,
                          "title": "title"
                      })
        assert repr(
            draft
        ) == "Draft(id='draft_id' subreddit='subreddit' title='title')"
示例#13
0
 async def test_update(self):
     emoji = Emoji(self.reddit,
                   subreddit=Subreddit(self.reddit, "a"),
                   name="x")
     with pytest.raises(TypeError) as excinfo:
         await emoji.update()
     assert str(excinfo.value) == "At least one attribute must be provided"
示例#14
0
 async def test_unread(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         await conversation.unread()
         conversation = await subreddit.modmail("faj6z")
         assert conversation.last_unread is not None
示例#15
0
 def test_good_encode(self):
     data = [
         1,
         "two",
         AsyncPRAWBase(self.reddit, _data={"_secret": "no", "3": 3}),
         Subreddit(self.reddit, "four"),
     ]
     assert '[1, "two", {"3": 3}, "four"]' == dumps(data, cls=WidgetEncoder)
示例#16
0
 async def test_mute(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         await conversation.mute()
         conversation = await subreddit.modmail("faj6z")
         assert conversation.user.mute_status["isMuted"]
示例#17
0
 async def test_highlight(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         await conversation.highlight()
         conversation = await subreddit.modmail("faj6z")
         assert conversation.is_highlighted
示例#18
0
 async def test_subreddit_rules_call(self):
     with pytest.raises(DeprecationWarning) as excinfo:
         subreddit = Subreddit(self.reddit, display_name="test")
         await subreddit.rules()
     assert (
         excinfo.value.args[0] ==
         "Calling SubredditRules to get a list of rules is deprecated. Remove the parentheses to use the iterator. View the Async PRAW documentation on how to change the code in order to use the iterator (https://asyncpraw.readthedocs.io/en/latest/code_overview/other/subredditrules.html#asyncpraw.models.reddit.rules.SubredditRules.__call__)."
     )
示例#19
0
 async def test_unarchive(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("faj6z")
         await conversation.unarchive()
         conversation = await subreddit.modmail("faj6z")
         assert conversation.state == 1
示例#20
0
 async def test_submit_gallery__too_long_caption(self):
     message = "Caption must be 180 characters or less."
     subreddit = Subreddit(self.reddit, display_name="name")
     caption = "wayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy too long caption"
     with pytest.raises(TypeError) as excinfo:
         await subreddit.submit_gallery(
             "Cool title", images=[{"image_path": __file__, "caption": caption}]
         )
     assert str(excinfo.value) == message
示例#21
0
    async def test_submit_gallery__invalid_path(self):
        message = "'invalid_image_path' is not a valid image path."
        subreddit = Subreddit(self.reddit, display_name="name")

        with pytest.raises(TypeError) as excinfo:
            await subreddit.submit_gallery(
                "Cool title", images=[{"image_path": "invalid_image_path"}]
            )
        assert str(excinfo.value) == message
示例#22
0
    async def test_submit_gallery__missing_path(self):
        message = "'image_path' is required."
        subreddit = Subreddit(self.reddit, display_name="name")

        with pytest.raises(TypeError) as excinfo:
            await subreddit.submit_gallery(
                "Cool title", images=[{"caption": "caption"}, {"caption": "caption2"}]
            )
        assert str(excinfo.value) == message
示例#23
0
 def test_bad_encode(self):
     data = [
         1,
         "two",
         SubredditWidgetsModeration(
             Subreddit(self.reddit, display_name="subreddit"), self.reddit),
     ]
     with raises(TypeError):
         dumps(data, cls=WidgetEncoder)  # should throw TypeError
示例#24
0
 async def test_submit_inline_media__invalid_path(self):
     message = "'invalid_image_path' is not a valid file path."
     subreddit = Subreddit(self.reddit, display_name="name")
     gif = InlineGif("invalid_image_path", "optional caption")
     image = InlineImage("invalid_image_path", "optional caption")
     video = InlineVideo("invalid_image_path", "optional caption")
     selftext = "Text with {gif1}, {image1}, and {video1} inline"
     media = {"gif1": gif, "image1": image, "video1": video}
     with pytest.raises(ValueError) as excinfo:
         await subreddit.submit("title", selftext=selftext, inline_media=media)
     assert str(excinfo.value) == message
示例#25
0
 async def test_mute_duration(self, _):
     self.reddit.read_only = False
     subreddit = Subreddit(self.reddit, "all")
     with self.use_cassette():
         conversation = await subreddit.modmail("g46rw")
         await conversation.mute(7)
         conversation = await subreddit.modmail("g46rw")
         assert conversation.user.mute_status["isMuted"]
         diff = datetime.fromisoformat(
             conversation.user.mute_status["endDate"]
         ) - datetime.fromisoformat(conversation.mod_actions[-1].date)
         assert diff.days == 6  # 6 here because it is not 7 whole days
示例#26
0
 def test_hash(self):
     emoji1 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="x")
     emoji2 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="2")
     emoji3 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "b"),
                    name="1")
     emoji4 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "A"),
                    name="x")
     emoji5 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="X")
     emoji6 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "b"),
                    name="x")
     assert hash(emoji1) == hash(emoji1)
     assert hash(emoji2) == hash(emoji2)
     assert hash(emoji3) == hash(emoji3)
     assert hash(emoji1) != hash(emoji2)
     assert hash(emoji1) != hash(emoji3)
     assert hash(emoji1) == hash(emoji4)
     assert hash(emoji1) != hash(emoji5)
     assert hash(emoji1) != hash(emoji6)
示例#27
0
 def test_equality(self):
     emoji1 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="x")
     emoji2 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="2")
     emoji3 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "b"),
                    name="1")
     emoji4 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "A"),
                    name="x")
     emoji5 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "a"),
                    name="X")
     emoji6 = Emoji(self.reddit,
                    subreddit=Subreddit(self.reddit, "b"),
                    name="x")
     assert emoji1 == emoji1
     assert emoji1 == "x"
     assert emoji2 == emoji2
     assert emoji3 == emoji3
     assert emoji1 != emoji2
     assert emoji1 != emoji3
     assert emoji1 == emoji4
     assert emoji1 != emoji5
     assert emoji1 != emoji6
     assert emoji1 != 5
示例#28
0
 def test_hash(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="x")
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="2")
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "b"),
                      name="1")
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "A"),
                      name="x")
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="X")
     assert hash(page1) == hash(page1)
     assert hash(page2) == hash(page2)
     assert hash(page3) == hash(page3)
     assert hash(page1) != hash(page2)
     assert hash(page1) != hash(page3)
     assert hash(page1) == hash(page4)
     assert hash(page1) == hash(page5)
示例#29
0
 def test_equality(self):
     page1 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="x")
     page2 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="2")
     page3 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "b"),
                      name="1")
     page4 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "A"),
                      name="x")
     page5 = WikiPage(self.reddit,
                      subreddit=Subreddit(self.reddit, "a"),
                      name="X")
     assert page1 == page1
     assert page2 == page2
     assert page3 == page3
     assert page1 != page2
     assert page1 != page3
     assert page1 == page4
     assert page1 == page5
示例#30
0
    async def get_post(self, subreddit: Subreddit, search_query: str):
        search, limit, sort, syntax, time = self.parse_query(search_query)
        limit = int(limit) if limit else None
        result = []

        if search != '':
            async for submission in subreddit.search(
                    query=search,
                    sort=sort if sort else 'relevance',
                    syntax=syntax if syntax else 'lucene',
                    time_filter=time if time else 'all',
                    limit=limit if limit else 100):

                result.append(submission)
        else:
            if sort == 'hot':
                result = [
                    submission async for submission in subreddit.hot(
                        limit=limit if limit else 100)
                ]
            elif sort == 'new':
                result = [
                    submission async for submission in subreddit.new(
                        limit=limit if limit else 100)
                ]
            elif sort == 'top':
                result = [
                    submission async for submission in subreddit.top(
                        limit=limit if limit else 100)
                ]
            else:
                result = [
                    submission async for submission in subreddit.random_rising(
                        limit=limit if limit else 100)
                ]

        return result