Report abuse

require File.dirname(__FILE__) + '/../spec_helper'

describe FeedsController, " called with uri /feeds/new" do
  before(:each) do
    @feed = mock("feed")
    Feed.stub!(:new).and_return(@feed)
    @feed.stub!(:save).and_return(true)
    controller.stub!(:authenticate).and_return(true)
  end

  it "should be an instance of FeedsController" do
    controller.should be_an_instance_of(FeedsController)
  end

  it "should create a new instance of Feed with GET to new" do
    get :new
    response.should be_success
    response.should render_template("feeds/new")
  end

  it "should save an instance of Feed with POST on create" do
    post :create
    response.should redirect_to(feeds_url)
  end

  it "should flash a success message" do
    post :create
    flash[:notice].should == "Feed was successfully created."
  end

  it "should create the feed" do
    Feed.should_receive(:new).with({"name" => "Filme", \
                                    "url" => "http://localhost", \
                                    "description" => "Alles zum Thema " + 
                                    "Filme"}).and_return(@feed)

    post :create, :feed => {"name" => "Filme", \
                            "url" => "http://localhost", \
                            "description" => "Alles zum Thema Filme"}
  end

  it "should save the feed" do
    @feed.should_receive(:save).and_return(true)
    post :create
  end
end

describe FeedsController, " receiving /feeds/new using POST, \
but doesn't save" do
  before(:each) do
    @feed = mock("feed")
    Feed.stub!(:new).and_return(@feed)
    @feed.stub!(:save).and_return(false)
    controller.stub!(:authenticate).and_return(true)
  end

  it "should fail when saving feed" do
    @feed.should_receive(:save).and_return(false)
    post :create
  end

  it "should render the form new.html.erb" do
    post :create
    response.should render_template(:new)
  end
end