require 'rails_helper'

describe CommentsController do

  before(:each) do
    @member = FactoryGirl.create(:member)
    sign_in @member
    controller.stub(:current_member) { @member }
  end

  def valid_attributes
    @post = FactoryGirl.create(:post)
    { :post_id => @post.id, :author_id => @member.id, :body => "some text" }
  end

  describe "GET RSS feed" do
    it "returns an RSS feed" do
      get :index, :format => "rss"
      response.should be_success
      response.should render_template("comments/index")
      response.content_type.should eq("application/rss+xml")
    end
  end

  describe "GET new" do
    it "picks up post from params" do
      post = FactoryGirl.create(:post)
      get :new, {:post_id => post.id}
      assigns(:post).should eq(post)
    end

    it "assigns the old comments as @comments" do
      post = FactoryGirl.create(:post)
      old_comment = FactoryGirl.create(:comment, :post => post)
      get :new, {:post_id => post.id}
      assigns(:comments).should eq [old_comment]
    end

    it "dies if no post specified" do
      get :new
      response.should redirect_to(root_url)
    end
  end

  describe "GET edit" do
    it "assigns previous comments as @comments" do
      post = FactoryGirl.create(:post)
      old_comment = FactoryGirl.create(:comment, :post => post)
      comment = FactoryGirl.create(:comment, :post => post, :author => @member)
      get :edit, {:id => comment.to_param}
      assigns(:comments).should eq([comment, old_comment])
    end
  end

  describe "PUT update" do
    describe "with valid params" do
      it "redirects to the comment's post" do
        comment = Comment.create! valid_attributes
        put :update, {:id => comment.to_param, :comment => valid_attributes}
        response.should redirect_to(comment.post)
      end
    end
  end

  describe "DELETE destroy" do
    it "redirects to the post the comment was on" do
      comment = Comment.create! valid_attributes
      post = comment.post
      delete :destroy, {:id => comment.to_param}
      response.should redirect_to(post)
    end
  end

end
