|
@@ -0,0 +1,167 @@
|
|
|
|
+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)
|