Exemple #1
0
def test_get_post_thumbnail_url(input_mime_type, config_injector):
    config_injector({'data_url': 'http://example.com/'})
    post = db.Post()
    post.post_id = 1
    post.mime_type = input_mime_type
    assert posts.get_post_thumbnail_url(post) \
        == 'http://example.com/generated-thumbnails/1.jpg'
Exemple #2
0
def test_saving_post(post_factory, user_factory, tag_factory):
    user = user_factory()
    tag1 = tag_factory()
    tag2 = tag_factory()
    related_post1 = post_factory()
    related_post2 = post_factory()
    post = db.Post()
    post.safety = 'safety'
    post.type = 'type'
    post.checksum = 'deadbeef'
    post.creation_time = datetime(1997, 1, 1)
    post.last_edit_time = datetime(1998, 1, 1)
    post.mime_type = 'application/whatever'
    db.session.add_all([user, tag1, tag2, related_post1, related_post2, post])

    post.user = user
    post.tags.append(tag1)
    post.tags.append(tag2)
    post.relations.append(related_post1)
    post.relations.append(related_post2)
    db.session.commit()

    db.session.refresh(post)
    assert not db.session.dirty
    assert post.user.user_id is not None
    assert post.safety == 'safety'
    assert post.type == 'type'
    assert post.checksum == 'deadbeef'
    assert post.creation_time == datetime(1997, 1, 1)
    assert post.last_edit_time == datetime(1998, 1, 1)
    assert len(post.relations) == 2
Exemple #3
0
def test_update_post_relations(post_factory):
    relation1 = post_factory()
    relation2 = post_factory()
    db.session.add_all([relation1, relation2])
    db.session.flush()
    post = db.Post()
    posts.update_post_relations(post, [relation1.post_id, relation2.post_id])
    assert len(post.relations) == 2
    assert post.relations[0].post_id == relation1.post_id
    assert post.relations[1].post_id == relation2.post_id
Exemple #4
0
def test_update_post_tags(tag_factory):
    post = db.Post()
    with unittest.mock.patch(
            'szurubooru.func.tags.get_or_create_tags_by_names'):
        tags.get_or_create_tags_by_names.side_effect \
            = lambda tag_names: \
                ([tag_factory(names=[name]) for name in tag_names], [])
        posts.update_post_tags(post, ['tag1', 'tag2'])
    assert len(post.tags) == 2
    assert post.tags[0].names[0].name == 'tag1'
    assert post.tags[1].names[0].name == 'tag2'
Exemple #5
0
 def factory(
         id=None,
         safety=db.Post.SAFETY_SAFE,
         type=db.Post.TYPE_IMAGE,
         checksum='...'):
     post = db.Post()
     post.post_id = id
     post.safety = safety
     post.type = type
     post.checksum = checksum
     post.flags = []
     post.mime_type = 'application/octet-stream'
     post.creation_time = datetime.datetime(1996, 1, 1)
     return post
Exemple #6
0
def create_post(content, tag_names, user):
    post = db.Post()
    post.safety = db.Post.SAFETY_SAFE
    post.user = user
    post.creation_time = datetime.datetime.now()
    post.flags = []

    # we'll need post ID
    post.type = ''
    post.checksum = ''
    post.mime_type = ''
    db.session.add(post)
    db.session.flush()

    update_post_content(post, content)
    update_post_tags(post, tag_names)
    return post
Exemple #7
0
def test_update_post_notes():
    post = db.Post()
    posts.update_post_notes(post, [
        {
            'polygon': [[0, 0], [0, 1], [1, 0], [0, 0]],
            'text': 'text1'
        },
        {
            'polygon': [[0, 0], [0, 1], [1, 0], [0, 0]],
            'text': 'text2'
        },
    ])
    assert len(post.notes) == 2
    assert post.notes[0].polygon == [[0, 0], [0, 1], [1, 0], [0, 0]]
    assert post.notes[0].text == 'text1'
    assert post.notes[1].polygon == [[0, 0], [0, 1], [1, 0], [0, 0]]
    assert post.notes[1].text == 'text2'
Exemple #8
0
def test_get_post_thumbnail_path(input_mime_type):
    post = db.Post()
    post.post_id = 1
    post.mime_type = input_mime_type
    assert posts.get_post_thumbnail_path(post) == 'generated-thumbnails/1.jpg'
Exemple #9
0
def test_update_post_non_existing_relations():
    post = db.Post()
    with pytest.raises(posts.InvalidPostRelationError):
        posts.update_post_relations(post, [100])
Exemple #10
0
def test_get_post_thumbnail_backup_path(input_mime_type):
    post = db.Post()
    post.post_id = 1
    post.mime_type = input_mime_type
    assert posts.get_post_thumbnail_backup_path(post) \
        == 'posts/custom-thumbnails/1.dat'
Exemple #11
0
def test_update_post_flags():
    post = db.Post()
    posts.update_post_flags(post, ['loop'])
    assert post.flags == ['loop']
Exemple #12
0
def test_update_post_source():
    post = db.Post()
    posts.update_post_source(post, 'x')
    assert post.source == 'x'
Exemple #13
0
def test_update_post_invalid_safety():
    post = db.Post()
    with pytest.raises(posts.InvalidPostSafetyError):
        posts.update_post_safety(post, 'bad')
Exemple #14
0
def test_update_post_safety(input_safety, expected_safety):
    post = db.Post()
    posts.update_post_safety(post, input_safety)
    assert post.safety == expected_safety
Exemple #15
0
def test_get_post_url(input_mime_type, expected_url, config_injector):
    config_injector({'data_url': 'http://example.com/'})
    post = db.Post()
    post.post_id = 1
    post.mime_type = input_mime_type
    assert posts.get_post_content_url(post) == expected_url
Exemple #16
0
def test_update_post_invalid_notes(input):
    post = db.Post()
    with pytest.raises(posts.InvalidPostNoteError):
        posts.update_post_notes(post, input)
Exemple #17
0
def test_update_post_invalid_source():
    post = db.Post()
    with pytest.raises(posts.InvalidPostSourceError):
        posts.update_post_source(post, 'x' * 1000)
Exemple #18
0
def test_update_post_invalid_flags():
    post = db.Post()
    with pytest.raises(posts.InvalidPostFlagError):
        posts.update_post_flags(post, ['invalid'])
Exemple #19
0
def test_update_post_invalid_content(input_content):
    post = db.Post()
    with pytest.raises(posts.InvalidPostContentError):
        posts.update_post_content(post, input_content)
Exemple #20
0
def test_serialize_post(post_factory, user_factory, tag_factory):
    with unittest.mock.patch('szurubooru.func.users.serialize_user'), \
        unittest.mock.patch('szurubooru.func.posts.files.has', return_value=True):
        users.serialize_user.side_effect = lambda user, auth_user: user.name

        auth_user = user_factory(name='auth user')
        post = db.Post()
        post.post_id = 1
        post.creation_time = datetime.datetime(1997, 1, 1)
        post.last_edit_time = datetime.datetime(1998, 1, 1)
        post.tags = [
            tag_factory(names=['tag1', 'tag2']),
            tag_factory(names=['tag3'])
        ]
        post.safety = db.Post.SAFETY_SAFE
        post.source = '4gag'
        post.type = db.Post.TYPE_IMAGE
        post.checksum = 'deadbeef'
        post.mime_type = 'image/jpeg'
        post.file_size = 100
        post.user = user_factory(name='post author')
        post.canvas_width = 200
        post.canvas_height = 300
        post.flags = ['loop']
        db.session.add(post)
        db.session.flush()
        db.session.add_all([
            db.PostFavorite(post=post,
                            user=user_factory(name='fav1'),
                            time=datetime.datetime(1800, 1, 1)),
            db.PostFeature(post=post,
                           user=user_factory(),
                           time=datetime.datetime(1999, 1, 1)),
            db.PostScore(post=post,
                         user=auth_user,
                         score=-1,
                         time=datetime.datetime(1800, 1, 1)),
            db.PostScore(post=post,
                         user=user_factory(),
                         score=1,
                         time=datetime.datetime(1800, 1, 1)),
            db.PostScore(post=post,
                         user=user_factory(),
                         score=1,
                         time=datetime.datetime(1800, 1, 1))
        ])
        db.session.flush()

        result = posts.serialize_post(post, auth_user)

    assert result == {
        'id': 1,
        'creationTime': datetime.datetime(1997, 1, 1),
        'lastEditTime': datetime.datetime(1998, 1, 1),
        'safety': 'safe',
        'source': '4gag',
        'type': 'image',
        'checksum': 'deadbeef',
        'fileSize': 100,
        'canvasWidth': 200,
        'canvasHeight': 300,
        'contentUrl': 'http://example.com/posts/1.jpg',
        'thumbnailUrl': 'http://example.com/generated-thumbnails/1.jpg',
        'flags': ['loop'],
        'tags': ['tag1', 'tag3'],
        'relations': [],
        'notes': [],
        'user': '******',
        'score': 1,
        'ownScore': -1,
        'featureCount': 1,
        'lastFeatureTime': datetime.datetime(1999, 1, 1),
        'favoritedBy': ['fav1'],
        'hasCustomThumbnail': True,
    }
Exemple #21
0
def test_get_post_content_path(input_mime_type, expected_path):
    post = db.Post()
    post.post_id = 1
    post.mime_type = input_mime_type
    assert posts.get_post_content_path(post) == expected_path