#!/bin/env ruby require File.dirname(__FILE__) + '/../test_helper' require 'post_menu' class PostMenuTest < Test::Unit::TestCase item = RForum::PostMenu::Item EXPECTED_ITEMS = { :reply_to => item.new('Reply with quote', {:controller => 'topic', :action => 'show', :id => 1, :anchor => 'postform', :params => {'reply_to' => 1}}), :delete_post => item.new('Delete', {:controller => 'topic', :action => 'delete_post', :id => 2}, 'Are you sure you want to delete this post?'), :delete_topic => item.new('Delete topic', {:controller => 'topic', :action => 'delete_post', :id => 1}, 'Are you sure you want to delete this topic?') } def setup setup_forum_fixture end def test_post_menu_anonymous menu = RForum::PostMenu.new(Post.find(2), user = Guest.new) assert_nil menu.delete assert_equal reply_to_item(1, 2), menu.reply_to end def test_post_menu_admin_somebody_elses_post menu = RForum::PostMenu.new(Post.find(2), User.find(1)) assert_equal delete_post_item(2), menu.delete assert_equal reply_to_item(1, 2), menu.reply_to end def test_post_menu_admin_root_post menu = RForum::PostMenu.new(Post.find(1), User.find(1)) assert_equal EXPECTED_ITEMS[:delete_topic], menu.delete assert_equal reply_to_item(1, 1), menu.reply_to end def test_post_menu_user_own_post_without_children menu = RForum::PostMenu.new(Post.find(21), User.find(2)) assert_equal delete_post_item(21), menu.delete assert_equal reply_to_item(3, 21), menu.reply_to end def test_post_menu_user_own_post_with_children menu = RForum::PostMenu.new(Post.find(2), User.find(2)) assert_nil menu.delete assert_equal reply_to_item(1, 2), menu.reply_to end def test_post_menu_user_own_post_root_of_topic_with_children menu = RForum::PostMenu.new(Post.find(101), User.find(2)) assert_nil menu.delete assert_equal reply_to_item(2, 101), menu.reply_to end def test_post_menu_user_own_post_root_of_topic_without_childreb Post.find(102).destroy menu = RForum::PostMenu.new(Post.find(101), User.find(2)) assert_equal delete_topic_item(101), menu.delete assert_equal reply_to_item(2, 101), menu.reply_to end # HELPERS def delete_post_item(post_id) delete_post = EXPECTED_ITEMS[:delete_post].dup delete_post.target[:id] = post_id delete_post end def delete_topic_item(post_id) delete_topic = EXPECTED_ITEMS[:delete_topic].dup delete_topic.target[:id] = post_id delete_topic end def reply_to_item(topic_id, post_id) reply_to = EXPECTED_ITEMS[:reply_to].dup reply_to.target[:id] = topic_id reply_to.target[:params]['reply_to'] = post_id reply_to end end