require 'spec_helper'
-describe FeedController do
-# describe "POST create" do
-# let (:feed_item1) { mock_model(FeedItem).as_null_object }
-#
-# before do
-# FeedItem.stub(:new).and_return(feed_item)
-# end
-# end
-
+describe FeedController do
describe "GET #index" do
let!(:feed_item1) { FactoryGirl.create(:feed_item, feed_name: "feed1") }
let!(:feed_item2) { FactoryGirl.create(:feed_item, feed_name: "feed2") }
it "redirects an update the feed path" do
post :update, FactoryGirl.attributes_for(:feed_item,
- title: "item 1", description: "New description")
+ title: "item 1", description: "New description")
expect(response).to redirect_to(feed_path("test_feed"))
end
-
end
-
-
end
-
-
-# describe MessagesController do
-# describe "POST create" do
-# let(:message) { mock_model(Message).as_null_object }
-# before do
-# Message.stub(:new).and_return(message)
-# end
-# it "creates a new message" do
-# Message.should_receive(:new).
-# with("text" => "a quick brown fox").
-# and_return(message)
-# post :create, :message => { "text" => "a quick brown fox" }
-# end
-# it "saves the message" do
-# message.should_receive(:save)
-# post :create
-# end
-# it "redirects to the Messages index" do
-# post :create
-# response.should redirect_to(:action => "index")
-# end
-# end
-# end
-#
--- /dev/null
+require 'spec_helper'
+
+describe "update" 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)
+ 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)
+ end
+end
+
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
-
+require 'capybara/rspec'
+
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }