require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe GroupsController do include SocialStream::TestHelpers::Controllers render_views describe "when Anonymous" do it "should render index" do get :index assert_response :success end it "should render show" do get :show, :id => Factory(:group).to_param assert_response :success end it "should not render new" do begin get :new assert false rescue CanCan::AccessDenied assert true end end context "faking a new group" do before do model_attributes[:_founder] = Factory(:user).slug end it_should_behave_like "Deny Creating" end context "an existing group" do before do @current_model = Factory(:group) end it_should_behave_like "Deny Updating" it_should_behave_like "Deny Destroying" end end describe "when authenticated" do before do @user = Factory(:user) sign_in @user end it "should render index" do get :index assert_response :success end it "should render contact group" do @group = Factory(:member, :receiver => @user.actor).sender_subject get :show, :id => @group.to_param assert_response :success end it "should render other group" do get :show, :id => Factory(:group).to_param assert_response :success end it "should render new" do get :new, 'group' => { '_founder' => @user.to_param } assert_response :success end context "a new own group" do before do model_attributes[:_founder] = @user.slug model_attributes[:_participants] = [Factory(:user).slug] end it "should allow creating" do count = Group.count post :create, attributes group = assigns(:group) Group.count.should eq(count + 1) group.should be_valid assigns(:current_subject).should eq(group) response.should redirect_to(:home) end end context "a new fake group" do before do model_attributes[:_founder] = Factory(:user).slug end it_should_behave_like "Deny Creating" end context "a external group" do before do @current_model = Factory(:group) end it_should_behave_like "Deny Updating" it_should_behave_like "Deny Destroying" end context "a existing own group" do before do @current_model = Factory(:member, :receiver => @user.actor).sender_subject end it "should update contact group" do put :update, :id => @current_model.to_param, "group" => { "profile_attributes" => { "organization" => "Social Stream" } } response.should redirect_to(@current_model) end # it_should_behave_like "Allow Updating" it_should_behave_like "Allow Destroying" end end end