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)
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'])
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/')
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/')
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)
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)
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)
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/')
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
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.'
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'])
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/'
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/')
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/')
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)
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)
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)
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/')
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.'
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/'
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
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)