예제 #1
0
def test_created_submission_attributes(db, monkeypatch):
    """
    ``Submission.create`` adds a Submission to the database with attributes
    taken from its arguments and datestamped with the current time.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    monkeypatch.setattr(content.Submission, 'now',
                        staticmethod(lambda: arrow.get(0)))
    content.Submission.create(owner=user,
                              title='Title',
                              rating=ratings.GENERAL,
                              description='Description.',
                              category=Category.visual,
                              subtype=1010,
                              folder=None,
                              tags=['spam', 'eggs'],
                              submission_data=data)
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.userid == user.userid
    assert sub.title == 'Title'
    assert sub.rating == ratings.GENERAL
    assert sub.content == 'Description.'
    assert sub.subtype == 1010
    assert sub.folderid is None
    assert sorted(sub.tags) == ['eggs', 'spam']
    assert sub.unixtime == arrow.get(0)
    assert sub.sorttime == arrow.get(0)
예제 #2
0
def test_submission_data_required(db):
    """
    Submission data or an embed link is required.
    """
    user = make_user(db)
    with pytest.raises(exceptions.InvalidData):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
            category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'])
예제 #3
0
def test_no_visual_embedded_submissions(db):
    """
    Visual submission can't have an embed link.
    """
    user = make_user(db)
    with pytest.raises(ValueError):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
            category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'],
            embed_link='https://example.com/')
예제 #4
0
def test_invalid_category_embed_link(db):
    """
    Unrecognized categories are treated as errors when a submission is created
    with an embed link.
    """
    user = make_user(db)
    with pytest.raises(ValueError):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.', category='spam',
            subtype=1010, folder=None, tags=['spam', 'eggs'], embed_link='https://example.com/')
예제 #5
0
def test_submission_data_gets_limited(db):
    """
    Submission data must be smaller than the size limit.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    with pytest.raises(exceptions.SubmissionFileTooLarge):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
            category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'],
            submission_data=data, submission_size_limit=1)
예제 #6
0
def test_submission_data_gets_limited_to_default(db, monkeypatch):
    """
    If no submission size limit is provided, the default is used per-file type.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    monkeypatch.setitem(constants.DEFAULT_LIMITS, 'gif', 1)
    with pytest.raises(exceptions.SubmissionFileTooLarge):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
            category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'], submission_data=data)
예제 #7
0
def test_invalid_category_submission_data(db):
    """
    Unrecognized categories are treated as errors when a submission is created
    with submission data.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    with pytest.raises(ValueError):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.', category='spam',
            subtype=1010, folder=None, tags=['spam', 'eggs'], submission_data=data)
예제 #8
0
def test_submission_data_and_embed_link_fails(db):
    """
    Conversely, a submission with both submission data and an embed link is
    invalid.
    """
    user = make_user(db)
    data = datadir.join('fake.swf').read(mode='rb')
    with pytest.raises(exceptions.InvalidData):
        content.Submission.create(
            owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
            category=Category.multimedia, subtype=1010, folder=None, tags=['spam', 'eggs'],
            submission_data=data, embed_link='https://example.com/')
예제 #9
0
def test_created_submission_critique_setting(db):
    """
    Creating a critique-requested submission sets the critique setting.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    content.Submission.create(
        owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
        category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'],
        submission_data=data, critique_requested=True)
    db.flush()
    [sub] = content.Submission.query.all()
    assert 'critique' in sub.settings
예제 #10
0
def test_multimedia_submission_embed(db):
    """
    Embedded multimedia submissions store the embed url as part of the description.
    """
    user = make_user(db)
    content.Submission.create(
        owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
        category=Category.multimedia, subtype=1010, folder=None, tags=['spam', 'eggs'],
        embed_link='https://example.com/')
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.settings['embed-type'] == 'other'
    assert sub.content == 'https://example.com/\nDescription.'
예제 #11
0
def test_submission_data_required(db):
    """
    Submission data or an embed link is required.
    """
    user = make_user(db)
    with pytest.raises(exceptions.InvalidData):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category=Category.visual,
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'])
예제 #12
0
def test_literary_submission_embed(db):
    """
    Embedded literary submissions create GoogleDocEmbeds as well.
    """
    user = make_user(db)
    content.Submission.create(
        owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
        category=Category.literary, subtype=1010, folder=None, tags=['spam', 'eggs'],
        embed_link='https://example.com/')
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.settings['embed-type'] == 'google-drive'
    [embed] = content.GoogleDocEmbed.query.all()
    assert embed.embed_url == 'https://example.com/'
예제 #13
0
def test_no_visual_embedded_submissions(db):
    """
    Visual submission can't have an embed link.
    """
    user = make_user(db)
    with pytest.raises(ValueError):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category=Category.visual,
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  embed_link='https://example.com/')
예제 #14
0
def test_invalid_category_embed_link(db):
    """
    Unrecognized categories are treated as errors when a submission is created
    with an embed link.
    """
    user = make_user(db)
    with pytest.raises(ValueError):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category='spam',
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  embed_link='https://example.com/')
예제 #15
0
def test_submission_data_gets_limited(db):
    """
    Submission data must be smaller than the size limit.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    with pytest.raises(exceptions.SubmissionFileTooLarge):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category=Category.visual,
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  submission_data=data,
                                  submission_size_limit=1)
예제 #16
0
def test_submission_data_gets_limited_to_default(db, monkeypatch):
    """
    If no submission size limit is provided, the default is used per-file type.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    monkeypatch.setitem(constants.DEFAULT_LIMITS, 'gif', 1)
    with pytest.raises(exceptions.SubmissionFileTooLarge):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category=Category.visual,
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  submission_data=data)
예제 #17
0
def test_invalid_category_submission_data(db):
    """
    Unrecognized categories are treated as errors when a submission is created
    with submission data.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    with pytest.raises(ValueError):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category='spam',
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  submission_data=data)
예제 #18
0
def test_submission_data_and_embed_link_fails(db):
    """
    Conversely, a submission with both submission data and an embed link is
    invalid.
    """
    user = make_user(db)
    data = datadir.join('fake.swf').read(mode='rb')
    with pytest.raises(exceptions.InvalidData):
        content.Submission.create(owner=user,
                                  title='Title',
                                  rating=ratings.GENERAL,
                                  description='Description.',
                                  category=Category.multimedia,
                                  subtype=1010,
                                  folder=None,
                                  tags=['spam', 'eggs'],
                                  submission_data=data,
                                  embed_link='https://example.com/')
예제 #19
0
def test_multimedia_submission_embed(db):
    """
    Embedded multimedia submissions store the embed url as part of the description.
    """
    user = make_user(db)
    content.Submission.create(owner=user,
                              title='Title',
                              rating=ratings.GENERAL,
                              description='Description.',
                              category=Category.multimedia,
                              subtype=1010,
                              folder=None,
                              tags=['spam', 'eggs'],
                              embed_link='https://example.com/')
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.settings['embed-type'] == 'other'
    assert sub.content == 'https://example.com/\nDescription.'
예제 #20
0
def test_literary_submission_embed(db):
    """
    Embedded literary submissions create GoogleDocEmbeds as well.
    """
    user = make_user(db)
    content.Submission.create(owner=user,
                              title='Title',
                              rating=ratings.GENERAL,
                              description='Description.',
                              category=Category.literary,
                              subtype=1010,
                              folder=None,
                              tags=['spam', 'eggs'],
                              embed_link='https://example.com/')
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.settings['embed-type'] == 'google-drive'
    [embed] = content.GoogleDocEmbed.query.all()
    assert embed.embed_url == 'https://example.com/'
예제 #21
0
def test_created_submission_critique_setting(db):
    """
    Creating a critique-requested submission sets the critique setting.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    content.Submission.create(owner=user,
                              title='Title',
                              rating=ratings.GENERAL,
                              description='Description.',
                              category=Category.visual,
                              subtype=1010,
                              folder=None,
                              tags=['spam', 'eggs'],
                              submission_data=data,
                              critique_requested=True)
    db.flush()
    [sub] = content.Submission.query.all()
    assert 'critique' in sub.settings
예제 #22
0
def test_created_submission_attributes(db, monkeypatch):
    """
    ``Submission.create`` adds a Submission to the database with attributes
    taken from its arguments and datestamped with the current time.
    """
    user = make_user(db)
    data = datadir.join('1x70.gif').read(mode='rb')
    monkeypatch.setattr(content.Submission, 'now', staticmethod(lambda: arrow.get(0)))
    content.Submission.create(
        owner=user, title='Title', rating=ratings.GENERAL, description='Description.',
        category=Category.visual, subtype=1010, folder=None, tags=['spam', 'eggs'],
        submission_data=data)
    db.flush()
    [sub] = content.Submission.query.all()
    assert sub.userid == user.userid
    assert sub.title == 'Title'
    assert sub.rating == ratings.GENERAL
    assert sub.content == 'Description.'
    assert sub.subtype == 1010
    assert sub.folderid is None
    assert sorted(sub.tags) == ['eggs', 'spam']
    assert sub.unixtime == arrow.get(0)
    assert sub.sorttime == arrow.get(0)