Skip to content

Commit

Permalink
Fix some bug in add member see #40
Browse files Browse the repository at this point in the history
  • Loading branch information
shingara committed Mar 8, 2010
1 parent 93cef26 commit 9871390
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 31 deletions.
2 changes: 1 addition & 1 deletion app/controllers/settings/project_members_controller.rb
Expand Up @@ -27,7 +27,7 @@ def new

def create
@member = ProjectMember.new(params[:project_member])
@member.function_id = Function.first(:conditions => {:name => 'Developper'}).id
@member.function_id = Function.not_admin.id
@project.project_members << @member
if @project.save!
flash[:notice] = "Member was successfully created"
Expand Down
2 changes: 0 additions & 2 deletions app/models/function.rb
Expand Up @@ -5,8 +5,6 @@ class Function

include MongoMapper::Document

ADMIN = 'Admin'

# TODO: need test validation of required name and uniqueness of name
key :name, String, :required => true, :unique => true
key :project_admin, Boolean
Expand Down
7 changes: 7 additions & 0 deletions config/initializers/mongodb.rb
Expand Up @@ -7,3 +7,10 @@
:logger => Rails.logger)
MongoMapper.database = mongo['database']
end
# module IdentityMapAddition
# def self.included(model)
# model.plugin MongoMapper::Plugins::IdentityMap
# end
# end
#
# MongoMapper::Document.append_inclusions(IdentityMapAddition)
59 changes: 39 additions & 20 deletions features/projects/settings_member.feature
Expand Up @@ -8,7 +8,7 @@ Feature: Changing function of project's member
And I have a project "yahoo"
And "shingara" not admin on project "yahoo"
And I have user "clown" with function "admin" on project "yahoo" and no other user
And I have user "zapata" with function "developper" on project "yahoo"
And I have user "zapata" with function "reporter" on project "yahoo"
When logged with "shingara@gmail.com" with password "tintinpouet"
And I follow "yahoo"
And I follow "Settings"
Expand All @@ -18,27 +18,27 @@ Feature: Changing function of project's member
When I select "admin" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "admin" in project "yahoo"
When I select "developper" from "member_function" of "zapata" from "yahoo" project
When I select "reporter" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "developper" in project "yahoo"
When I select "developper" from "member_function" of "clown" from "yahoo" project
Then the member "zapata" has function "reporter" in project "yahoo"
When I select "reporter" from "member_function" of "clown" from "yahoo" project
When I select "admin" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "admin" in project "yahoo"
Then the member "clown" has function "developper" in project "yahoo"
When I select "developper" from "member_function" of "clown" from "yahoo" project
When I select "developper" from "member_function" of "zapata" from "yahoo" project
Then the member "clown" has function "reporter" in project "yahoo"
When I select "reporter" from "member_function" of "clown" from "yahoo" project
When I select "reporter" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "admin" in project "yahoo"
And the member "clown" has function "developper" in project "yahoo"
And the member "clown" has function "reporter" in project "yahoo"
And I should see "You can't have no admin in a project"

Scenario: Setting project with project_admin user
Given I have one user "shingara@gmail.com" with password "tintinpouet" and login "shingara"
And I have a project "yahoo" without members
And "shingara@gmail.com" is project admin of "yahoo" project
And I have user "clown" with function "admin" on project "yahoo"
And I have user "zapata" with function "developper" on project "yahoo"
And I have user "zapata" with function "reporter" on project "yahoo"
When logged with "shingara@gmail.com" with password "tintinpouet"
And I follow "yahoo"
And I follow "Settings"
Expand All @@ -48,23 +48,42 @@ Feature: Changing function of project's member
When I select "admin" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "admin" in project "yahoo"
When I select "developper" from "member_function" of "zapata" from "yahoo" project
When I select "reporter" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "developper" in project "yahoo"
When I select "developper" from "member_function" of "clown" from "yahoo" project
Then the member "zapata" has function "reporter" in project "yahoo"
When I select "reporter" from "member_function" of "clown" from "yahoo" project
And I select "admin" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "admin" in project "yahoo"
And the member "clown" has function "developper" in project "yahoo"
When I select "developper" from "member_function" of "clown" from "yahoo" project
And I select "developper" from "member_function" of "zapata" from "yahoo" project
And the member "clown" has function "reporter" in project "yahoo"
When I select "reporter" from "member_function" of "clown" from "yahoo" project
And I select "reporter" from "member_function" of "zapata" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "developper" in project "yahoo"
And the member "clown" has function "developper" in project "yahoo"
Then the member "zapata" has function "reporter" in project "yahoo"
And the member "clown" has function "reporter" in project "yahoo"
When I select "admin" from "member_function" of "clown" from "yahoo" project
And I select "developper" from "member_function" of "zapata" from "yahoo" project
And I select "developper" from "member_function" of "shingara" from "yahoo" project
And I select "reporter" from "member_function" of "zapata" from "yahoo" project
And I select "reporter" from "member_function" of "shingara" from "yahoo" project
And I press "Update all"
Then the member "zapata" has function "developper" in project "yahoo"
Then the member "zapata" has function "reporter" in project "yahoo"
And the member "clown" has function "admin" in project "yahoo"
And I should see "You can't update your own function to become a non admin"

Scenario: Add member in project with admin user
Given I have one user "shingara@gmail.com" with password "tintinpouet" and login "shingara"
And I have a project "yahoo" without members
And "shingara@gmail.com" is project admin of "yahoo" project
And I have user "clown" with function "admin" on project "yahoo"
And I have user "jungle" not in project "yahoo"
And I have user "zapata" with function "reporter" on project "yahoo"
When logged with "shingara@gmail.com" with password "tintinpouet"
And I follow "yahoo"
And I follow "Settings"
Then I should see "Member on project"
When I follow "Add member"
And I select "jungle" from "project_member_user_id"
And I press "Create"
Then I should see 1 "tr" tag with content "jungle"



7 changes: 7 additions & 0 deletions features/step_definitions/result_steps.rb
Expand Up @@ -106,6 +106,13 @@ def function_with_name(name)
project.save!
end

Given /^I have user "([^\"]*)" not in project "([^\"]*)"$/ do |login, project_name|
user = user_with_name(login)
project = project_with_name(project_name)
project.project_members.delete_if{ |pm| pm.user_id == user._id }
project.save!
end

Then /^the member "([^\"]*)" has function "([^\"]*)" in project "([^\"]*)"$/ do |user_name, function_name, project_name|
u = User.first(:conditions => {:login => user_name})
pr = Project.first(:conditions => {:name => project_name})
Expand Down
Expand Up @@ -6,7 +6,7 @@

before :each do
@project = make_project
Function.make(:name => 'Developper')
Function.make(:name => 'developper', :project_admin => false)
end

describe 'like anonymous user' do
Expand Down
8 changes: 1 addition & 7 deletions spec/spec_helper.rb
Expand Up @@ -108,7 +108,7 @@ def login_request(user = nil)
end

def function_not_admin
fna = Function.first(:conditions => {:name => {'$ne' => Function::ADMIN}})
fna = Function.not_admin
fna = Function.make unless fna
fna
end
Expand All @@ -118,9 +118,3 @@ def login_admin
need_a_milestone
login_request(user)
end

def need_developper_function
unless Function.first(:name => 'Developper')
Function.gen(:name => 'Developper')
end
end

0 comments on commit 9871390

Please sign in to comment.