X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=spec%2Frequests%2Fformat_spec.rb;h=216cc3923d47918b77db0583a3c708ce0da3c296;hb=9e1c293eb864b0ab812b1620e4f91c494b792147;hp=9481d3a2413e3ea62c7619455f961b226fb837b0;hpb=ef57e991c96e552da808182958863a5e66d6375b;p=feedcatcher.git diff --git a/spec/requests/format_spec.rb b/spec/requests/format_spec.rb index 9481d3a..216cc39 100644 --- a/spec/requests/format_spec.rb +++ b/spec/requests/format_spec.rb @@ -1,58 +1,55 @@ require 'spec_helper' describe "format" do - let!(:feed_item1) { FactoryGirl.create(:feed_item, - title: "item 1") } - let!(:feed_item2) { FactoryGirl.create(:feed_item, - title: "item 2") } - let!(:other_feed_item) { FactoryGirl.create(:feed_item, - feed_name: "other_test_feed") } - - it "changes the description of an existing item" do - post_via_redirect '', - FactoryGirl.attributes_for(:feed_item, - title: "item 1", description: "New description") - expect(assigns(:feed_items).map{|f| f.description}).to include("New description") - expect(assigns(:feed_items).length).to eq(2) - get '/index' - expect(assigns(:feeds).length).to eq(2) + + it "serves index as html by default" do + get_via_redirect '/index' + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves index.html as html" do + get_via_redirect '/index.html' + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves index.rss as rss" do + get_via_redirect '/index.rss' + expect(response.header['Content-Type']).to include('application/rss+xml') end - it "adds the item when inserting a new title into an existing feed" do - post_via_redirect '', - FactoryGirl.attributes_for(:feed_item, title: "item 99", - description: "New description") - expect(assigns(:feed_items).map{|f| f.description}).to include("New description") - expect(assigns(:feed_items).length).to eq(3) - get '/index' - expect(assigns(:feeds).length).to eq(2) - end - - it "adds a new feed when inserting a new item into a new feed" do - post_via_redirect '', - FactoryGirl.attributes_for(:feed_item, feed_name: "new_feed") - expect(assigns(:feed_items).length).to eq(1) - expect(assigns(:feed_items)[0].feed_name).to eq("new_feed") - get '/index' - expect(assigns(:feeds).length).to eq(3) - end - - it "removes the item when updated with a blank description" do - post_via_redirect '', - FactoryGirl.attributes_for(:feed_item, title: "item 1", - description: "") - expect(assigns(:feed_items).map{|f| f.title}).not_to include("item 1") - expect(assigns(:feed_items).length).to eq(1) - get '/index' - expect(assigns(:feeds).length).to eq(2) - end - - it "removes the feed when deleting the last item from a feed" do - post_via_redirect '', - FactoryGirl.attributes_for(:feed_item, feed_name: "other_test_feed", - description: "") - get '/index' - expect(assigns(:feeds).length).to eq(1) + it "serves index as html with the accept header" do + get_via_redirect '/index', {}, {'Accept' => 'text/html'} + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves index as rss with the accept header" do + get_via_redirect '/index', {}, {'Accept' => 'application/rss+xml'} + expect(response.header['Content-Type']).to include('application/rss+xml') + end + + it "serves feed as html by default" do + get_via_redirect '/other_test_feed' + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves feed.html as html" do + get_via_redirect '/other_test_feed.html' + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves feed.rss as rss" do + get_via_redirect '/other_test_feed.rss' + expect(response.header['Content-Type']).to include('application/rss+xml') + end + + it "serves feed as html with the accept header" do + get_via_redirect '/other_test_feed', {}, {'Accept' => 'text/html'} + expect(response.header['Content-Type']).to include('text/html') + end + + it "serves feed as rss with the accept header" do + get_via_redirect '/other_test_feed', {}, {'Accept' => 'application/rss+xml'} + expect(response.header['Content-Type']).to include('application/rss+xml') end end