X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=spec%2Frequests%2Fupdate_spec.rb;h=bfe8647c91742789c0a55fe08e761e09bcc94583;hb=b30c218fb6433ad9b6ba65bcefee9c3f5b88d263;hp=8f3e8a66cadd654efd10bc1d98db557c097013b6;hpb=237d6858d43d010364b648e71d5516f12b6e7f4d;p=feedcatcher.git diff --git a/spec/requests/update_spec.rb b/spec/requests/update_spec.rb index 8f3e8a6..bfe8647 100644 --- a/spec/requests/update_spec.rb +++ b/spec/requests/update_spec.rb @@ -8,54 +8,51 @@ describe "update" do let!(:other_feed_item) { FactoryGirl.create(:feed_item, feed_name: "other_test_feed") } - 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 "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') + 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) 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') + 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) end end