2
0
mirror of https://github.com/moebooru/moebooru synced 2025-08-31 05:55:11 +00:00
Files
moebooru/test/models/forum_post_test.rb
2024-01-08 19:39:01 +09:00

88 lines
2.3 KiB
Ruby

require "test_helper"
class ForumPostTest < ActiveSupport::TestCase
fixtures :users
def create_post(msg, parent_id = nil, params = {})
ForumPost.create({ creator_id: 1, body: msg, title: msg, is_sticky: false, is_locked: false, parent_id: parent_id }.merge(params))
end
def test_parents
topic = create_post("hello")
assert_equal(true, topic.is_parent?)
assert_equal(topic.id, topic.root_id)
resp1 = create_post("orly", topic.id, creator_id: 2)
topic.reload
assert_equal(true, topic.is_parent?)
assert_equal(false, resp1.is_parent?)
assert_equal(1, topic.response_count)
assert_equal(0, resp1.response_count)
assert_equal(topic.id, topic.root_id)
assert_equal(topic.id, resp1.root_id)
assert_equal(resp1.creator_id, topic.last_updated_by)
resp2 = create_post("yarly", topic.id, creator_id: 3)
topic.reload
assert_equal(2, topic.response_count)
assert_equal(resp2.creator_id, topic.last_updated_by)
resp1.reload
resp1.destroy
topic.reload
assert_equal(1, topic.response_count)
end
def test_api
topic = create_post("hello")
assert_nothing_raised do
topic.to_json
end
assert_nothing_raised do
topic.to_xml
end
end
def test_locking
topic = create_post("hello")
assert_equal(false, topic.is_locked?)
ForumPost.lock!(topic.id)
topic.reload
assert_equal(true, topic.is_locked?)
topic.update(body: "bumbleclot")
topic.reload
assert_equal("hello", topic.body)
ForumPost.unlock!(topic.id)
topic.reload
assert_equal(false, topic.is_locked?)
end
def test_sticky
topic = create_post("hello")
assert_equal(false, topic.is_sticky?)
ForumPost.stick!(topic.id)
topic.reload
assert_equal(true, topic.is_sticky?)
ForumPost.unstick!(topic.id)
topic.reload
assert_equal(false, topic.is_sticky?)
# Test stickying/unstickying a locked post
ForumPost.lock!(topic.id)
ForumPost.stick!(topic.id)
topic.reload
assert_equal(true, topic.is_sticky?)
ForumPost.unstick!(topic.id)
topic.reload
assert_equal(false, topic.is_sticky?)
end
# Make sure child posts are deleted
def test_destroy
p1 = create_post("hello")
p2 = create_post("hi", p1.id)
p1.destroy
assert_nil(ForumPost.find_by_id(p2.id))
end
end