require File.dirname(__FILE__) + '/../test_helper' require 'rss_controller' # Re-raise errors caught by the controller. class RssController; def rescue_action(e) raise e end; end class RssControllerTest < Test::Unit::TestCase fixtures :projects, :groups, :users, :groups_projects, :groups_users, :changesets, :tickets, :ticket_changes, :statuses def setup RetroCM.reload @controller = RssController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @request.session[:user_id] = 1 end def test_index get :index assert_response :success assert_template 'rss/index' assert_valid_markup assert_select 'h3', ENABLE_SUBVERSION ? 5 : 4 end def test_feed get :feed assert_response :success assert_template nil get :feed, :category => 'invalid' assert_response :success assert_template nil if ENABLE_SUBVERSION get :feed, :category => 'changesets' assert_response :success assert_template 'rss/feed' assert_xml_select 'item', Changeset.count_for_project(Project.find(1)) end get :feed, :category => 'tickets' assert_response :success assert_template 'rss/feed' assert_xml_select 'item', Project.find(1).tickets.count + Project.find(1).ticket_changes.count get :feed, :category => 'all' assert_response :success assert_template 'rss/feed' assert_xml_select 'item', ENABLE_SUBVERSION ? 10 : 9 assert_xml_select 'pubdate' do |dates| dates.collect! do |date| date = date.to_s.gsub(%r{]+>}, '') Time.parse(date) end assert_equal(dates, dates.sort.reverse) end 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(@response.body, false, true) end end