diff --git a/app/controllers/seeds_controller.rb b/app/controllers/seeds_controller.rb index 82411c87b..0d3fe9ada 100644 --- a/app/controllers/seeds_controller.rb +++ b/app/controllers/seeds_controller.rb @@ -12,6 +12,7 @@ class SeedsController < ApplicationController respond_to do |format| format.html # index.html.erb format.json { render json: @seeds } + format.rss { render :layout => false } #index.rss.builder end end diff --git a/app/views/seeds/index.rss.haml b/app/views/seeds/index.rss.haml new file mode 100644 index 000000000..f21ce8e0b --- /dev/null +++ b/app/views/seeds/index.rss.haml @@ -0,0 +1,23 @@ + +%rss{:version => 2.0} + %channel + %title + #{Growstuff::Application.config.site_name} - Recent seeds from #{ @owner ? @owner : 'all members' } + %link= seeds_url + - @seeds.each do |seed| + %item + %author= seed.owner.login_name + %title #{seed.owner}'s #{seed.crop} seeds + %pubDate= seed.created_at.to_s(:rfc822) + %description + :escaped +

Quantity: #{seed.quantity ? seed.quantity : 'unknown' }

+

Plant before: #{seed.plant_before ? seed.plant_before : 'unknown' }

+ - if seed.tradable? + :escaped +

Will trade #{seed.tradable_to} from #{seed.owner.location ? seed.owner.location : 'unknown location'}

+ + :escaped_markdown + #{ strip_tags seed.description } + %link= seed_url(seed) + %guid= seed_url(seed) diff --git a/spec/views/seeds/index.rss.haml_spec.rb b/spec/views/seeds/index.rss.haml_spec.rb new file mode 100644 index 000000000..0b30d19a5 --- /dev/null +++ b/spec/views/seeds/index.rss.haml_spec.rb @@ -0,0 +1,50 @@ +require 'spec_helper' + +describe 'seeds/index.rss.haml' do + before(:each) do + controller.stub(:current_user) { nil } + end + + context 'all seeds' do + before(:each) do + @seed = FactoryGirl.create(:seed) + @tradable = FactoryGirl.create(:tradable_seed) + assign(:seeds, [ @seed, @tradable ]) + render + end + + it 'shows RSS feed title' do + rendered.should contain "Recent seeds from all members" + end + + it 'has a useful item title' do + rendered.should contain "#{@seed.owner}'s #{@seed.crop} seeds" + end + + it 'shows the seed count' do + rendered.should contain "Quantity: #{@seed.quantity}" + end + + it 'shows the plant_before date' do + rendered.should contain "Plant before: #{@seed.plant_before.to_s}" + end + + it 'mentions that one seed is tradable' do + rendered.should contain "Will trade #{@tradable.tradable_to} from #{@tradable.owner.location}" + end + + end + + context "one member's seeds" do + before(:each) do + @seed = FactoryGirl.create(:seed) + assign(:seeds, [ @seed ]) + assign(:owner, @seed.owner) + render + end + + it 'shows RSS feed title' do + rendered.should contain "Recent seeds from #{@seed.owner}" + end + end +end