diff --git a/server/szurubooru/db/session.py b/server/szurubooru/db/session.py index 3fb1fb98..fd77b4c2 100644 --- a/server/szurubooru/db/session.py +++ b/server/szurubooru/db/session.py @@ -5,7 +5,7 @@ from szurubooru import config # pylint: disable=invalid-name _engine = sqlalchemy.create_engine(config.config['database']) -sessionmaker = sqlalchemy.orm.sessionmaker(bind=_engine) +sessionmaker = sqlalchemy.orm.sessionmaker(bind=_engine, autoflush=False) session = sqlalchemy.orm.scoped_session(sessionmaker) _data = threading.local() diff --git a/server/szurubooru/tests/api/test_comment_retrieving.py b/server/szurubooru/tests/api/test_comment_retrieving.py index 48bf3730..908e9eb8 100644 --- a/server/szurubooru/tests/api/test_comment_retrieving.py +++ b/server/szurubooru/tests/api/test_comment_retrieving.py @@ -18,6 +18,7 @@ def test_retrieving_multiple(user_factory, comment_factory, context_factory): comment1 = comment_factory(text='text 1') comment2 = comment_factory(text='text 2') db.session.add_all([comment1, comment2]) + db.session.flush() with patch('szurubooru.func.comments.serialize_comment'): comments.serialize_comment.return_value = 'serialized comment' result = api.comment_api.get_comments( diff --git a/server/szurubooru/tests/api/test_info.py b/server/szurubooru/tests/api/test_info.py index 28fce63f..58126583 100644 --- a/server/szurubooru/tests/api/test_info.py +++ b/server/szurubooru/tests/api/test_info.py @@ -19,6 +19,7 @@ def test_info_api( }, }) db.session.add_all([post_factory(), post_factory()]) + db.session.flush() expected_config_key = { 'userNameRegex': '1', diff --git a/server/szurubooru/tests/api/test_password_reset.py b/server/szurubooru/tests/api/test_password_reset.py index b84b7f79..52b568da 100644 --- a/server/szurubooru/tests/api/test_password_reset.py +++ b/server/szurubooru/tests/api/test_password_reset.py @@ -16,6 +16,7 @@ def inject_config(config_injector): def test_reset_sending_email(context_factory, user_factory): db.session.add(user_factory( name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + db.session.flush() for initiating_user in ['u1', 'user@example.com']: with patch('szurubooru.func.mailer.send_mail'): assert api.password_reset_api.start_password_reset( @@ -39,6 +40,7 @@ def test_trying_to_reset_non_existing(context_factory): def test_trying_to_reset_without_email(context_factory, user_factory): db.session.add( user_factory(name='u1', rank=db.User.RANK_REGULAR, email=None)) + db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.start_password_reset( context_factory(), {'user_name': 'u1'}) @@ -49,6 +51,7 @@ def test_confirming_with_good_token(context_factory, user_factory): name='u1', rank=db.User.RANK_REGULAR, email='user@example.com') old_hash = user.password_hash db.session.add(user) + db.session.flush() context = context_factory( params={'token': '4ac0be176fb364f13ee6b634c43220e2'}) result = api.password_reset_api.finish_password_reset( @@ -66,6 +69,7 @@ def test_trying_to_confirm_non_existing(context_factory): def test_trying_to_confirm_without_token(context_factory, user_factory): db.session.add(user_factory( name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.finish_password_reset( context_factory(params={}), {'user_name': 'u1'}) @@ -74,6 +78,7 @@ def test_trying_to_confirm_without_token(context_factory, user_factory): def test_trying_to_confirm_with_bad_token(context_factory, user_factory): db.session.add(user_factory( name='u1', rank=db.User.RANK_REGULAR, email='user@example.com')) + db.session.flush() with pytest.raises(errors.ValidationError): api.password_reset_api.finish_password_reset( context_factory(params={'token': 'bad'}), {'user_name': 'u1'}) diff --git a/server/szurubooru/tests/api/test_post_deleting.py b/server/szurubooru/tests/api/test_post_deleting.py index 19096e47..c4187ed4 100644 --- a/server/szurubooru/tests/api/test_post_deleting.py +++ b/server/szurubooru/tests/api/test_post_deleting.py @@ -13,6 +13,7 @@ def test_deleting(user_factory, post_factory, context_factory): auth_user = user_factory(rank=db.User.RANK_REGULAR) post = post_factory(id=1) db.session.add(post) + db.session.flush() with patch('szurubooru.func.tags.export_to_json'), \ patch('szurubooru.func.snapshots.delete'): result = api.post_api.delete_post( diff --git a/server/szurubooru/tests/api/test_post_featuring.py b/server/szurubooru/tests/api/test_post_featuring.py index c2822f8c..a0a82c75 100644 --- a/server/szurubooru/tests/api/test_post_featuring.py +++ b/server/szurubooru/tests/api/test_post_featuring.py @@ -18,6 +18,7 @@ def test_featuring(user_factory, post_factory, context_factory): auth_user = user_factory(rank=db.User.RANK_REGULAR) post = post_factory(id=1) db.session.add(post) + db.session.flush() assert not posts.get_post_by_id(1).is_featured with patch('szurubooru.func.posts.serialize_post'), \ patch('szurubooru.func.snapshots.modify'): diff --git a/server/szurubooru/tests/api/test_post_retrieving.py b/server/szurubooru/tests/api/test_post_retrieving.py index e37e1ecf..a33d60a3 100644 --- a/server/szurubooru/tests/api/test_post_retrieving.py +++ b/server/szurubooru/tests/api/test_post_retrieving.py @@ -19,6 +19,7 @@ def test_retrieving_multiple(user_factory, post_factory, context_factory): post1 = post_factory(id=1) post2 = post_factory(id=2) db.session.add_all([post1, post2]) + db.session.flush() with patch('szurubooru.func.posts.serialize_post'): posts.serialize_post.return_value = 'serialized post' result = api.post_api.get_posts( @@ -82,6 +83,7 @@ def test_trying_to_retrieve_multiple_without_privileges( def test_retrieving_single(user_factory, post_factory, context_factory): db.session.add(post_factory(id=1)) + db.session.flush() with patch('szurubooru.func.posts.serialize_post'): posts.serialize_post.return_value = 'serialized post' result = api.post_api.get_post( diff --git a/server/szurubooru/tests/api/test_snapshot_retrieving.py b/server/szurubooru/tests/api/test_snapshot_retrieving.py index 7e48d10b..73b6f060 100644 --- a/server/szurubooru/tests/api/test_snapshot_retrieving.py +++ b/server/szurubooru/tests/api/test_snapshot_retrieving.py @@ -25,6 +25,7 @@ def test_retrieving_multiple(user_factory, context_factory): snapshot1 = snapshot_factory() snapshot2 = snapshot_factory() db.session.add_all([snapshot1, snapshot2]) + db.session.flush() result = api.snapshot_api.get_snapshots( context_factory( params={'query': '', 'page': 1}, diff --git a/server/szurubooru/tests/api/test_tag_category_deleting.py b/server/szurubooru/tests/api/test_tag_category_deleting.py index 0a8d59bf..1f1cde4c 100644 --- a/server/szurubooru/tests/api/test_tag_category_deleting.py +++ b/server/szurubooru/tests/api/test_tag_category_deleting.py @@ -16,6 +16,7 @@ def test_deleting(user_factory, tag_category_factory, context_factory): category = tag_category_factory(name='category') db.session.add(tag_category_factory(name='root')) db.session.add(category) + db.session.flush() with patch('szurubooru.func.snapshots.delete'), \ patch('szurubooru.func.tags.export_to_json'): result = api.tag_category_api.delete_tag_category( diff --git a/server/szurubooru/tests/api/test_tag_category_retrieving.py b/server/szurubooru/tests/api/test_tag_category_retrieving.py index 7a834f04..4f6610b3 100644 --- a/server/szurubooru/tests/api/test_tag_category_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_category_retrieving.py @@ -19,6 +19,7 @@ def test_retrieving_multiple( tag_category_factory(name='c1'), tag_category_factory(name='c2'), ]) + db.session.flush() result = api.tag_category_api.get_tag_categories( context_factory(user=user_factory(rank=db.User.RANK_REGULAR))) assert [cat['name'] for cat in result['results']] == ['c1', 'c2'] @@ -27,6 +28,7 @@ def test_retrieving_multiple( def test_retrieving_single( user_factory, tag_category_factory, context_factory): db.session.add(tag_category_factory(name='cat')) + db.session.flush() result = api.tag_category_api.get_tag_category( context_factory(user=user_factory(rank=db.User.RANK_REGULAR)), {'category_name': 'cat'}) diff --git a/server/szurubooru/tests/api/test_tag_category_updating.py b/server/szurubooru/tests/api/test_tag_category_updating.py index 823d59ab..9dd0f6bb 100644 --- a/server/szurubooru/tests/api/test_tag_category_updating.py +++ b/server/szurubooru/tests/api/test_tag_category_updating.py @@ -23,6 +23,7 @@ def test_simple_updating(user_factory, tag_category_factory, context_factory): auth_user = user_factory(rank=db.User.RANK_REGULAR) category = tag_category_factory(name='name', color='black') db.session.add(category) + db.session.flush() with patch('szurubooru.func.tag_categories.serialize_category'), \ patch('szurubooru.func.tag_categories.update_category_name'), \ patch('szurubooru.func.tag_categories.update_category_color'), \ diff --git a/server/szurubooru/tests/api/test_tag_retrieving.py b/server/szurubooru/tests/api/test_tag_retrieving.py index fc3f90b2..86837f97 100644 --- a/server/szurubooru/tests/api/test_tag_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_retrieving.py @@ -18,6 +18,7 @@ def test_retrieving_multiple(user_factory, tag_factory, context_factory): tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([tag1, tag2]) + db.session.flush() with patch('szurubooru.func.tags.serialize_tag'): tags.serialize_tag.return_value = 'serialized tag' result = api.tag_api.get_tags( @@ -44,6 +45,7 @@ def test_trying_to_retrieve_multiple_without_privileges( def test_retrieving_single(user_factory, tag_factory, context_factory): db.session.add(tag_factory(names=['tag'])) + db.session.flush() with patch('szurubooru.func.tags.serialize_tag'): tags.serialize_tag.return_value = 'serialized tag' result = api.tag_api.get_tag( diff --git a/server/szurubooru/tests/api/test_tag_siblings_retrieving.py b/server/szurubooru/tests/api/test_tag_siblings_retrieving.py index bc1b20d8..6ba00868 100644 --- a/server/szurubooru/tests/api/test_tag_siblings_retrieving.py +++ b/server/szurubooru/tests/api/test_tag_siblings_retrieving.py @@ -11,6 +11,7 @@ def inject_config(config_injector): def test_get_tag_siblings(user_factory, tag_factory, context_factory): db.session.add(tag_factory(names=['tag'])) + db.session.flush() with patch('szurubooru.func.tags.serialize_tag'), \ patch('szurubooru.func.tags.get_tag_siblings'): tags.serialize_tag.side_effect = \ diff --git a/server/szurubooru/tests/api/test_user_retrieving.py b/server/szurubooru/tests/api/test_user_retrieving.py index 574fe7fc..6400e0d4 100644 --- a/server/szurubooru/tests/api/test_user_retrieving.py +++ b/server/szurubooru/tests/api/test_user_retrieving.py @@ -19,6 +19,7 @@ def test_retrieving_multiple(user_factory, context_factory): user1 = user_factory(name='u1', rank=db.User.RANK_MODERATOR) user2 = user_factory(name='u2', rank=db.User.RANK_MODERATOR) db.session.add_all([user1, user2]) + db.session.flush() with patch('szurubooru.func.users.serialize_user'): users.serialize_user.return_value = 'serialized user' result = api.user_api.get_users( @@ -47,6 +48,7 @@ def test_retrieving_single(user_factory, context_factory): user = user_factory(name='u1', rank=db.User.RANK_REGULAR) auth_user = user_factory(rank=db.User.RANK_REGULAR) db.session.add(user) + db.session.flush() with patch('szurubooru.func.users.serialize_user'): users.serialize_user.return_value = 'serialized user' result = api.user_api.get_user( @@ -65,6 +67,7 @@ def test_trying_to_retrieve_single_without_privileges( user_factory, context_factory): auth_user = user_factory(rank=db.User.RANK_ANONYMOUS) db.session.add(user_factory(name='u1', rank=db.User.RANK_REGULAR)) + db.session.flush() with pytest.raises(errors.AuthError): api.user_api.get_user( context_factory(user=auth_user), {'user_name': 'u1'}) diff --git a/server/szurubooru/tests/api/test_user_updating.py b/server/szurubooru/tests/api/test_user_updating.py index 30ff56b6..921b2697 100644 --- a/server/szurubooru/tests/api/test_user_updating.py +++ b/server/szurubooru/tests/api/test_user_updating.py @@ -71,6 +71,7 @@ def test_updating_user(context_factory, user_factory): def test_omitting_optional_field(user_factory, context_factory, field): user = user_factory(name='u1', rank=db.User.RANK_ADMINISTRATOR) db.session.add(user) + db.session.flush() params = { 'name': 'chewie', 'email': 'asd@asd.asd', @@ -97,6 +98,7 @@ def test_omitting_optional_field(user_factory, context_factory, field): def test_trying_to_update_non_existing(user_factory, context_factory): user = user_factory(name='u1', rank=db.User.RANK_ADMINISTRATOR) db.session.add(user) + db.session.flush() with pytest.raises(users.UserNotFoundError): api.user_api.update_user( context_factory(user=user), {'user_name': 'u2'}) @@ -114,6 +116,7 @@ def test_trying_to_update_field_without_privileges( user1 = user_factory(name='u1', rank=db.User.RANK_REGULAR) user2 = user_factory(name='u2', rank=db.User.RANK_REGULAR) db.session.add_all([user1, user2]) + db.session.flush() with pytest.raises(errors.AuthError): api.user_api.update_user( context_factory( diff --git a/server/szurubooru/tests/conftest.py b/server/szurubooru/tests/conftest.py index 3db1960c..d1431c94 100644 --- a/server/szurubooru/tests/conftest.py +++ b/server/szurubooru/tests/conftest.py @@ -78,7 +78,8 @@ def query_logger(): @pytest.yield_fixture(scope='function', autouse=True) def session(query_logger): # pylint: disable=unused-argument - db.sessionmaker = sqlalchemy.orm.sessionmaker(bind=_engine) + db.sessionmaker = sqlalchemy.orm.sessionmaker( + bind=_engine, autoflush=False) db.session = sqlalchemy.orm.scoped_session(db.sessionmaker) try: yield db.session diff --git a/server/szurubooru/tests/func/test_posts.py b/server/szurubooru/tests/func/test_posts.py index 4429c0fe..fe955323 100644 --- a/server/szurubooru/tests/func/test_posts.py +++ b/server/szurubooru/tests/func/test_posts.py @@ -196,6 +196,7 @@ def test_serialize_micro_post(post_factory, user_factory): def test_get_post_count(post_factory): previous_count = posts.get_post_count() db.session.add_all([post_factory(), post_factory()]) + db.session.flush() new_count = posts.get_post_count() assert previous_count == 0 assert new_count == 2 @@ -299,8 +300,8 @@ def test_update_post_content( }) post = post_factory(id=1) db.session.add(post) - db.session.flush() posts.update_post_content(post, read_asset(input_file)) + db.session.flush() assert post.mime_type == expected_mime_type assert post.type == expected_type assert post.checksum == 'crc' @@ -321,6 +322,7 @@ def test_update_post_content_to_existing_content( db.session.add_all([post, another_post]) db.session.flush() posts.update_post_content(post, read_asset('png.png')) + db.session.flush() with pytest.raises(posts.PostAlreadyUploadedError): posts.update_post_content(another_post, read_asset('png.png')) @@ -538,7 +540,9 @@ def test_feature_post(post_factory, user_factory): post = post_factory() user = user_factory() previous_featured_post = posts.try_get_featured_post() + db.session.flush() posts.feature_post(post, user) + db.session.flush() new_featured_post = posts.try_get_featured_post() assert previous_featured_post is None assert new_featured_post == post @@ -547,6 +551,8 @@ def test_feature_post(post_factory, user_factory): def test_delete(post_factory): post = post_factory() db.session.add(post) + db.session.flush() assert posts.get_post_count() == 1 posts.delete(post) + db.session.flush() assert posts.get_post_count() == 0 diff --git a/server/szurubooru/tests/func/test_snapshots.py b/server/szurubooru/tests/func/test_snapshots.py index 2577d006..d4c6754a 100644 --- a/server/szurubooru/tests/func/test_snapshots.py +++ b/server/szurubooru/tests/func/test_snapshots.py @@ -131,6 +131,7 @@ def test_create(tag_factory, user_factory): with patch('szurubooru.func.snapshots.get_tag_snapshot'): snapshots.get_tag_snapshot.return_value = 'mocked' snapshots.create(tag, user_factory()) + db.session.flush() results = db.session.query(db.Snapshot).all() assert len(results) == 1 assert results[0].operation == db.Snapshot.OPERATION_CREATED @@ -151,6 +152,7 @@ def test_modify_saves_non_empty_diffs(post_factory, user_factory): post.notes = [db.PostNote(polygon=[(0, 0), (0, 1), (1, 1)], text='new')] db.session.flush() snapshots.modify(post, user) + db.session.flush() results = db.session.query(db.Snapshot).all() assert len(results) == 1 assert results[0].data == { @@ -178,6 +180,7 @@ def test_modify_doesnt_save_empty_diffs(tag_factory, user_factory): db.session.add_all([tag, user]) db.session.commit() snapshots.modify(tag, user) + db.session.flush() assert db.session.query(db.Snapshot).count() == 0 @@ -188,6 +191,7 @@ def test_delete(tag_factory, user_factory): with patch('szurubooru.func.snapshots.get_tag_snapshot'): snapshots.get_tag_snapshot.return_value = 'mocked' snapshots.delete(tag, user_factory()) + db.session.flush() results = db.session.query(db.Snapshot).all() assert len(results) == 1 assert results[0].operation == db.Snapshot.OPERATION_DELETED @@ -200,6 +204,7 @@ def test_merge(tag_factory, user_factory): db.session.add_all([source_tag, target_tag]) db.session.flush() snapshots.merge(source_tag, target_tag, user_factory()) + db.session.flush() result = db.session.query(db.Snapshot).one() assert result.operation == db.Snapshot.OPERATION_MERGED assert result.data == ['tag', 'target'] diff --git a/server/szurubooru/tests/func/test_tag_categories.py b/server/szurubooru/tests/func/test_tag_categories.py index 57aec6c9..1b036cea 100644 --- a/server/szurubooru/tests/func/test_tag_categories.py +++ b/server/szurubooru/tests/func/test_tag_categories.py @@ -44,6 +44,7 @@ def test_create_category_when_first(): def test_create_category_when_subsequent(tag_category_factory): db.session.add(tag_category_factory()) + db.session.flush() with patch('szurubooru.func.tag_categories.update_category_name'), \ patch('szurubooru.func.tag_categories.update_category_color'): category = tag_categories.create_category('name', 'color') @@ -80,6 +81,7 @@ def test_update_category_name_reusing_other_name( config_injector, tag_category_factory): config_injector({'tag_category_name_regex': '.*'}) db.session.add(tag_category_factory(name='name')) + db.session.flush() category = tag_category_factory() with pytest.raises(tag_categories.TagCategoryAlreadyExistsError): tag_categories.update_category_name(category, 'name') @@ -127,6 +129,7 @@ def test_update_category_color(attempt, tag_category_factory): def test_try_get_category_by_name(tag_category_factory): category = tag_category_factory(name='test') db.session.add(category) + db.session.flush() assert tag_categories.try_get_category_by_name('test') == category assert tag_categories.try_get_category_by_name('TEST') == category assert tag_categories.try_get_category_by_name('-') is None @@ -135,6 +138,7 @@ def test_try_get_category_by_name(tag_category_factory): def test_get_category_by_name(tag_category_factory): category = tag_category_factory(name='test') db.session.add(category) + db.session.flush() assert tag_categories.get_category_by_name('test') == category assert tag_categories.get_category_by_name('TEST') == category with pytest.raises(tag_categories.TagCategoryNotFoundError): @@ -145,6 +149,7 @@ def test_get_all_category_names(tag_category_factory): category1 = tag_category_factory(name='cat1') category2 = tag_category_factory(name='cat2') db.session.add_all([category1, category2]) + db.session.flush() assert tag_categories.get_all_category_names() == ['cat1', 'cat2'] @@ -152,6 +157,7 @@ def test_get_all_categories(tag_category_factory): category1 = tag_category_factory(name='cat1') category2 = tag_category_factory(name='cat2') db.session.add_all([category1, category2]) + db.session.flush() assert tag_categories.get_all_categories() == [category1, category2] @@ -159,6 +165,7 @@ def test_try_get_default_category_when_no_default(tag_category_factory): category1 = tag_category_factory(default=False) category2 = tag_category_factory(default=False) db.session.add_all([category1, category2]) + db.session.flush() actual_default_category = tag_categories.try_get_default_category() assert actual_default_category == category1 assert actual_default_category != category2 @@ -168,6 +175,7 @@ def test_try_get_default_category_when_default(tag_category_factory): category1 = tag_category_factory(default=False) category2 = tag_category_factory(default=True) db.session.add_all([category1, category2]) + db.session.flush() actual_default_category = tag_categories.try_get_default_category() assert actual_default_category == category2 assert actual_default_category != category1 @@ -177,6 +185,7 @@ def test_try_get_default_category_from_cache(tag_category_factory): category1 = tag_category_factory() category2 = tag_category_factory() db.session.add_all([category1, category2]) + db.session.flush() tag_categories.try_get_default_category() db.session.query(db.TagCategory).delete() assert tag_categories.try_get_default_category() == category1 @@ -197,6 +206,7 @@ def test_set_default_category_with_previous_default(tag_category_factory): category1 = tag_category_factory(default=True) category2 = tag_category_factory() db.session.add_all([category1, category2]) + db.session.flush() tag_categories.set_default_category(category2) assert not category1.default assert category2.default @@ -206,6 +216,7 @@ def test_set_default_category_without_previous_default(tag_category_factory): category1 = tag_category_factory() category2 = tag_category_factory() db.session.add_all([category1, category2]) + db.session.flush() tag_categories.set_default_category(category2) assert category2.default @@ -213,6 +224,7 @@ def test_set_default_category_without_previous_default(tag_category_factory): def test_delete_category_with_no_other_categories(tag_category_factory): category = tag_category_factory() db.session.add(category) + db.session.flush() with pytest.raises(tag_categories.TagCategoryIsInUseError): tag_categories.delete_category(category) @@ -221,6 +233,7 @@ def test_delete_category_with_usages(tag_category_factory, tag_factory): db.session.add(tag_category_factory()) category = tag_category_factory() db.session.add(tag_factory(category=category)) + db.session.flush() with pytest.raises(tag_categories.TagCategoryIsInUseError): tag_categories.delete_category(category) @@ -229,6 +242,7 @@ def test_delete_category(tag_category_factory): db.session.add(tag_category_factory()) category = tag_category_factory(name='target') db.session.add(category) - db.session.commit() + db.session.flush() tag_categories.delete_category(category) + db.session.flush() assert tag_categories.try_get_category_by_name('target') is None diff --git a/server/szurubooru/tests/func/test_tags.py b/server/szurubooru/tests/func/test_tags.py index f69edef9..58077aec 100644 --- a/server/szurubooru/tests/func/test_tags.py +++ b/server/szurubooru/tests/func/test_tags.py @@ -35,6 +35,7 @@ def test_sort_tags( category=tag_category_factory( name=category_name, default=category_is_default))) db.session.add_all(db_tags) + db.session.flush() actual_tag_names = [tag.names[0].name for tag in tags.sort_tags(db_tags)] assert actual_tag_names == expected_tag_names @@ -143,6 +144,7 @@ def test_export_to_json( def test_try_get_tag_by_name(name_to_search, expected_to_find, tag_factory): tag = tag_factory(names=['name', 'ALIAS']) db.session.add(tag) + db.session.flush() if expected_to_find: assert tags.try_get_tag_by_name(name_to_search) == tag else: @@ -159,6 +161,7 @@ def test_try_get_tag_by_name(name_to_search, expected_to_find, tag_factory): def test_get_tag_by_name(name_to_search, expected_to_find, tag_factory): tag = tag_factory(names=['name', 'ALIAS']) db.session.add(tag) + db.session.flush() if expected_to_find: assert tags.get_tag_by_name(name_to_search) == tag else: @@ -239,6 +242,7 @@ def test_get_or_create_tags_by_names( tag_factory(names=['name2', 'ALIAS2'], category=category), ] db.session.add_all(input_tags) + db.session.flush() result = tags.get_or_create_tags_by_names(names) expected_ids = [input_tags[i].tag_id for i in expected_indexes] actual_ids = [tag.tag_id for tag in result[0]] @@ -302,6 +306,7 @@ def test_delete(tag_factory): db.session.flush() assert db.session.query(db.Tag).count() == 3 tags.delete(tag) + db.session.flush() assert db.session.query(db.Tag).count() == 2 @@ -309,9 +314,9 @@ def test_merge_tags_without_usages(tag_factory): source_tag = tag_factory(names=['source']) target_tag = tag_factory(names=['target']) db.session.add_all([source_tag, target_tag]) - db.session.commit() + db.session.flush() tags.merge_tags(source_tag, target_tag) - db.session.commit() + db.session.flush() assert tags.try_get_tag_by_name('source') is None tag = tags.get_tag_by_name('target') assert tag is not None @@ -335,7 +340,7 @@ def test_merge_tags_with_usages(tag_factory, post_factory): def test_merge_tags_with_itself(tag_factory): source_tag = tag_factory(names=['source']) db.session.add(source_tag) - db.session.commit() + db.session.flush() with pytest.raises(tags.InvalidTagRelationError): tags.merge_tags(source_tag, source_tag) @@ -348,9 +353,9 @@ def test_merge_tags_with_its_child_relation(tag_factory, post_factory): post = post_factory() post.tags = [source_tag, target_tag] db.session.add_all([source_tag, post]) - db.session.commit() + db.session.flush() tags.merge_tags(source_tag, target_tag) - db.session.commit() + db.session.flush() assert tags.try_get_tag_by_name('source') is None assert tags.get_tag_by_name('target').post_count == 1 @@ -363,9 +368,9 @@ def test_merge_tags_with_its_parent_relation(tag_factory, post_factory): post = post_factory() post.tags = [source_tag, target_tag] db.session.add_all([source_tag, target_tag, post]) - db.session.commit() + db.session.flush() tags.merge_tags(source_tag, target_tag) - db.session.commit() + db.session.flush() assert tags.try_get_tag_by_name('source') is None assert tags.get_tag_by_name('target').post_count == 1 @@ -377,7 +382,7 @@ def test_merge_tags_clears_relations(tag_factory): referring_tag.suggestions = [source_tag] referring_tag.implications = [source_tag] db.session.add_all([source_tag, target_tag, referring_tag]) - db.session.commit() + db.session.flush() assert tags.try_get_tag_by_name('parent').implications != [] assert tags.try_get_tag_by_name('parent').suggestions != [] tags.merge_tags(source_tag, target_tag) @@ -393,11 +398,11 @@ def test_merge_tags_when_target_exists(tag_factory, post_factory): post = post_factory() post.tags = [source_tag, target_tag] db.session.add_all([source_tag, target_tag, post]) - db.session.commit() + db.session.flush() assert source_tag.post_count == 1 assert target_tag.post_count == 1 tags.merge_tags(source_tag, target_tag) - db.session.commit() + db.session.flush() assert tags.try_get_tag_by_name('source') is None assert tags.get_tag_by_name('target').post_count == 1 @@ -460,6 +465,7 @@ def test_update_tag_names_trying_to_use_taken_name( db.session.add(existing_tag) tag = tag_factory() db.session.add(tag) + db.session.flush() with pytest.raises(tags.TagAlreadyExistsError): tags.update_tag_names(tag, ['a']) with pytest.raises(tags.TagAlreadyExistsError): diff --git a/server/szurubooru/tests/func/test_users.py b/server/szurubooru/tests/func/test_users.py index 0e6f264a..ce2a40ec 100644 --- a/server/szurubooru/tests/func/test_users.py +++ b/server/szurubooru/tests/func/test_users.py @@ -172,6 +172,7 @@ def test_get_user_count(count, user_factory): def test_try_get_user_by_name(user_factory): user = user_factory(name='name', email='email') db.session.add(user) + db.session.flush() assert users.try_get_user_by_name('non-existing') is None assert users.try_get_user_by_name('email') is None assert users.try_get_user_by_name('name') is user @@ -181,6 +182,7 @@ def test_try_get_user_by_name(user_factory): def test_get_user_by_name(user_factory): user = user_factory(name='name', email='email') db.session.add(user) + db.session.flush() with pytest.raises(users.UserNotFoundError): assert users.get_user_by_name('non-existing') with pytest.raises(users.UserNotFoundError): @@ -192,6 +194,7 @@ def test_get_user_by_name(user_factory): def test_try_get_user_by_name_or_email(user_factory): user = user_factory(name='name', email='email') db.session.add(user) + db.session.flush() assert users.try_get_user_by_name_or_email('non-existing') is None assert users.try_get_user_by_name_or_email('email') is user assert users.try_get_user_by_name_or_email('EMAIL') is user @@ -202,6 +205,7 @@ def test_try_get_user_by_name_or_email(user_factory): def test_get_user_by_name_or_email(user_factory): user = user_factory(name='name', email='email') db.session.add(user) + db.session.flush() with pytest.raises(users.UserNotFoundError): assert users.get_user_by_name_or_email('non-existing') assert users.get_user_by_name_or_email('email') is user @@ -372,6 +376,7 @@ def test_update_user_rank_with_invalid_string(user_factory): def test_update_user_rank_with_higher_rank_than_possible(user_factory): db.session.add(user_factory()) + db.session.flush() user = user_factory() auth_user = user_factory() auth_user.rank = db.User.RANK_ANONYMOUS @@ -383,6 +388,7 @@ def test_update_user_rank_with_higher_rank_than_possible(user_factory): def test_update_user_rank(user_factory): db.session.add(user_factory()) + db.session.flush() user = user_factory() auth_user = user_factory() auth_user.rank = db.User.RANK_ADMINISTRATOR diff --git a/server/szurubooru/tests/search/configs/test_comment_search_config.py b/server/szurubooru/tests/search/configs/test_comment_search_config.py index 39c1ed3f..f2fe3630 100644 --- a/server/szurubooru/tests/search/configs/test_comment_search_config.py +++ b/server/szurubooru/tests/search/configs/test_comment_search_config.py @@ -33,6 +33,7 @@ def test_filter_by_creation_time( comment2.creation_time = datetime(2014, 6, 1) comment3.creation_time = datetime(2015, 1, 1) db.session.add_all([comment1, comment2, comment3]) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -47,6 +48,7 @@ def test_filter_by_text( comment1 = comment_factory(text='t1') comment2 = comment_factory(text='t2') db.session.add_all([comment1, comment2]) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -63,6 +65,7 @@ def test_filter_by_user( expected_comment_text): db.session.add(comment_factory(text='t2', user=user_factory(name='u2'))) db.session.add(comment_factory(text='t1', user=user_factory(name='u1'))) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -79,6 +82,7 @@ def test_filter_by_post( expected_comment_text): db.session.add(comment_factory(text='t1', post=post_factory(id=1))) db.session.add(comment_factory(text='t2', post=post_factory(id=2))) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -92,6 +96,7 @@ def test_anonymous( verify_unpaged, comment_factory, input, expected_comment_text): db.session.add(comment_factory(text='t1')) db.session.add(comment_factory(text='t2')) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -106,6 +111,7 @@ def test_sort_by_user( expected_comment_text): db.session.add(comment_factory(text='t2', user=user_factory(name='u2'))) db.session.add(comment_factory(text='t1', user=user_factory(name='u1'))) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -120,6 +126,7 @@ def test_sort_by_post( expected_comment_text): db.session.add(comment_factory(text='t1', post=post_factory(id=1))) db.session.add(comment_factory(text='t2', post=post_factory(id=2))) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -137,6 +144,7 @@ def test_sort_by_creation_time( comment2.creation_time = datetime(1991, 1, 2) comment3.creation_time = datetime(1991, 1, 3) db.session.add_all([comment3, comment1, comment2]) + db.session.flush() verify_unpaged(input, expected_comment_text) @@ -155,4 +163,5 @@ def test_sort_by_last_edit_time( comment2.last_edit_time = datetime(1991, 1, 2) comment3.last_edit_time = datetime(1991, 1, 3) db.session.add_all([comment3, comment1, comment2]) + db.session.flush() verify_unpaged(input, expected_comment_text) diff --git a/server/szurubooru/tests/search/configs/test_post_search_config.py b/server/szurubooru/tests/search/configs/test_post_search_config.py index c4bed6d0..09870830 100644 --- a/server/szurubooru/tests/search/configs/test_post_search_config.py +++ b/server/szurubooru/tests/search/configs/test_post_search_config.py @@ -85,6 +85,7 @@ def test_filter_by_id(verify_unpaged, post_factory, input, expected_post_ids): post2 = post_factory(id=2) post3 = post_factory(id=3) db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -106,6 +107,7 @@ def test_filter_by_tag( post3.tags = [tag_factory(names=['t3'])] post4.tags = [tag_factory(names=['t4a', 't4b'])] db.session.add_all([post1, post2, post3, post4]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -127,6 +129,7 @@ def test_filter_by_score( post=post, user=user_factory())) db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -154,6 +157,7 @@ def test_filter_by_uploader( post2.user = user_factory(name='u2') post3.user = user_factory(name='u3') db.session.add_all([post1, post2, post3, post4]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -178,6 +182,7 @@ def test_filter_by_commenter( comment_factory(post=post3, user=user_factory(name='u3')), post1, post2, post3, ]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -201,6 +206,7 @@ def test_filter_by_favorite( fav_factory(post=post2, user=user_factory(name='u2')), fav_factory(post=post3, user=user_factory(name='u3')), post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -218,6 +224,7 @@ def test_filter_by_tag_count( post2.tags = [tag_factory(), tag_factory()] post3.tags = [tag_factory(), tag_factory(), tag_factory()] db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -243,6 +250,7 @@ def test_filter_by_comment_count( comment_factory(post=post3), comment_factory(post=post3), post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -264,6 +272,7 @@ def test_filter_by_favorite_count( fav_factory(post=post3), fav_factory(post=post3), post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -281,6 +290,7 @@ def test_filter_by_note_count( post2.notes = [note_factory(), note_factory()] post3.notes = [note_factory(), note_factory(), note_factory()] db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -302,6 +312,7 @@ def test_filter_by_feature_count( post2.features = [feature_factory(), feature_factory()] post3.features = [feature_factory(), feature_factory(), feature_factory()] db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -326,6 +337,7 @@ def test_filter_by_type( post3.type = db.Post.TYPE_VIDEO post4.type = db.Post.TYPE_FLASH db.session.add_all([post1, post2, post3, post4]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -344,6 +356,7 @@ def test_filter_by_safety( post2.safety = db.Post.SAFETY_SKETCHY post3.safety = db.Post.SAFETY_UNSAFE db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -366,6 +379,7 @@ def test_filter_by_file_size( post2.file_size = 101 post3.file_size = 102 db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -392,6 +406,7 @@ def test_filter_by_image_size( post2.canvas_height = 201 post3.canvas_height = 202 db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -418,6 +433,7 @@ def test_filter_by_creation_time( post2.creation_time = datetime(2015, 1, 1) post3.creation_time = datetime(2016, 1, 1) db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -444,6 +460,7 @@ def test_filter_by_last_edit_time( post2.last_edit_time = datetime(2015, 1, 1) post3.last_edit_time = datetime(2016, 1, 1) db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -471,6 +488,7 @@ def test_filter_by_comment_date( comment2.creation_time = datetime(2015, 1, 1) comment3.creation_time = datetime(2016, 1, 1) db.session.add_all([post1, post2, post3, comment1, comment2, comment3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -494,6 +512,7 @@ def test_filter_by_fav_date( fav2.time = datetime(2015, 1, 1) fav3.time = datetime(2016, 1, 1) db.session.add_all([post1, post2, post3, fav1, fav2, fav3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -521,6 +540,7 @@ def test_filter_by_feature_date( feature2.time = datetime(2015, 1, 1) feature3.time = datetime(2016, 1, 1) db.session.add_all([post1, post2, post3, feature1, feature2, feature3]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -560,6 +580,7 @@ def test_sort_tokens(verify_unpaged, post_factory, input): post2 = post_factory(id=2) post3 = post_factory(id=3) db.session.add_all([post1, post2, post3]) + db.session.flush() verify_unpaged(input, [1, 2, 3]) @@ -582,6 +603,7 @@ def test_anonymous( post3.tags = [tag_factory(names=['t3'])] post4.tags = [tag_factory(names=['t4a', 't4b'])] db.session.add_all([post1, post2, post3, post4]) + db.session.flush() verify_unpaged(input, expected_post_ids) @@ -601,6 +623,7 @@ def test_own_liked( score_factory(post=post3, user=auth_user, score=-1), post1, post2, post3, ]) + db.session.flush() verify_unpaged('special:liked', [1]) verify_unpaged('-special:liked', [2, 3]) @@ -621,6 +644,7 @@ def test_own_disliked( score_factory(post=post3, user=auth_user, score=1), post1, post2, post3, ]) + db.session.flush() verify_unpaged('special:disliked', [1]) verify_unpaged('-special:disliked', [2, 3]) @@ -648,6 +672,7 @@ def test_own_fav( fav_factory(post=post2, user=user_factory(name='unrelated')), post1, post2, ]) + db.session.flush() verify_unpaged('special:fav', [1]) verify_unpaged('-special:fav', [2]) @@ -668,5 +693,6 @@ def test_tumbleweed( fav_factory(post=post3), post1, post2, post3, post4, ]) + db.session.flush() verify_unpaged('special:tumbleweed', [4]) verify_unpaged('-special:tumbleweed', [1, 2, 3]) diff --git a/server/szurubooru/tests/search/configs/test_tag_search_config.py b/server/szurubooru/tests/search/configs/test_tag_search_config.py index 9ba807d2..83609433 100644 --- a/server/szurubooru/tests/search/configs/test_tag_search_config.py +++ b/server/szurubooru/tests/search/configs/test_tag_search_config.py @@ -31,11 +31,13 @@ def test_filter_anonymous( verify_unpaged, tag_factory, input, expected_tag_names): db.session.add(tag_factory(names=['t1'])) db.session.add(tag_factory(names=['t2'])) + db.session.flush() verify_unpaged(input, expected_tag_names) def test_filter_anonymous_starting_with_colon(verify_unpaged, tag_factory): db.session.add(tag_factory(names=[':t'])) + db.session.flush() verify_unpaged(':t', [':t']) @@ -66,6 +68,7 @@ def test_filter_by_name( db.session.add(tag_factory(names=['tag2'])) db.session.add(tag_factory(names=['tag3'])) db.session.add(tag_factory(names=['tag4', 'tag5', 'tag6'])) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -86,6 +89,7 @@ def test_filter_by_category( tag2 = tag_factory(names=['t2'], category=cat1) tag3 = tag_factory(names=['t3'], category=cat2) db.session.add_all([tag1, tag2, tag3]) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -120,6 +124,7 @@ def test_filter_by_creation_time( tag2.creation_time = datetime(2014, 6, 1) tag3.creation_time = datetime(2015, 1, 1) db.session.add_all([tag1, tag2, tag3]) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -138,6 +143,7 @@ def test_filter_by_edit_time( tag2.last_edit_time = datetime(2015, 1, 1) tag3.last_edit_time = datetime(2014, 1, 1) db.session.add_all([tag1, tag2, tag3]) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -160,10 +166,10 @@ def test_filter_by_post_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([post1, post2, tag1, tag2]) - db.session.commit() post1.tags.append(tag1) post1.tags.append(tag2) post2.tags.append(tag1) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -193,10 +199,10 @@ def test_filter_by_suggestion_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([sug1, sug3, tag2, sug2, tag1]) - db.session.commit() tag1.suggestions.append(sug1) tag1.suggestions.append(sug2) tag2.suggestions.append(sug3) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -213,10 +219,10 @@ def test_filter_by_implication_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([sug1, sug3, tag2, sug2, tag1]) - db.session.commit() tag1.implications.append(sug1) tag1.implications.append(sug2) tag2.implications.append(sug3) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -232,6 +238,7 @@ def test_filter_by_implication_count( def test_sort_by_name(verify_unpaged, tag_factory, input, expected_tag_names): db.session.add(tag_factory(names=['t2'])) db.session.add(tag_factory(names=['t1'])) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -249,6 +256,7 @@ def test_sort_by_creation_time( tag2.creation_time = datetime(1991, 1, 2) tag3.creation_time = datetime(1991, 1, 3) db.session.add_all([tag3, tag1, tag2]) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -268,6 +276,7 @@ def test_sort_by_last_edit_time( tag2.last_edit_time = datetime(1991, 1, 2) tag3.last_edit_time = datetime(1991, 1, 3) db.session.add_all([tag3, tag1, tag2]) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -283,10 +292,10 @@ def test_sort_by_post_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([post1, post2, tag1, tag2]) - db.session.commit() post1.tags.append(tag1) post1.tags.append(tag2) post2.tags.append(tag2) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -301,10 +310,10 @@ def test_sort_by_suggestion_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([sug1, sug3, tag2, sug2, tag1]) - db.session.commit() tag1.suggestions.append(sug1) tag1.suggestions.append(sug2) tag2.suggestions.append(sug3) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -319,10 +328,10 @@ def test_sort_by_implication_count( tag1 = tag_factory(names=['t1']) tag2 = tag_factory(names=['t2']) db.session.add_all([sug1, sug3, tag2, sug2, tag1]) - db.session.commit() tag1.implications.append(sug1) tag1.implications.append(sug2) tag2.implications.append(sug3) + db.session.flush() verify_unpaged(input, expected_tag_names) @@ -341,4 +350,5 @@ def test_sort_by_category( tag2 = tag_factory(names=['t2'], category=cat2) tag3 = tag_factory(names=['t3'], category=cat1) db.session.add_all([tag1, tag2, tag3]) + db.session.flush() verify_unpaged(input, expected_tag_names) diff --git a/server/szurubooru/tests/search/configs/test_user_search_config.py b/server/szurubooru/tests/search/configs/test_user_search_config.py index 0c61402c..ae182fdd 100644 --- a/server/szurubooru/tests/search/configs/test_user_search_config.py +++ b/server/szurubooru/tests/search/configs/test_user_search_config.py @@ -53,6 +53,7 @@ def test_filter_by_creation_time( user2.creation_time = datetime(2014, 6, 1) user3.creation_time = datetime(2015, 1, 1) db.session.add_all([user1, user2, user3]) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -79,6 +80,7 @@ def test_filter_by_name( db.session.add(user_factory(name='user1')) db.session.add(user_factory(name='user2')) db.session.add(user_factory(name='user3')) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -92,6 +94,7 @@ def test_anonymous( verify_unpaged, input, expected_user_names, user_factory): db.session.add(user_factory(name='u1')) db.session.add(user_factory(name='u2')) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -109,6 +112,7 @@ def test_combining_tokens( user2.creation_time = datetime(2014, 6, 1) user3.creation_time = datetime(2015, 1, 1) db.session.add_all([user1, user2, user3]) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -125,6 +129,7 @@ def test_paging( expected_total_count, expected_user_names): db.session.add(user_factory(name='u1')) db.session.add(user_factory(name='u2')) + db.session.flush() actual_count, actual_users = executor.execute( '', page=page, page_size=page_size) actual_user_names = [u.name for u in actual_users] @@ -145,6 +150,7 @@ def test_sort_by_name( verify_unpaged, input, expected_user_names, user_factory): db.session.add(user_factory(name='u2')) db.session.add(user_factory(name='u1')) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -167,6 +173,7 @@ def test_sort_by_creation_time( user2.creation_time = datetime(1991, 1, 2) user3.creation_time = datetime(1991, 1, 3) db.session.add_all([user3, user1, user2]) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -186,6 +193,7 @@ def test_sort_by_last_login_time( user2.last_login_time = datetime(1991, 1, 2) user3.last_login_time = datetime(1991, 1, 3) db.session.add_all([user3, user1, user2]) + db.session.flush() verify_unpaged(input, expected_user_names) @@ -194,6 +202,7 @@ def test_random_sort(executor, user_factory): user2 = user_factory(name='u2') user3 = user_factory(name='u3') db.session.add_all([user3, user1, user2]) + db.session.flush() actual_count, actual_users = executor.execute( 'sort:random', page=1, page_size=100) actual_user_names = [u.name for u in actual_users]