spec/controllers/stachio/templates_controller_spec.rb in stachio-0.0.2 vs spec/controllers/stachio/templates_controller_spec.rb in stachio-0.0.3

- old
+ new

@@ -18,10 +18,13 @@ # Message expectations are only used when there is no simpler way to specify # that an instance is receiving a specific message. module Stachio describe TemplatesController do + # 'render_views' will render any erb /haml/whatever as part of the tests, thus + # providing some (minimal) assurance that nothing stupid was done + render_views # This should return the minimal set of attributes required to create a valid # Template. As you add validations to Template, be sure to # adjust the attributes here as well. let(:valid_attributes) do @@ -39,37 +42,72 @@ it "assigns all templates as @templates" do template = Template.create! valid_attributes get :index, {}, valid_session assigns(:templates).should eq([template]) end + + it "does not require permission" do + Stachio::Engine.config.stub(:readonly).and_return(true) + template = Template.create! valid_attributes + get :index, {}, valid_session + response.should_not redirect_to(templates_path) + end end describe "GET show" do it "assigns the requested template as @template" do template = Template.create! valid_attributes get :show, {:id => template.to_param}, valid_session assigns(:template).should eq(template) end + + it "does not require permission" do + Stachio::Engine.config.stub(:readonly).and_return(true) + template = Template.create! valid_attributes + get :show, {:id => template.to_param}, valid_session + response.should_not redirect_to(templates_path) + end end describe "GET new" do + it "requires permission" do + Stachio::Engine.config.stub(:readonly).and_return(true) + get :new, {}, valid_session + response.should redirect_to(templates_path) + end + it "assigns a new template as @template" do get :new, {}, valid_session assigns(:template).should be_a_new(Template) end end describe "GET edit" do + it "requires permission" do + Stachio::Engine.config.stub(:readonly).and_return(true) + template = Template.create! valid_attributes + get :edit, {:id => template.to_param}, valid_session + response.should redirect_to(templates_path) + end + it "assigns the requested template as @template" do template = Template.create! valid_attributes get :edit, {:id => template.to_param}, valid_session assigns(:template).should eq(template) end end describe "POST create" do describe "with valid params" do + it "requires permission" do + Stachio::Engine.config.stub(:readonly).and_return(true) + expect { + post :create, {:template => valid_attributes}, valid_session + }.to_not change(Template, :count).by(1) + response.should redirect_to(templates_path) + end + it "creates a new Template" do expect { post :create, {:template => valid_attributes}, valid_session }.to change(Template, :count).by(1) end @@ -103,10 +141,18 @@ end end describe "PUT update" do describe "with valid params" do + it "requires permission" do + template = Template.create! valid_attributes + Stachio::Engine.config.stub(:readonly).and_return(true) + Template.any_instance.should_not_receive(:update_attributes).with({ "template_name" => "MyString" }) + put :update, {:id => template.to_param, :template => { "template_name" => "MyString" }}, valid_session + response.should redirect_to(templates_path) + end + it "updates the requested template" do template = Template.create! valid_attributes # Assuming there are no other templates in the database, this # specifies that the Template created on the previous line # receives the :update_attributes message with whatever params are @@ -146,9 +192,20 @@ end end end describe "DELETE destroy" do + it "requires permission" do + template = Template.create! valid_attributes + Stachio::Engine.config.stub(:readonly).and_return(true) + + expect { + delete :destroy, {:id => template.to_param}, valid_session + }.to_not change(Template, :count).by(-1) + + response.should redirect_to(templates_path) + end + it "destroys the requested template" do template = Template.create! valid_attributes expect { delete :destroy, {:id => template.to_param}, valid_session }.to change(Template, :count).by(-1)