On 11/11/2010 04:45 PM, [email protected] wrote:
> From: Ladislav Martincik<[email protected]>
>
> - This patch expects DatabaseCleaner to be part of RSpec config
> ---
>   src/app/controllers/users_controller.rb       |    2 +-
>   src/app/models/user.rb                        |    4 +-
>   src/spec/controllers/users_controller_spec.rb |  101 
> ++++++++++--------------
>   src/spec/factories/base_permission_object.rb  |    3 +
>   src/spec/factories/metadata_object.rb         |    5 +
>   src/spec/factories/permission.rb              |   10 +-
>   6 files changed, 58 insertions(+), 67 deletions(-)
>   create mode 100644 src/spec/factories/base_permission_object.rb
>
> diff --git a/src/app/controllers/users_controller.rb 
> b/src/app/controllers/users_controller.rb
> index 9a6c1db..9896c98 100644
> --- a/src/app/controllers/users_controller.rb
> +++ b/src/app/controllers/users_controller.rb
> @@ -77,7 +77,7 @@ class UsersController<  ApplicationController
>       @user = params[:user][:id] ? User.find(params[:user][:id]) : 
> @current_user
>       if params[:commit] == "Save"
>         if @user
> -        has_users_modify= 
> BasePermissionObject.general_permission_scope.can_modify_users(@current_user)
> +        has_users_modify = 
> BasePermissionObject.general_permission_scope.can_modify_users(@current_user)
>           if @user != @current_user
>             if !has_users_modify
>               flash[:notice] = "Invalid Permission to perform this operation"
> diff --git a/src/app/models/user.rb b/src/app/models/user.rb
> index aed6fe6..0332095 100644
> --- a/src/app/models/user.rb
> +++ b/src/app/models/user.rb
> @@ -28,8 +28,8 @@ class User<  ActiveRecord::Base
>     belongs_to :quota, :autosave =>  true
>     accepts_nested_attributes_for :quota
>
> -  validates_length_of   :first_name, :maximum =>  255
> -  validates_length_of   :last_name,  :maximum =>  255
> +  validates_length_of :first_name, :maximum =>  255, :allow_blank =>  true
> +  validates_length_of :last_name,  :maximum =>  255, :allow_blank =>  true
>
>
>     # authlogic's password confirmation doesn't fire up when we fill in the
> diff --git a/src/spec/controllers/users_controller_spec.rb 
> b/src/spec/controllers/users_controller_spec.rb
> index 92435f4..eedb0b3 100644
> --- a/src/spec/controllers/users_controller_spec.rb
> +++ b/src/spec/controllers/users_controller_spec.rb
> @@ -1,112 +1,95 @@
>   require 'spec_helper'
>
>   describe UsersController do
> -  fixtures :all
> +
>     before(:each) do
> +    Factory(:base_permission_object)
>       @tuser = Factory :tuser
>       @admin_permission = Factory :admin_permission
> +    @admin_permission.role.privileges<<  Privilege.new(:name =>  
> 'user_modify')
>       @admin = @admin_permission.user
> +    Factory.create(:default_quota_metadata)
> +    Factory.create(:default_role_metadata)
> +    Factory.create(:default_pool_metadata)
>       activate_authlogic
> -
> -    @allow_self_service_logins = Factory(:metadata_object, :key =>  
> "allow_self_service_logins", :value =>  "true")
> -
> -    @default_quota = Factory(:unlimited_quota)
> -    @self_service_default_quota = Factory(:metadata_object, :key =>  
> "self_service_default_quota",
> -                                                            :value =>  
> @default_quota,
> -                                                            :object_type =>  
> "Quota")
> -
> -    @default_pool = Factory(:pool, :name =>  "default_pool")
> -    @self_service_default_quota = Factory(:metadata_object, :key =>  
> "self_service_default_pool",
> -                                                          :value =>  
> @default_pool,
> -                                                          :object_type =>  
> "Pool")
> -
> -    @default_role = Role.find(:first, :conditions =>  ['name = ?', 'Instance 
> Creator and User'])
> -    @self_service_default_quota = Factory(:metadata_object, :key =>  
> "self_service_default_role",
> -                                                          :value =>  
> @default_role,
> -                                                          :object_type =>  
> "Role")
>     end
>
> -  it "should call new method" do
> -    route_for(:controller =>  'user_sessions', :action =>  'new').should == 
> 'login'
> +  it "allows user to get to registration form for new user" do
>       get :new
> -    @current_user.should == nil
> -    UserSession.find.should == nil
>       response.should be_success
>     end
>
>     describe "#create" do
> -    before(:each) do
> -
> -    end
> -
>       context "user enters valid input" do
> -      it "should create user" do
> -        lambda {
> -          post :create, :user =>  { :login =>  "tuser2", :email =>  
> "[email protected]",
> -                                   :password =>  "testpass",
> -                                   :password_confirmation =>  "testpass" }
> -        }.should change{ User.count }
> -        user = User.find(:first, :conditions =>  ['login = ?', "tuser2"])
> +      it "creates user" do
> +        lambda do
> +          post :create, :user =>  {
> +            :login =>  "tuser2", :email =>  "[email protected]",
> +            :password =>  "testpass",
> +            :password_confirmation =>  "testpass" }
> +        end.should change(User, :count).by(1)
> +
>           response.should redirect_to(dashboard_url)
>         end
>
>         it "fails to create pool" do
> -        lambda {
> +        lambda do
>             post :create, :user =>  {}
> -        }.should_not change{ User.count }
> -        p = Pool.find_by_name("tuser2")
> -        p.should be_nil
> +        end.should_not change(User, :count)
> +
>           returned_user = assigns[:user]
>           returned_user.errors.empty?.should be_false
>           returned_user.should have(2).errors_on(:login)
>           returned_user.should have(2).errors_on(:email)
>           returned_user.should have(1).error_on(:password)
>           returned_user.should have(1).error_on(:password_confirmation)
> -        #assigns[:user].errors.find_all {|attr,msg|
> -        #  ["login", "email", "password",  "password_confirmation"].
> -        #  include?(attr).should be_true
> -        #}
> -        response.should  render_template('new')
> +
> +        response.should render_template('new')
>         end
>       end
>     end
>
> -  it "should allow an admin to create user" do
> +  it "allows an admin to create user" do
>       UserSession.create(@admin)
> -    lambda {
> -      post :create, :user =>  { :login =>  "tuser3", :email =>  
> "[email protected]",
> -                               :password =>  "testpass",
> -                               :password_confirmation =>  "testpass" }
> -    }.should change{ User.count }
> -    user = User.find(:first, :conditions =>  ['login = ?', "tuser3"])
> +    lambda do
> +      post :create, :user =>  {
> +        :login =>  "tuser3", :email =>  "[email protected]",
> +        :password =>  "testpass",
> +        :password_confirmation =>  "testpass" }
> +    end.should change(User, :count)
> +
>       response.should redirect_to(users_url)
>     end
>
>     it "should not allow a regular user to create user" do
>       UserSession.create(@tuser)
> -    lambda {
> -      post :create, :user =>  { :login =>  "tuser4", :email =>  
> "[email protected]",
> -                               :password =>  "testpass",
> -                               :password_confirmation =>  "testpass" }
> -    }.should_not change{ User.count }
> +    lambda do
> +      post :create, :user =>  {
> +        :login =>  "tuser4", :email =>  "[email protected]",
> +        :password =>  "testpass",
> +        :password_confirmation =>  "testpass" }
> +    end.should_not change(User, :count)
>     end
>
> -  it "should show user" do
> +  it "provides show view for user" do
>       UserSession.create(@tuser)
>       get :show
> +
>       response.should be_success
>     end
>
> -  it "should get edit" do
> +  it "provides edit view for user" do
>       UserSession.create(@tuser)
>       get :edit, :id =>  @tuser.id
> +
>       response.should be_success
>     end
>
> -  test "should update user" do
> +  it "updates user with new data" do
>       UserSession.create(@tuser)
> -    put :update, :id =>  @tuser.id, :user =>  { }, :save =>'true'
> -    response.should redirect_to(users_path)
> +    put :update, :id =>  @tuser.id, :user =>  {}, :commit =>  'Save'
> +
> +    response.should redirect_to(dashboard_path)
>     end
>
>     # checks whether proper error template is rendered when an exception 
> raises
> diff --git a/src/spec/factories/base_permission_object.rb 
> b/src/spec/factories/base_permission_object.rb
> new file mode 100644
> index 0000000..ccc2bf1
> --- /dev/null
> +++ b/src/spec/factories/base_permission_object.rb
> @@ -0,0 +1,3 @@
> +Factory.define :base_permission_object do |o|
> +  o.name BasePermissionObject::GENERAL_PERMISSION_SCOPE
> +end
> diff --git a/src/spec/factories/metadata_object.rb 
> b/src/spec/factories/metadata_object.rb
> index 5735896..9ac8021 100644
> --- a/src/spec/factories/metadata_object.rb
> +++ b/src/spec/factories/metadata_object.rb
> @@ -4,6 +4,11 @@ Factory.define :metadata_object do |o|
>     o.object_type nil
>   end
>
> +Factory.define :default_logins_metadata, :parent =>  :metadata_object do |o|
> +   o.key 'allow_self_service_logins'
> +   o.value 'true'
> +end
> +
>   Factory.define :default_zone_metadata, :parent =>  :metadata_object do |o|
>      o.key 'default_zone'
>      o.value {Factory.create(:zone).id}
> diff --git a/src/spec/factories/permission.rb 
> b/src/spec/factories/permission.rb
> index 8b9fd69..9ccd3e7 100644
> --- a/src/spec/factories/permission.rb
> +++ b/src/spec/factories/permission.rb
> @@ -3,25 +3,25 @@ Factory.define :permission do |p|
>   end
>
>   Factory.define :admin_permission, :parent =>  :permission do |p|
> -  p.role { |r| Role.find(:first, :conditions =>  ['name = ?', 
> 'Administrator']) }
> +  p.role { |r| Role.first(:conditions =>  ['name = ?', 'Administrator']) || 
> Factory(:role, :name =>  'Administrator') }
>     p.permission_object { |r| BasePermissionObject.general_permission_scope }
>     p.user { |u| u.association(:admin_user) }
>   end
>
>   Factory.define :provider_admin_permission, :parent =>  :permission do |p|
> -  p.role { |r| Role.find(:first, :conditions =>  ['name = ?', 'Provider 
> Administrator']) }
> +  p.role { |r| Role.first(:conditions =>  ['name = ?', 'Provider 
> Administrator']) || Factory(:role, :name =>  'Provider Administrator') }
>     p.permission_object { |r| r.association(:mock_provider) }
>     p.user { |u| u.association(:provider_admin_user) }
>   end
>
>   Factory.define :pool_creator_permission, :parent =>  :permission do |p|
> -  p.role { |r| Role.find(:first, :conditions =>  ['name = ?', 'Pool 
> Creator']) }
> +  p.role { |r| Role.first(:conditions =>  ['name = ?', 'Pool Creator']) || 
> Factory(:role, :name =>  'Pool Creator') }
>     p.permission_object { |r| r.association(:mock_provider) }
>     p.user { |u| u.association(:pool_creator) }
>   end
>
>   Factory.define :instance_creator_and_user_permission, :parent =>  
> :permission do |p|
> -  p.role { |r| Role.find(:first, :conditions =>  ['name = ?', 'Instance 
> Creator and User']) }
> +  p.role { |r| Role.first(:conditions =>  ['name = ?', 'Instance Creator and 
> User']) || Factory(:role, :name =>  'Instance Creator and User') }
>     p.permission_object { |r| r.association(:pool) }
>     p.user { |u| u.association(:user) }
> -end
> \ No newline at end of file
> +end

ACK
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to