aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/track_controller.rb3
-rw-r--r--spec/controllers/track_controller_spec.rb12
2 files changed, 15 insertions, 0 deletions
diff --git a/app/controllers/track_controller.rb b/app/controllers/track_controller.rb
index 40e82e7a4..40fa69290 100644
--- a/app/controllers/track_controller.rb
+++ b/app/controllers/track_controller.rb
@@ -153,6 +153,9 @@ class TrackController < ApplicationController
def atom_feed_internal
@xapian_object = perform_search([InfoRequestEvent], @track_thing.track_query, @track_thing.params[:feed_sortby], nil, 25, 1)
+ # We're assuming that a request to a feed url with no format suffix wants atom/xml
+ # so set that as the default, regardless of content negotiation
+ request.format = 'xml' unless params[:format]
respond_to do |format|
format.json { render :json => @xapian_object.results.map { |r| r[:model].json_for_api(true,
lambda { |t| view_context.highlight_and_excerpt(t, @xapian_object.words_to_highlight, 150) }
diff --git a/spec/controllers/track_controller_spec.rb b/spec/controllers/track_controller_spec.rb
index 5a766b1e1..1575bc84e 100644
--- a/spec/controllers/track_controller_spec.rb
+++ b/spec/controllers/track_controller_spec.rb
@@ -159,6 +159,18 @@ describe TrackController, "when viewing RSS feed for a track" do
get :track_user, :feed => 'feed', :url_name => "there_is_no_such_user"
}.should raise_error(ActiveRecord::RecordNotFound)
end
+
+ it 'should return atom/xml for a feed url without format specified, even if the
+ requester prefers json' do
+
+ request.env['HTTP_ACCEPT'] = 'application/json,text/xml'
+ track_thing = track_things(:track_fancy_dog_request)
+
+ get :track_request, :feed => 'feed', :url_title => track_thing.info_request.url_title
+ response.should render_template('track/atom_feed')
+ response.content_type.should == 'application/atom+xml'
+ end
+
end
describe TrackController, "when viewing JSON version of a track feed" do