예제 #1
0
    def test_remove_nsfw_collection_srnames_on_frontpage(self, get_nsfw_collections_srnames):
        get_nsfw_collections_srnames.return_value = set(nsfw_collection.sr_names)
        srname = "test1"
        subreddit = Subreddit(name=srname)
        Subreddit.user_subreddits = MagicMock(return_value=[
            Subreddit(name=nice_srname),
            Subreddit(name=questionably_nsfw),
        ])

        frontpage_srnames = srnames_from_site(self.logged_in, Frontpage)
        swf_srnames = srnames_from_site(self.logged_in, subreddit)

        self.assertEqual(frontpage_srnames, {Frontpage.name, nice_srname})
        self.assertTrue(len(frontpage_srnames & {questionably_nsfw}) == 0)
예제 #2
0
    def test_remove_swf_subscriptions_when_viewing_sr_in_nsfw_collection(
            self, get_nsfw_collections_srnames):

        get_nsfw_collections_srnames.return_value = set(
            nsfw_collection.sr_names)
        questionable_subreddit = Subreddit(name=questionably_nsfw)
        Subreddit.user_subreddits = MagicMock(return_value=[
            Subreddit(name=nice_srname),
            Subreddit(name=questionably_nsfw),
        ])

        srnames = srnames_from_site(self.logged_in, questionable_subreddit)

        self.assertEqual(srnames, {questionably_nsfw})
        self.assertTrue(len(srnames & {nice_srname}) == 0)
예제 #3
0
    def test_invalid_thing(self):
        with self.assertRaises(HTTPForbidden):
            sr = Subreddit(id=1)
            with patch.object(VByName, "run", return_value=sr):
                self.validator.run('fullname', None)

        self.assertFalse(self.validator.has_errors)
예제 #4
0
    def _mock_comment(self,
                      id=1,
                      author_id=1,
                      link_id=1,
                      sr_id=1,
                      can_comment=True,
                      can_view_promo=True,
                      is_moderator=False,
                      **kwargs):
        kwargs['id'] = id
        kwargs['author_id'] = author_id
        kwargs['link_id'] = link_id
        kwargs['sr_id'] = sr_id

        comment = Comment(**kwargs)
        self.autopatch(VByName, "run", return_value=comment)

        link = Link(id=link_id, sr_id=sr_id)
        self.autopatch(Link, "_byID", return_value=link)

        sr = Subreddit(id=sr_id)
        self.autopatch(Subreddit, "_byID", return_value=sr)
        self.autopatch(Subreddit, "can_comment", return_value=can_comment)
        self.autopatch(Link, "can_view_promo", return_value=can_view_promo)
        self.autopatch(Subreddit, "is_moderator", return_value=is_moderator)

        return comment
예제 #5
0
    def test_subreddit_logged_in(self, user_subreddits):
        user_subreddits.return_value = subscriptions
        srname = "test1"
        subreddit = Subreddit(name=srname)
        srnames = srnames_from_site(self.logged_in, subreddit)

        self.assertEqual(srnames, {srname})
예제 #6
0
    def test_invalid_thing(self):
        with self.assertRaises(HTTPForbidden):
            sr = Subreddit(id=1)
            VByName.run = MagicMock(return_value=sr)
            self.validator.run('fullname', None)

        self.assertFalse(self.validator.has_errors)
예제 #7
0
    def _mock_comment(id=1,
                      author_id=1,
                      link_id=1,
                      sr_id=1,
                      can_comment=True,
                      can_view_promo=True,
                      is_moderator=False,
                      **kwargs):
        kwargs['id'] = id
        kwargs['author_id'] = author_id
        kwargs['link_id'] = link_id

        comment = Comment(**kwargs)
        VByName.run = MagicMock(return_value=comment)

        link = Link(id=link_id)
        Link._byID = MagicMock(return_value=link)

        sr = Subreddit(id=sr_id)
        comment.subreddit_slow = sr
        link.subreddit_slow = sr

        Subreddit.can_comment = MagicMock(return_value=can_comment)
        Link.can_view_promo = MagicMock(return_value=can_view_promo)
        Subreddit.is_moderator = MagicMock(return_value=is_moderator)

        return comment
예제 #8
0
    def test_quarantined_subscriptions_are_never_included(
            self, user_subreddits):
        user_subreddits.return_value = naughty_subscriptions
        srname = "test1"
        subreddit = Subreddit(name=srname)
        srnames = srnames_from_site(self.logged_in, subreddit)

        self.assertEqual(srnames, {srname} | {nice_srname})
        self.assertTrue(len(srnames & {quarantined_srname}) == 0)
예제 #9
0
    def test_nsfw_subscriptions_arent_included_when_viewing_sfw(
            self, user_subreddits):
        user_subreddits.return_value = naughty_subscriptions
        srname = "test1"
        subreddit = Subreddit(name=srname)
        srnames = srnames_from_site(self.logged_in, subreddit)

        self.assertEqual(srnames, {srname} | {nice_srname})
        self.assertTrue(len(srnames & {nsfw_srname}) == 0)
예제 #10
0
    def test_only_nsfw_subscriptions_are_included_when_viewing_nswf(
            self, user_subreddits):
        user_subreddits.return_value = naughty_subscriptions
        srname = "bad"
        subreddit = Subreddit(name=srname, over_18=True)
        srnames = srnames_from_site(self.logged_in, subreddit)

        self.assertEqual(srnames, {srname} | {nsfw_srname})
        self.assertTrue(len(srnames & {nsfw_srname}) == 1)
        self.assertTrue(len(srnames & {nice_srname}) == 0)
예제 #11
0
    def _mock_link(self,
                   id=1,
                   author_id=1,
                   sr_id=1,
                   can_comment=True,
                   can_view_promo=True,
                   **kwargs):
        kwargs['id'] = id
        kwargs['author_id'] = author_id
        kwargs['sr_id'] = sr_id

        link = Link(**kwargs)
        self.autopatch(VByName, "run", return_value=link)

        sr = Subreddit(id=sr_id)
        self.autopatch(Subreddit, "_byID", return_value=sr)
        self.autopatch(Subreddit, "can_comment", return_value=can_comment)
        self.autopatch(Link, "can_view_promo", return_value=can_view_promo)

        return link
예제 #12
0
    def _mock_link(id=1,
                   author_id=1,
                   sr_id=1,
                   can_comment=True,
                   can_view_promo=True,
                   **kwargs):
        kwargs['id'] = id
        kwargs['author_id'] = author_id
        kwargs['sr_id'] = sr_id

        link = Link(**kwargs)
        VByName.run = MagicMock(return_value=link)

        sr = Subreddit(id=sr_id)
        link.subreddit_slow = sr

        Subreddit.can_comment = MagicMock(return_value=can_comment)
        Link.can_view_promo = MagicMock(return_value=can_view_promo)

        return link
예제 #13
0
    def test_subreddit_logged_out(self):
        srname = "test1"
        subreddit = Subreddit(name=srname)
        srnames = srnames_from_site(self.logged_out, subreddit)

        self.assertEqual(srnames, {srname})
예제 #14
0
    srnames_from_site,
)
from r2.models import (
    Account,
    Collection,
    FakeAccount,
    Frontpage,
    PromoCampaign,
    Subreddit,
    MultiReddit,
)
from r2.tests import RedditTestCase, NonCache


subscriptions_srnames = ["foo", "bar"]
subscriptions = map(lambda srname: Subreddit(name=srname), subscriptions_srnames)
multi_srnames = ["bing", "bat"]
multi_subreddits = map(lambda srname: Subreddit(name=srname), multi_srnames)
nice_srname = "mylittlepony"
nsfw_srname = "pr0n"
questionably_nsfw = "sexstories"
quarantined_srname = "croontown"
naughty_subscriptions = [
    Subreddit(name=nice_srname),
    Subreddit(name=nsfw_srname, over_18=True),
    Subreddit(name=quarantined_srname, quarantine=True),
]
nsfw_collection_srnames = [questionably_nsfw, nsfw_srname]
nsfw_collection = Collection(
    name="after dark",
    sr_names=nsfw_collection_srnames,