require File.dirname(__FILE__) + '/../test_helper' class PreviewableTest < ActionController::IntegrationTest fixtures :projects, :groups, :users, :groups_projects, :groups_users, :tickets, :ticket_changes, :priorities, :statuses def setup RetroCM.reload User.current = User.public_user end def teardown User.current = nil end def test_feed_with_multiple_projects fst = Project.find(1) assert_equal(4, fst.tickets.count) assert_equal(6, fst.ticket_changes.count) snd = Project.new(:name => 'Second project') assert_nothing_raised(){snd.save!} t1 = snd.tickets.build(:status_id => 1, :priority_id => 1) t1.summary = 'Some summary' t1.content = 'Some content' t1.author = 'Me' assert(Ticket.without_spam_check{ t1.save }) assert_equal(1, snd.tickets.count) assert_equal(0, snd.ticket_changes.count) t1.monitor_attribute_changes! tc1 = t1.ticket_changes.build(:content => 'Some comment', :author => 'Me Again') assert(TicketChange.without_spam_check{ tc1.save }) assert_equal(1, snd.tickets.count) assert_equal(1, snd.ticket_changes.count) User.current.reload assert(User.current.projects.include?(fst)) assert(User.current.projects.include?(snd)) get "projects/#{fst.short_name}/rss" assert_response :success assert_template 'rss/index' get "projects/#{fst.short_name}/rss/tickets" assert_response :success assert_template 'rss/feed' assert_xml_select 'item', fst.tickets.count + fst.ticket_changes.count get "projects/#{snd.short_name}/rss" assert_response :success assert_template 'rss/index' get "projects/#{snd.short_name}/rss/tickets" assert_response :success assert_template 'rss/feed' assert_xml_select 'item', snd.tickets.count + snd.ticket_changes.count get '/rss' assert_response :success assert_template 'rss/index' fst.ticket_changes.destroy_all n_item = fst.tickets.count + fst.ticket_changes.count n_item += snd.tickets.count + snd.ticket_changes.count assert_operator(n_item, :<, 10) get "rss/tickets" assert_response :success assert_template 'rss/feed' assert_xml_select 'item', n_item end def test_feed_with_no_project Project.destroy_all get '/rss' assert_response :redirect assert_redirected_to(home_path) end private def assert_xml_select(*args, &block) @html_document = xml_document assert_select(*args, &block) end def xml_document @xml_document = HTML::Document.new(controller.response.body, false, true) end end