123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- from flaskbb.forum.models import Category, Forum, Topic, Post
- from flaskbb.user.models import User
- def test_category_save(database):
- category = Category(title="Test Category")
- category.save()
- assert category.title == "Test Category"
- def test_category_delete(category):
- # TODO: Test user post counts
- category.delete()
- category = Category.query.filter_by(id=category.id).first()
- assert category is None
- def test_category_delete_with_forum(forum):
- forum.category.delete()
- assert forum is not None
- assert forum.category is not None
- category = Category.query.filter_by(id=forum.category.id).first()
- forum = Forum.query.filter_by(id=forum.id).first()
- assert forum is None
- assert category is None
- def test_forum_save(category, moderator_user):
- forum = Forum(title="Test Forum", category_id=category.id)
- forum.save()
- assert forum.title == "Test Forum"
- # Test with adding a moderator
- forum.save([moderator_user])
- for moderator in forum.moderators:
- assert moderator == moderator_user
- def test_forum_delete(forum):
- # TODO: Test user post counts
- forum.delete()
- forum = Forum.query.filter_by(id=forum.id).first()
- assert forum is None
- def test_forum_delete_with_user(topic_normal, normal_user):
- assert normal_user.post_count == 1
- topic_normal.forum.delete([normal_user])
- forum = Forum.query.filter_by(id=topic_normal.forum_id).first()
- assert forum is None
- assert normal_user.post_count == 0
- def test_forum_update_last_post(topic_normal, normal_user):
- post = Post(content="Test Content 2")
- post.save(topic=topic_normal, user=normal_user)
- assert topic_normal.forum.last_post == post
- post.delete()
- topic_normal.forum.update_last_post()
- assert topic_normal.forum.last_post == topic_normal.first_post
- def test_forum_url(forum):
- assert forum.url == "http://localhost:5000/forum/1-test-forum"
- def test_forum_slugify(forum):
- assert forum.slug == "test-forum"
- def test_topic_save(forum, normal_user):
- post = Post(content="Test Content")
- topic = Topic(title="Test Title")
- assert forum.last_post_id is None
- assert forum.post_count == 0
- assert forum.topic_count == 0
- topic.save(forum=forum, post=post, user=normal_user)
- assert topic.title == "Test Title"
- # The first post in the topic is also the last post
- assert topic.first_post_id == post.id
- assert topic.last_post_id == post.id
- assert forum.last_post_id == post.id
- assert forum.post_count == 1
- assert forum.topic_count == 1
- def test_topic_delete(topic_normal):
- assert topic_normal.user.post_count == 1
- assert topic_normal.post_count == 1
- assert topic_normal.forum.topic_count == 1
- assert topic_normal.forum.post_count == 1
- topic_normal.delete(users=[topic_normal.user])
- forum = Forum.query.filter_by(id=topic_normal.forum_id).first()
- user = User.query.filter_by(id=topic_normal.user_id).first()
- topic_normal = Topic.query.filter_by(id=topic_normal.id).first()
- assert topic_normal is None
- assert user.post_count == 0
- assert forum.topic_count == 0
- assert forum.post_count == 0
- def test_topic_merge(topic_normal, topic_moderator):
- assert topic_normal.merge(topic_moderator)
- topic_normal = Topic.query.filter_by(id=topic_normal.id).first()
- assert topic_normal is None
- assert topic_moderator.post_count == 2
- def test_topic_merge_other_forum(topic_normal):
- """You cannot merge a topic with a topic from another forum"""
- forum_other = Forum(title="Test Forum 2", category_id=1)
- forum_other.save()
- topic_other = Topic(title="Test Topic 2")
- post_other = Post(content="Test Content 2")
- topic_other.save(user=topic_normal.user, forum=forum_other, post=post_other)
- assert not topic_normal.merge(topic_other)
- def test_topic_move(topic_normal):
- forum_other = Forum(title="Test Forum 2", category_id=1)
- forum_other.save()
- forum_old = Forum.query.filter_by(id=topic_normal.forum_id).first()
- assert topic_normal.move(forum_other)
- assert forum_old.topics == []
- assert forum_old.topic_count == 0
- assert forum_old.post_count == 0
- assert forum_other.topic_count == 1
- assert forum_other.post_count == 1
- def test_topic_move_same_forum(topic_normal):
- assert not topic_normal.move(topic_normal.forum)
|