From de944c914b2a780a5e968cc32ef64cddd2b82c9b Mon Sep 17 00:00:00 2001
From: Robert Speicher <rspeicher@gmail.com>
Date: Sun, 6 Mar 2016 16:53:22 -0500
Subject: [PATCH] Add traits for each access_level to ProjectMember factory

---
 .../project/merge_requests/acceptance.rb      |  2 +-
 .../steps/project/merge_requests/revert.rb    |  2 +-
 spec/factories/project_members.rb             | 22 ++++++++++++++++++-
 spec/requests/api/branches_spec.rb            |  4 ++--
 spec/requests/api/builds_spec.rb              |  4 ++--
 spec/requests/api/commit_status_spec.rb       | 10 ++++-----
 spec/requests/api/commits_spec.rb             |  4 ++--
 spec/requests/api/fork_spec.rb                |  2 +-
 spec/requests/api/project_members_spec.rb     |  4 ++--
 spec/requests/api/projects_spec.rb            |  4 ++--
 spec/requests/api/repositories_spec.rb        |  4 ++--
 spec/requests/api/runners_spec.rb             |  6 ++---
 spec/requests/api/tags_spec.rb                |  4 ++--
 spec/requests/api/triggers_spec.rb            |  4 ++--
 spec/requests/api/variables_spec.rb           |  4 ++--
 15 files changed, 50 insertions(+), 30 deletions(-)

diff --git a/features/steps/project/merge_requests/acceptance.rb b/features/steps/project/merge_requests/acceptance.rb
index 2685f5fd6b4..4fda0731e2f 100644
--- a/features/steps/project/merge_requests/acceptance.rb
+++ b/features/steps/project/merge_requests/acceptance.rb
@@ -29,7 +29,7 @@ class Spinach::Features::ProjectMergeRequestsAcceptance < Spinach::FeatureSteps
   step 'There is an open Merge Request' do
     @user = create(:user)
     @project = create(:project, :public)
-    @project_member = create(:project_member, user: @user, project: @project, access_level: ProjectMember::DEVELOPER)
+    @project_member = create(:project_member, :developer, user: @user, project: @project)
     @merge_request = create(:merge_request, :with_diffs, :simple, source_project: @project)
   end
 
diff --git a/features/steps/project/merge_requests/revert.rb b/features/steps/project/merge_requests/revert.rb
index c5a4cfce6f0..efbc4831ce1 100644
--- a/features/steps/project/merge_requests/revert.rb
+++ b/features/steps/project/merge_requests/revert.rb
@@ -36,7 +36,7 @@ class Spinach::Features::RevertMergeRequests < Spinach::FeatureSteps
   step 'There is an open Merge Request' do
     @user = create(:user)
     @project = create(:project, :public)
-    @project_member = create(:project_member, user: @user, project: @project, access_level: ProjectMember::DEVELOPER)
+    @project_member = create(:project_member, :developer, user: @user, project: @project)
     @merge_request = create(:merge_request, :with_diffs, :simple, source_project: @project)
   end
 
diff --git a/spec/factories/project_members.rb b/spec/factories/project_members.rb
index 70fb7595c74..cf3659ba275 100644
--- a/spec/factories/project_members.rb
+++ b/spec/factories/project_members.rb
@@ -2,6 +2,26 @@ FactoryGirl.define do
   factory :project_member do
     user
     project
-    access_level { ProjectMember::MASTER }
+    master
+
+    trait :guest do
+      access_level ProjectMember::GUEST
+    end
+
+    trait :reporter do
+      access_level ProjectMember::REPORTER
+    end
+
+    trait :developer do
+      access_level ProjectMember::DEVELOPER
+    end
+
+    trait :master do
+      access_level ProjectMember::MASTER
+    end
+
+    trait :owner do
+      access_level ProjectMember::OWNER
+    end
   end
 end
diff --git a/spec/requests/api/branches_spec.rb b/spec/requests/api/branches_spec.rb
index 36461e84c3a..55582aa53d2 100644
--- a/spec/requests/api/branches_spec.rb
+++ b/spec/requests/api/branches_spec.rb
@@ -7,8 +7,8 @@ describe API::API, api: true  do
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:guest) { create(:project_member, :guest, user: user2, project: project) }
   let!(:branch_name) { 'feature' }
   let!(:branch_sha) { '0b4bc9a49b562e85de7cc9e834518ea6828729b9' }
 
diff --git a/spec/requests/api/builds_spec.rb b/spec/requests/api/builds_spec.rb
index 175ee861a71..967c34800d0 100644
--- a/spec/requests/api/builds_spec.rb
+++ b/spec/requests/api/builds_spec.rb
@@ -7,8 +7,8 @@ describe API::API, api: true  do
   let(:api_user) { user }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:developer) { create(:project_member, user: user, project: project, access_level: ProjectMember::DEVELOPER) }
-  let!(:reporter) { create(:project_member, user: user2, project: project, access_level: ProjectMember::REPORTER) }
+  let!(:developer) { create(:project_member, :developer, user: user, project: project) }
+  let!(:reporter) { create(:project_member, :reporter, user: user2, project: project) }
   let(:commit) { create(:ci_commit, project: project)}
   let(:build) { create(:ci_build, commit: commit) }
 
diff --git a/spec/requests/api/commit_status_spec.rb b/spec/requests/api/commit_status_spec.rb
index 8017ed97d88..429a24109fd 100644
--- a/spec/requests/api/commit_status_spec.rb
+++ b/spec/requests/api/commit_status_spec.rb
@@ -6,9 +6,9 @@ describe API::CommitStatus, api: true do
   let!(:project) { create(:project) }
   let(:commit) { project.repository.commit }
   let(:commit_status) { create(:commit_status, commit: ci_commit) }
-  let(:guest) { create_user(ProjectMember::GUEST) }
-  let(:reporter) { create_user(ProjectMember::REPORTER) }
-  let(:developer) { create_user(ProjectMember::DEVELOPER) }
+  let(:guest) { create_user(:guest) }
+  let(:reporter) { create_user(:reporter) }
+  let(:developer) { create_user(:developer) }
   let(:sha) { commit.id }
 
 
@@ -201,9 +201,9 @@ describe API::CommitStatus, api: true do
     end
   end
 
-  def create_user(access_level)
+  def create_user(access_level_trait)
     user = create(:user)
-    create(:project_member, user: user, project: project, access_level: access_level)
+    create(:project_member, access_level_trait, user: user, project: project)
     user
   end
 end
diff --git a/spec/requests/api/commits_spec.rb b/spec/requests/api/commits_spec.rb
index 49acc3368f4..7ff21175c1b 100644
--- a/spec/requests/api/commits_spec.rb
+++ b/spec/requests/api/commits_spec.rb
@@ -6,8 +6,8 @@ describe API::API, api: true  do
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:guest) { create(:project_member, :guest, user: user2, project: project) }
   let!(:note) { create(:note_on_commit, author: user, project: project, commit_id: project.repository.commit.id, note: 'a comment on a commit') }
   let!(:another_note) { create(:note_on_commit, author: user, project: project, commit_id: project.repository.commit.id, note: 'another comment on a commit') }
 
diff --git a/spec/requests/api/fork_spec.rb b/spec/requests/api/fork_spec.rb
index 3fe7efff5ba..fa94e03ec32 100644
--- a/spec/requests/api/fork_spec.rb
+++ b/spec/requests/api/fork_spec.rb
@@ -12,7 +12,7 @@ describe API::API, api: true  do
   end
 
   let(:project_user2) do
-    create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST)
+    create(:project_member, :guest, user: user2, project: project)
   end
 
   describe 'POST /projects/fork/:id' do
diff --git a/spec/requests/api/project_members_spec.rb b/spec/requests/api/project_members_spec.rb
index 6358f6a2a4a..4301588b16a 100644
--- a/spec/requests/api/project_members_spec.rb
+++ b/spec/requests/api/project_members_spec.rb
@@ -6,8 +6,8 @@ describe API::API, api: true  do
   let(:user2) { create(:user) }
   let(:user3) { create(:user) }
   let(:project) { create(:project, creator_id: user.id, namespace: user.namespace) }
-  let(:project_member) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let(:project_member2) { create(:project_member, user: user3, project: project, access_level: ProjectMember::DEVELOPER) }
+  let(:project_member) { create(:project_member, :master, user: user, project: project) }
+  let(:project_member2) { create(:project_member, :developer, user: user3, project: project) }
 
   describe "GET /projects/:id/members" do
     before { project_member }
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 2a310f3834d..9f2365a4832 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -12,8 +12,8 @@ describe API::API, api: true  do
   let(:project2) { create(:project, path: 'project2', creator_id: user.id, namespace: user.namespace) }
   let(:project3) { create(:project, path: 'project3', creator_id: user.id, namespace: user.namespace) }
   let(:snippet) { create(:project_snippet, author: user, project: project, title: 'example') }
-  let(:project_member) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let(:project_member2) { create(:project_member, user: user3, project: project, access_level: ProjectMember::DEVELOPER) }
+  let(:project_member) { create(:project_member, :master, user: user, project: project) }
+  let(:project_member2) { create(:project_member, :developer, user: user3, project: project) }
   let(:user4) { create(:user) }
   let(:project3) do
     create(:project,
diff --git a/spec/requests/api/repositories_spec.rb b/spec/requests/api/repositories_spec.rb
index 0ae63b0afec..7cf4a01d76b 100644
--- a/spec/requests/api/repositories_spec.rb
+++ b/spec/requests/api/repositories_spec.rb
@@ -9,8 +9,8 @@ describe API::API, api: true  do
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:guest) { create(:project_member, :guest, user: user2, project: project) }
 
   describe "GET /projects/:id/repository/tree" do
     context "authorized user" do
diff --git a/spec/requests/api/runners_spec.rb b/spec/requests/api/runners_spec.rb
index 78484747d6a..3af61d4b335 100644
--- a/spec/requests/api/runners_spec.rb
+++ b/spec/requests/api/runners_spec.rb
@@ -28,9 +28,9 @@ describe API::Runners, api: true  do
 
   before do
     # Set project access for users
-    create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER)
-    create(:project_member, user: user, project: project2, access_level: ProjectMember::MASTER)
-    create(:project_member, user: user2, project: project, access_level: ProjectMember::REPORTER)
+    create(:project_member, :master, user: user, project: project)
+    create(:project_member, :master, user: user, project: project2)
+    create(:project_member, :reporter, user: user2, project: project)
   end
 
   describe 'GET /runners' do
diff --git a/spec/requests/api/tags_spec.rb b/spec/requests/api/tags_spec.rb
index f966e38cd3e..a15be07ed57 100644
--- a/spec/requests/api/tags_spec.rb
+++ b/spec/requests/api/tags_spec.rb
@@ -8,8 +8,8 @@ describe API::API, api: true  do
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:guest) { create(:project_member, user: user2, project: project, access_level: ProjectMember::GUEST) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:guest) { create(:project_member, :guest, user: user2, project: project) }
 
   describe "GET /projects/:id/repository/tags" do
     let(:tag_name) { project.repository.tag_names.sort.reverse.first }
diff --git a/spec/requests/api/triggers_spec.rb b/spec/requests/api/triggers_spec.rb
index 2a86b60bc4d..0510b77a39b 100644
--- a/spec/requests/api/triggers_spec.rb
+++ b/spec/requests/api/triggers_spec.rb
@@ -8,8 +8,8 @@ describe API::API do
   let!(:trigger_token) { 'secure_token' }
   let!(:trigger_token_2) { 'secure_token_2' }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:developer) { create(:project_member, user: user2, project: project, access_level: ProjectMember::DEVELOPER) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:developer) { create(:project_member, :developer, user: user2, project: project) }
   let!(:trigger) { create(:ci_trigger, project: project, token: trigger_token) }
   let!(:trigger2) { create(:ci_trigger, project: project, token: trigger_token_2) }
   let!(:trigger_request) { create(:ci_trigger_request, trigger: trigger, created_at: '2015-01-01 12:13:14') }
diff --git a/spec/requests/api/variables_spec.rb b/spec/requests/api/variables_spec.rb
index 9744729ba0c..b1e1053d037 100644
--- a/spec/requests/api/variables_spec.rb
+++ b/spec/requests/api/variables_spec.rb
@@ -6,8 +6,8 @@ describe API::API, api: true do
   let(:user) { create(:user) }
   let(:user2) { create(:user) }
   let!(:project) { create(:project, creator_id: user.id) }
-  let!(:master) { create(:project_member, user: user, project: project, access_level: ProjectMember::MASTER) }
-  let!(:developer) { create(:project_member, user: user2, project: project, access_level: ProjectMember::DEVELOPER) }
+  let!(:master) { create(:project_member, :master, user: user, project: project) }
+  let!(:developer) { create(:project_member, :developer, user: user2, project: project) }
   let!(:variable) { create(:ci_variable, project: project) }
 
   describe 'GET /projects/:id/variables' do
-- 
2.30.9