summaryrefslogtreecommitdiff
path: root/spec/models/members/project_member_spec.rb
diff options
context:
space:
mode:
authorVinnie Okada <vokada@mrvinn.com>2015-03-17 20:53:09 -0600
committerVinnie Okada <vokada@mrvinn.com>2015-03-17 20:53:09 -0600
commitfeeffc442618d92040cd1cc38158b689a09988fd (patch)
treeb19c0ac2ddae23d830bbc69b99d920eec1f81363 /spec/models/members/project_member_spec.rb
parent1a9c2ddc55cf563ea42d67811a19b2693d7a44e9 (diff)
parent5bbc70da9cb439342bdbe022988e4e734d891f44 (diff)
downloadgitlab-ce-feeffc442618d92040cd1cc38158b689a09988fd.tar.gz
Merge branch 'master' into markdown-tags
Use the latest HTML pipeline gem
Diffstat (limited to 'spec/models/members/project_member_spec.rb')
-rw-r--r--spec/models/members/project_member_spec.rb92
1 files changed, 92 insertions, 0 deletions
diff --git a/spec/models/members/project_member_spec.rb b/spec/models/members/project_member_spec.rb
new file mode 100644
index 00000000000..521721f3577
--- /dev/null
+++ b/spec/models/members/project_member_spec.rb
@@ -0,0 +1,92 @@
+# == Schema Information
+#
+# Table name: members
+#
+# id :integer not null, primary key
+# access_level :integer not null
+# source_id :integer not null
+# source_type :string(255) not null
+# user_id :integer not null
+# notification_level :integer not null
+# type :string(255)
+# created_at :datetime
+# updated_at :datetime
+#
+
+require 'spec_helper'
+
+describe ProjectMember do
+ describe :import_team do
+ before do
+ @abilities = Six.new
+ @abilities << Ability
+
+ @project_1 = create :project
+ @project_2 = create :project
+
+ @user_1 = create :user
+ @user_2 = create :user
+
+ @project_1.team << [ @user_1, :developer ]
+ @project_2.team << [ @user_2, :reporter ]
+
+ @status = @project_2.team.import(@project_1)
+ end
+
+ it { expect(@status).to be_truthy }
+
+ describe 'project 2 should get user 1 as developer. user_2 should not be changed' do
+ it { expect(@project_2.users).to include(@user_1) }
+ it { expect(@project_2.users).to include(@user_2) }
+
+ it { expect(@abilities.allowed?(@user_1, :write_project, @project_2)).to be_truthy }
+ it { expect(@abilities.allowed?(@user_2, :read_project, @project_2)).to be_truthy }
+ end
+
+ describe 'project 1 should not be changed' do
+ it { expect(@project_1.users).to include(@user_1) }
+ it { expect(@project_1.users).not_to include(@user_2) }
+ end
+ end
+
+ describe :add_users_into_projects do
+ before do
+ @project_1 = create :project
+ @project_2 = create :project
+
+ @user_1 = create :user
+ @user_2 = create :user
+
+ ProjectMember.add_users_into_projects(
+ [@project_1.id, @project_2.id],
+ [@user_1.id, @user_2.id],
+ ProjectMember::MASTER
+ )
+ end
+
+ it { expect(@project_1.users).to include(@user_1) }
+ it { expect(@project_1.users).to include(@user_2) }
+
+
+ it { expect(@project_2.users).to include(@user_1) }
+ it { expect(@project_2.users).to include(@user_2) }
+ end
+
+ describe :truncate_teams do
+ before do
+ @project_1 = create :project
+ @project_2 = create :project
+
+ @user_1 = create :user
+ @user_2 = create :user
+
+ @project_1.team << [ @user_1, :developer]
+ @project_2.team << [ @user_2, :reporter]
+
+ ProjectMember.truncate_teams([@project_1.id, @project_2.id])
+ end
+
+ it { expect(@project_1.users).to be_empty }
+ it { expect(@project_2.users).to be_empty }
+ end
+end