Files
growstuff/spec/controllers/comments_controller_spec.rb
Skud a3b7822268 Review and cleanup of JSON API
Removed JSON from classes that shouldn't have it.
(PT: https://www.pivotaltracker.com/story/show/54570954)

Also found a couple of controllers with broken authorization (i.e. not
checking CanCan). Incidentally, this also fixes the comment form bug at
https://www.pivotaltracker.com/story/show/54328716.
2013-08-05 13:29:07 +10:00

75 lines
2.0 KiB
Ruby

require 'spec_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