shared_examples "it is success" do it "has a 200 status code" do action expect(response.status).to eq(200) end it "is success" do action expect(response).to be_success end end shared_examples "it assigns object" do it "assigns object variable" do action expect(assigns(object_variable)).to eq(assigned_object_variable) end end shared_examples "it assigns new object" do it "assigns new object" do action expect(assigns(object_variable)).to be_a_new(object_class) expect(assigns(object_variable)).not_to be_persisted end end shared_examples "it assigns persisted object" do it "assigns new object" do action expect(assigns(object_variable)).to be_a(object_class) expect(assigns(object_variable)).to be_persisted end end shared_examples "it is restricted" do it "is expected to raise error" do bypass_rescue expect { action }.to raise_error(CanCan::AccessDenied) end it "is not success" do action expect(response).not_to be_success end end