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)