require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe RePlansController do extend RulesEngineMacros integrate_views before(:each) do controller.instance_eval { flash.stub!(:sweep) } controller.stub!(:rules_engine_reader_access_required).and_return(true) controller.stub!(:rules_engine_editor_access_required).and_return(true) end describe "index" do it_should_require_rules_engine_reader_access(:index) it "should get the list of plans" do re_plans = [RePlan.make(:draft, :title => 'a'), RePlan.make(:changed, :title => 'b'), RePlan.make(:published, :title => 'c')] get :index assigns[:re_plans].should == re_plans end end describe "show" do it_should_require_rules_engine_reader_access(:show, :id => 123) it "should get the plan record with the ID" do re_plan = RePlan.make get :show, :id => re_plan.id assigns[:re_plan].should == re_plan end end # describe "new" do # it_should_require_rules_engine_editor_access(:new, :id => 123) # # it "should assign a new plan record" do # re_plan = mock_model(RePlan) # RePlan.should_receive(:new).and_return(re_plan) # get :new, :id => 123 # assigns[:re_plan].should == re_plan # end # # it "should render the 'new' template" do # get :new, :id => 123 # response.should render_template(:new) # end # end # # describe "create" do # it_should_require_rules_engine_editor_access(:create, :re_plan => {}) # # before do # @re_plan = mock_model(RePlan, :save => false) # RePlan.stub!(:new).and_return(@re_plan) # end # # it "should assign the re_plan parameters" do # RePlan.should_receive(:new).with("name" => "name", "value" => "value") # post :create, :re_plan => { :name => "name", :value => "value" } # end # # it "should save the re_plan" do # @re_plan.should_receive(:save) # post :create, :re_plan => { :key => "value" } # end # # describe "save failed" do # it "should render the 'new' template" do # post :create, :re_plan => { :key => "value" } # response.should render_template(:new) # end # end # # describe "save succeeded" do # before do # @re_plan.stub!(:save).and_return(true) # end # # it "should display a flash success message" do # post :create, :re_plan => { :key => "value" } # flash[:success].should_not be_blank # end # # it "should redirect to the change re_plan page for HTML" do # post :create, :re_plan => { :key => "value" } # response.should redirect_to(change_re_plan_path(@re_plan)) # end # # it "should render 'create' template for JAVASCRIPT" do # xhr :post, :create, :re_plan => { :key => "value" } # response.should render_template(:create) # end # end # end # # describe "change" do # it_should_require_rules_engine_editor_access(:change, :id => 123) # # it "should get the plan record with the ID" do # re_plan = mock_model(RePlan) # RePlan.should_receive(:find).with("123").and_return(re_plan) # get :change, :id => 123 # assigns[:re_plan].should == re_plan # end # end # # describe "edit" do # it_should_require_rules_engine_editor_access(:edit, :id => 123) # # it "should get the plan record with the ID" do # re_plan = mock_model(RePlan) # RePlan.should_receive(:find).with("123").and_return(re_plan) # get :edit, :id => 123 # assigns[:re_plan].should == re_plan # end # end # # describe "update" do # it_should_require_rules_engine_editor_access(:update, :id => 123, :re_plan => {}) # # before do # @re_plan = mock_model(RePlan, :save => false) # @re_plan.stub!(:attributes=) # RePlan.stub!(:find).and_return(@re_plan) # end # # it "should get the plan record with the ID" do # RePlan.should_receive(:find).with("123").and_return(@re_plan) # put :update, :id => 123, :re_plan => { :key => "value" } # assigns[:re_plan].should == @re_plan # end # # it "should assign the re_plan parameters" do # @re_plan.should_receive(:attributes=).with("name" => "name", "value" => "value") # put :update, :id => 123, :re_plan => { :name => "name", :value => "value" } # end # # it "should not assign the re_plan parameters :code" do # @re_plan.should_receive(:attributes=).with("name" => "name", "value" => "value") # put :update, :id => 123, :re_plan => { :name => "name", :value => "value", :code => "code" } # end # # it "should save the re_plan" do # @re_plan.should_receive(:save) # put :update, :id => 123, :re_plan => { :key => "value" } # end # # describe "save failed" do # it "should render the 'edit' template" do # put :update, :id => 123, :re_plan => { :key => "value" } # response.should render_template(:edit) # end # end # # describe "save succeeded" do # before do # @re_plan.stub!(:save).and_return(true) # end # # it "should display a flash success message" do # put :update, :id => 123, :re_plan => { :key => "value" } # flash[:success].should_not be_blank # end # # it "should redirect to the change re_plan page for HTML" do # put :update, :id => 123, :re_plan => { :key => "value" } # response.should redirect_to(change_re_plan_path(@re_plan)) # end # # it "should render 'update' template for JAVASCRIPT" do # xhr :put, :update, :id => 123, :re_plan => { :key => "value" } # response.should render_template(:update) # end # end # end # # # describe "activate_all" do # it_should_require_rules_engine_editor_access(:activate_all) # # before do # @re_plan_1 = mock_model(RePlan) # @re_plan_1.stub!(:plan_error).and_return(nil) # @re_plan_1.stub!(:activate!) # @re_plan_2 = mock_model(RePlan) # @re_plan_2.stub!(:plan_error).and_return(nil) # @re_plan_2.stub!(:activate!) # RePlan.stub!(:find).and_return([@re_plan_1, @re_plan_2]) # end # # it "should get the all of the plans" do # RePlan.should_receive(:find).with(:all).and_return([@re_plan_1, @re_plan_2]) # put :activate_all # assigns[:re_plans].should == [@re_plan_1, @re_plan_2] # end # # describe "no errors in the plans" do # it "should activate all of the re_plan" do # @re_plan_1.should_receive(:activate!) # @re_plan_2.should_receive(:activate!) # put :activate_all # end # # it "should display a flash success message" do # put :activate_all # flash[:success].should_not be_blank # end # end # # describe "one of the plans has errors" do # before(:each) do # @re_plan_2.stub!(:plan_error).and_return("you bet") # @re_plan_2.stub!(:plan_error).and_return("you bet") # end # # it "should stop checking at the first invalid plan" do # @re_plan_1.should_receive(:plan_error).and_return("you bet") # @re_plan_2.should_not_receive(:plan_error) # put :activate_all # end # # it "should not activate the plans" do # @re_plan_1.should_not_receive(:activate!) # @re_plan_2.should_not_receive(:activate!) # put :activate_all # end # # it "should display a flash error message" do # put :activate_all # flash[:error].should_not be_blank # end # end # # it "should redirect to the re_plan index page for HTML" do # put :activate_all # response.should redirect_to(re_plans_path) # end # # it "should render 'index' template for JAVASCRIPT" do # xhr :put, :activate_all # response.should render_template(:index) # end # end # # describe "activate" do # it_should_require_rules_engine_editor_access(:activate, :id => 123) # # before do # @re_plan = mock_model(RePlan) # @re_plan.stub!(:plan_error).and_return(nil) # @re_plan.stub!(:activate!) # RePlan.stub!(:find).and_return(@re_plan) # end # # it "should get the plan record with the ID" do # RePlan.should_receive(:find).with("123").and_return(@re_plan) # put :activate, :id => 123 # assigns[:re_plan].should == @re_plan # end # # describe "the plan is valid" do # it "should activate the re_plan" do # @re_plan.should_receive(:activate!) # put :activate, :id => 123 # end # # it "should display a flash success message" do # put :activate, :id => 123 # flash[:success].should_not be_blank # end # end # # describe "the plan is invalid" do # before(:each) do # @re_plan.stub!(:plan_error).and_return("you bet") # end # # it "should not activate the plan" do # @re_plan.should_not_receive(:activate!) # put :activate, :id => 123 # end # # it "should display a flash error message" do # put :activate, :id => 123 # flash[:error].should_not be_blank # end # end # # it "should redirect to the change re_plan page for HTML" do # put :activate, :id => 123 # response.should redirect_to(change_re_plan_path(@re_plan)) # end # # it "should render 'update' template for JAVASCRIPT" do # xhr :put, :activate, :id => 123 # response.should render_template(:update) # end # end # # describe "deactivate" do # it_should_require_rules_engine_editor_access(:deactivate, :id => 123) # # before do # @re_plan = mock_model(RePlan) # @re_plan.stub!(:deactivate!) # RePlan.stub!(:find).and_return(@re_plan) # end # # it "should get the plan record with the ID" do # RePlan.should_receive(:find).with("123").and_return(@re_plan) # put :deactivate, :id => 123 # assigns[:re_plan].should == @re_plan # end # # it "should deactivate the re_plan" do # @re_plan.should_receive(:deactivate!) # put :deactivate, :id => 123 # end # # it "should display a flash success message" do # put :deactivate, :id => 123 # flash[:success].should_not be_blank # end # # it "should redirect to the change re_plan page for HTML" do # put :deactivate, :id => 123 # response.should redirect_to(change_re_plan_path(@re_plan)) # end # # it "should render 'update' template for JAVASCRIPT" do # xhr :put, :deactivate, :id => 123 # response.should render_template(:update) # end # end # # describe "revert" do # it_should_require_rules_engine_editor_access(:revert, :id => 123) # # before do # @re_plan = mock_model(RePlan) # @re_plan.stub!(:revert!) # RePlan.stub!(:find).and_return(@re_plan) # end # # it "should get the plan record with the ID" do # RePlan.should_receive(:find).with("123").and_return(@re_plan) # put :revert, :id => 123 # assigns[:re_plan].should == @re_plan # end # # it "should revert the re_plan" do # @re_plan.should_receive(:revert!) # put :revert, :id => 123 # end # # it "should display a flash success message" do # put :revert, :id => 123 # flash[:success].should_not be_blank # end # # it "should redirect to the change re_plan page for HTML" do # put :revert, :id => 123 # response.should redirect_to(change_re_plan_path(@re_plan)) # end # # it "should render 'update' template for JAVASCRIPT" do # xhr :put, :revert, :id => 123 # response.should render_template(:update) # end # end # # describe "destroy" do # it_should_require_rules_engine_editor_access(:destroy, :id => 123) # # before do # @re_plan = mock_model(RePlan) # @re_plan.stub!(:destroy) # RePlan.stub!(:find).and_return(@re_plan) # end # # it "should get the plan record with the ID" do # RePlan.should_receive(:find).with("123").and_return(@re_plan) # delete :destroy, :id => 123 # assigns[:re_plan].should == @re_plan # end # # it "should destroy the re_plan" do # @re_plan.should_receive(:destroy) # delete :destroy, :id => 123 # end # # it "should display a flash success message" do # delete :destroy, :id => 123 # flash[:success].should_not be_blank # end # # it "should redirect to the re_plans page for HTML" do # delete :destroy, :id => 123 # response.should redirect_to(re_plans_path) # end # # it "should redirect to the re_plans page for JAVASCRIPT" do # xhr :delete, :destroy, :id => 123 # response.body.should == "window.location.href = '#{re_plans_path}';" # end # end end