Ejemplo n.º 1
0
def test_submission_search(db, term, n_results):
    user = db_utils.create_user()
    tag1 = db_utils.create_tag('walrus')
    tag2 = db_utils.create_tag('penguin')

    s1 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag1, s1)
    db_utils.create_submission_tag(tag2, s1)

    s2 = db_utils.create_submission(user, rating=ratings.EXPLICIT.code)
    db_utils.create_submission_tag(tag1, s2)

    s3 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag2, s3)

    s4 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag2, s4)

    results, _, _ = search.select(search=search.Query.parse(term, 'submit'),
                                  userid=user,
                                  rating=ratings.EXPLICIT.code,
                                  limit=100,
                                  cat=None,
                                  subcat=None,
                                  within='',
                                  backid=None,
                                  nextid=None)

    assert len(results) == n_results
Ejemplo n.º 2
0
    def test_blocked_tag(self):
        user1 = db_utils.create_user()
        user2 = db_utils.create_user()

        # submission s1 has a walrus in it, but user2 does not like walruses
        s1 = db_utils.create_submission(user1, rating=ratings.GENERAL.code)
        tag1 = db_utils.create_tag("walrus")
        db_utils.create_submission_tag(tag1, s1)
        db_utils.create_blocktag(user2, tag1, ratings.GENERAL.code)
        self.assertEqual(
            0, len(submission.select_list(user2, ratings.GENERAL.code, 10)))

        # submission s2 has a penguin in it. user2 does not want to see penguins in
        # adult circumstances, but s2 is general, so visibility is OK
        s2 = db_utils.create_submission(user1, rating=ratings.GENERAL.code)
        tag2 = db_utils.create_tag("penguin")
        db_utils.create_submission_tag(tag2, s2)
        db_utils.create_blocktag(user2, tag2, ratings.EXPLICIT.code)
        self.assertEqual(
            1, len(submission.select_list(user2, ratings.EXPLICIT.code, 10)))

        # submission s3 has penguins on it in adult situations, but User2
        # is okay with that if it's one of User2's own submissions.
        s3 = db_utils.create_submission(user2, rating=ratings.EXPLICIT.code)
        db_utils.create_submission_tag(tag2, s3)
        self.assertEqual(
            2, len(submission.select_list(user2, ratings.EXPLICIT.code, 10)))
Ejemplo n.º 3
0
    def test_blocked_tag(self):
        user1 = db_utils.create_user()
        user2 = db_utils.create_user()

        # submission s1 has a walrus in it, but user2 does not like walruses
        s1 = db_utils.create_submission(user1, rating=ratings.GENERAL.code)
        tag1 = db_utils.create_tag("walrus")
        db_utils.create_submission_tag(tag1, s1)
        db_utils.create_blocktag(user2, tag1, ratings.GENERAL.code)
        self.assertEqual(
            0, len(submission.select_list(user2, ratings.GENERAL.code, 10)))

        # submission s2 has a penguin in it. user2 does not want to see penguins in
        # adult circumstances, but s2 is general, so visibility is OK
        s2 = db_utils.create_submission(user1, rating=ratings.GENERAL.code)
        tag2 = db_utils.create_tag("penguin")
        db_utils.create_submission_tag(tag2, s2)
        db_utils.create_blocktag(user2, tag2, ratings.EXPLICIT.code)
        self.assertEqual(
            1, len(submission.select_list(user2, ratings.EXPLICIT.code, 10)))

        # submission s3 has penguins on it in adult situations, but User2
        # is okay with that if it's one of User2's own submissions.
        s3 = db_utils.create_submission(user2, rating=ratings.EXPLICIT.code)
        db_utils.create_submission_tag(tag2, s3)
        self.assertEqual(
            2, len(submission.select_list(user2, ratings.EXPLICIT.code, 10)))
Ejemplo n.º 4
0
def test_search_blocked_tags(db, rating, block_rating):
    owner = db_utils.create_user()
    viewer = db_utils.create_user()

    allowed_tag = db_utils.create_tag('walrus')
    blocked_tag = db_utils.create_tag('penguin')

    db_utils.create_blocktag(viewer, blocked_tag, block_rating.code)

    s1 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(allowed_tag, s1)
    db_utils.create_submission_tag(blocked_tag, s1)

    s2 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(allowed_tag, s2)

    s3 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(blocked_tag, s3)

    def check(term, n_results):
        results, _, _ = search.select(
            search=search.Query.parse(term, 'submit'),
            userid=viewer, rating=ratings.EXPLICIT.code, limit=100,
            cat=None, subcat=None, within='', backid=None, nextid=None)

        assert len(results) == n_results

    if rating < block_rating:
        check(u'walrus', 2)
        check(u'penguin', 2)
    else:
        check(u'walrus', 1)
        check(u'penguin', 0)
Ejemplo n.º 5
0
def test_blacklist_homepage(app):
    """
    Assert that changes to the blacklist apply to the home page immediately.
    """
    submitting_user = db_utils.create_user()
    viewing_user = db_utils.create_user()
    tag1 = db_utils.create_tag('walrus')
    tag2 = db_utils.create_tag('penguin')

    s1 = db_utils.create_submission(submitting_user, rating=ratings.GENERAL.code, subtype=1010)
    db_utils.create_submission_tag(tag1, s1)

    s2 = db_utils.create_submission(submitting_user, rating=ratings.GENERAL.code, subtype=1010)
    db_utils.create_submission_tag(tag2, s2)

    cookie = db_utils.create_session(viewing_user)

    resp = app.get('/', headers={'Cookie': cookie})
    assert len(resp.html.select('#home-art .thumb')) == 2

    app.post('/manage/tagfilters',
             {'title': 'walrus', 'rating': str(ratings.GENERAL.code), 'do': 'create'},
             headers={'Cookie': cookie}, status=303)

    resp = app.get('/', headers={'Cookie': cookie})
    assert len(resp.html.select('#home-art .thumb')) == 1

    app.post('/manage/tagfilters',
             {'title': 'walrus', 'rating': str(ratings.GENERAL.code), 'do': 'remove'},
             headers={'Cookie': cookie}, status=303)

    resp = app.get('/', headers={'Cookie': cookie})
    assert len(resp.html.select('#home-art .thumb')) == 2
Ejemplo n.º 6
0
    def test_recently_popular(self):
        owner = db_utils.create_user()
        now = arrow.now()

        sub1 = db_utils.create_submission(owner,
                                          rating=ratings.GENERAL.code,
                                          unixtime=now -
                                          datetime.timedelta(days=6))
        sub2 = db_utils.create_submission(owner,
                                          rating=ratings.GENERAL.code,
                                          unixtime=now -
                                          datetime.timedelta(days=4))
        sub3 = db_utils.create_submission(owner,
                                          rating=ratings.GENERAL.code,
                                          unixtime=now -
                                          datetime.timedelta(days=2))
        sub4 = db_utils.create_submission(owner,
                                          rating=ratings.GENERAL.code,
                                          unixtime=now)
        tag = db_utils.create_tag(u'tag')

        for s in [sub1, sub2, sub3, sub4]:
            db_utils.create_submission_tag(tag, s)

        for i in range(100):
            favoriter = db_utils.create_user()
            db_utils.create_favorite(favoriter, submitid=sub2, unixtime=now)

        recently_popular = submission.select_recently_popular()

        self.assertEqual([item['submitid'] for item in recently_popular],
                         [sub2, sub4, sub3, sub1])
Ejemplo n.º 7
0
def test_search_pagination(db):
    owner = db_utils.create_user()
    submissions = [db_utils.create_submission(owner, rating=ratings.GENERAL.code) for i in range(30)]
    tag = db_utils.create_tag('penguin')
    search_query = search.Query.parse(u'penguin', 'submit')

    for submission in submissions:
        db_utils.create_submission_tag(tag, submission)

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner, rating=ratings.EXPLICIT.code, limit=_page_limit,
        cat=None, subcat=None, within='', backid=None, nextid=None)

    assert back_count == 0
    assert next_count == search.COUNT_LIMIT
    assert [item['submitid'] for item in result] == submissions[:-_page_limit - 1:-1]

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner, rating=ratings.EXPLICIT.code, limit=_page_limit,
        cat=None, subcat=None, within='', backid=None, nextid=submissions[-_page_limit])

    assert back_count == _page_limit
    assert next_count == search.COUNT_LIMIT
    assert [item['submitid'] for item in result] == submissions[-_page_limit - 1:-2 * _page_limit - 1:-1]

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner, rating=ratings.EXPLICIT.code, limit=_page_limit,
        cat=None, subcat=None, within='', backid=submissions[_page_limit - 1], nextid=None)

    assert back_count == search.COUNT_LIMIT
    assert next_count == _page_limit
    assert [item['submitid'] for item in result] == submissions[2 * _page_limit - 1:_page_limit - 1:-1]
Ejemplo n.º 8
0
def test_search_pagination(db):
    owner = db_utils.create_user()
    submissions = [
        db_utils.create_submission(owner, rating=ratings.GENERAL.code)
        for i in range(30)
    ]
    tag = db_utils.create_tag('penguin')
    search_query = search.Query.parse(u'penguin', 'submit')

    for submission in submissions:
        db_utils.create_submission_tag(tag, submission)

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner,
        rating=ratings.EXPLICIT.code,
        limit=_page_limit,
        cat=None,
        subcat=None,
        within='',
        backid=None,
        nextid=None)

    assert back_count == 0
    assert next_count == search.COUNT_LIMIT
    assert [item['submitid']
            for item in result] == submissions[:-_page_limit - 1:-1]

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner,
        rating=ratings.EXPLICIT.code,
        limit=_page_limit,
        cat=None,
        subcat=None,
        within='',
        backid=None,
        nextid=submissions[-_page_limit])

    assert back_count == _page_limit
    assert next_count == search.COUNT_LIMIT
    assert [item['submitid'] for item in result
            ] == submissions[-_page_limit - 1:-2 * _page_limit - 1:-1]

    result, next_count, back_count = search.select(
        search=search_query,
        userid=owner,
        rating=ratings.EXPLICIT.code,
        limit=_page_limit,
        cat=None,
        subcat=None,
        within='',
        backid=submissions[_page_limit - 1],
        nextid=None)

    assert back_count == search.COUNT_LIMIT
    assert next_count == _page_limit
    assert [item['submitid'] for item in result
            ] == submissions[2 * _page_limit - 1:_page_limit - 1:-1]
Ejemplo n.º 9
0
def test_search_blocked_tags(db, rating, block_rating):
    owner = db_utils.create_user()
    viewer = db_utils.create_user()

    allowed_tag = db_utils.create_tag('walrus')
    blocked_tag = db_utils.create_tag('penguin')

    db_utils.create_blocktag(viewer, blocked_tag, block_rating.code)

    s1 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(allowed_tag, s1)
    db_utils.create_submission_tag(blocked_tag, s1)

    s2 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(allowed_tag, s2)

    s3 = db_utils.create_submission(owner, rating=rating.code)
    db_utils.create_submission_tag(blocked_tag, s3)

    def check(term, n_results):
        results, _, _ = search.select(search=search.Query.parse(
            term, 'submit'),
                                      userid=viewer,
                                      rating=ratings.EXPLICIT.code,
                                      limit=100,
                                      cat=None,
                                      subcat=None,
                                      within='',
                                      backid=None,
                                      nextid=None)

        assert len(results) == n_results

    if rating < block_rating:
        check(u'walrus', 2)
        check(u'penguin', 2)
    else:
        check(u'walrus', 1)
        check(u'penguin', 0)
Ejemplo n.º 10
0
 def test_can_see_own_blocktag_journal(self):
     """
     Can see your own journal in a listing even with a blocked tag.
     """
     block_tagid = db_utils.create_tag("blocked")
     db_utils.create_blocktag(self.user1, block_tagid, ratings.GENERAL.code)
     journalid = db_utils.create_journal(self.user1, "My blocktag journal")
     db_utils.create_journal_tag(block_tagid, journalid)
     # A journal that we should NOT see.
     other_journalid = db_utils.create_journal(self.user2, "Other user's blocktag journal")
     db_utils.create_journal_tag(block_tagid, other_journalid)
     self.assertEqual(
         journalid,
         journal.select_user_list(self.user1, ratings.GENERAL.code, 100)[0]['journalid'])
Ejemplo n.º 11
0
 def test_can_see_own_blocktag_character(self):
     """
     Can see your own character in a listing even with a blocked tag.
     """
     block_tagid = db_utils.create_tag("blocked")
     db_utils.create_blocktag(self.user1, block_tagid, ratings.GENERAL.code)
     charid = db_utils.create_character(self.user1, name="My blocktag character")
     db_utils.create_character_tag(block_tagid, charid)
     # A journal that we should NOT see.
     other_charid = db_utils.create_character(self.user2, name="Other user's blocktag character")
     db_utils.create_character_tag(block_tagid, other_charid)
     self.assertEqual(
         charid,
         character.select_list(self.user1, ratings.GENERAL.code, 100)[0]['charid'])
Ejemplo n.º 12
0
 def test_can_see_own_blocktag_character(self):
     """
     Can see your own character in a listing even with a blocked tag.
     """
     block_tagid = db_utils.create_tag("blocked")
     db_utils.create_blocktag(self.user1, block_tagid, ratings.GENERAL.code)
     charid = db_utils.create_character(self.user1, name="My blocktag character")
     db_utils.create_character_tag(block_tagid, charid)
     # A journal that we should NOT see.
     other_charid = db_utils.create_character(self.user2, name="Other user's blocktag character")
     db_utils.create_character_tag(block_tagid, other_charid)
     self.assertEqual(
         charid,
         character.select_list(self.user1, ratings.GENERAL.code, 100)[0]['charid'])
Ejemplo n.º 13
0
def test_submission_search(db, term, n_results):
    user = db_utils.create_user()
    tag1 = db_utils.create_tag('walrus')
    tag2 = db_utils.create_tag('penguin')

    s1 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag1, s1)
    db_utils.create_submission_tag(tag2, s1)

    s2 = db_utils.create_submission(user, rating=ratings.EXPLICIT.code)
    db_utils.create_submission_tag(tag1, s2)

    s3 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag2, s3)

    s4 = db_utils.create_submission(user, rating=ratings.GENERAL.code)
    db_utils.create_submission_tag(tag2, s4)

    results, _, _ = search.select(
        search=search.Query.parse(term, 'submit'),
        userid=user, rating=ratings.EXPLICIT.code, limit=100,
        cat=None, subcat=None, within='', backid=None, nextid=None)

    assert len(results) == n_results
Ejemplo n.º 14
0
 def test_can_see_own_blocktag_journal(self):
     """
     Can see your own journal in a listing even with a blocked tag.
     """
     block_tagid = db_utils.create_tag("blocked")
     db_utils.create_blocktag(self.user1, block_tagid, ratings.GENERAL.code)
     journalid = db_utils.create_journal(self.user1, "My blocktag journal")
     db_utils.create_journal_tag(block_tagid, journalid)
     # A journal that we should NOT see.
     other_journalid = db_utils.create_journal(
         self.user2, "Other user's blocktag journal")
     db_utils.create_journal_tag(block_tagid, other_journalid)
     self.assertEqual(
         journalid,
         journal.select_user_list(self.user1, ratings.GENERAL.code,
                                  100)[0]['journalid'])
Ejemplo n.º 15
0
    def test_recently_popular(self):
        owner = db_utils.create_user()
        now = arrow.now()

        sub1 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=6))
        sub2 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=4))
        sub3 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now - datetime.timedelta(days=2))
        sub4 = db_utils.create_submission(owner, rating=ratings.GENERAL.code, unixtime=now)
        tag = db_utils.create_tag(u'tag')

        for s in [sub1, sub2, sub3, sub4]:
            db_utils.create_submission_tag(tag, s)

        for i in range(100):
            favoriter = db_utils.create_user()
            db_utils.create_favorite(favoriter, sub2, 's', unixtime=now)

        recently_popular = submission.select_recently_popular()

        self.assertEqual(
            [item['submitid'] for item in recently_popular],
            [sub2, sub4, sub3, sub1])