From 3f16c59c71eb4a5187fa75faa6854349d12eaf62 Mon Sep 17 00:00:00 2001
From: charlie ablett <cablett@gitlab.com>
Date: Mon, 24 Jan 2022 17:07:32 +1300
Subject: [PATCH] Replace owner with first_owner in mailer/model specs

---
 spec/mailers/notify_spec.rb              |  2 +-
 spec/models/ability_spec.rb              |  2 +-
 spec/models/ci/build_trace_chunk_spec.rb |  2 +-
 spec/models/ci/pipeline_spec.rb          |  4 ++--
 spec/models/ci/trigger_spec.rb           |  2 +-
 spec/models/commit_spec.rb               |  2 +-
 spec/models/environment_status_spec.rb   |  2 +-
 spec/models/event_spec.rb                | 20 ++++++++++----------
 spec/models/group_spec.rb                |  2 +-
 spec/models/issue_collection_spec.rb     |  4 +++-
 spec/models/issue_spec.rb                |  2 ++
 spec/models/note_spec.rb                 |  2 +-
 spec/models/project_spec.rb              |  4 +++-
 spec/models/project_team_spec.rb         |  8 +++++---
 14 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb
index 0fbdc09a20665..978118ed1b17a 100644
--- a/spec/mailers/notify_spec.rb
+++ b/spec/mailers/notify_spec.rb
@@ -714,7 +714,7 @@ def id
     describe 'project access requested' do
       let(:project) do
         create(:project, :public) do |project|
-          project.add_maintainer(project.owner)
+          project.add_maintainer(project.first_owner)
         end
       end
 
diff --git a/spec/models/ability_spec.rb b/spec/models/ability_spec.rb
index bb8d476f257e5..5bd69ad9fad15 100644
--- a/spec/models/ability_spec.rb
+++ b/spec/models/ability_spec.rb
@@ -394,7 +394,7 @@ def users_for_snippet(snippet)
   describe '.project_disabled_features_rules' do
     let(:project) { create(:project, :wiki_disabled) }
 
-    subject { described_class.policy_for(project.owner, project) }
+    subject { described_class.policy_for(project.first_owner, project) }
 
     context 'wiki named abilities' do
       it 'disables wiki abilities if the project has no wiki' do
diff --git a/spec/models/ci/build_trace_chunk_spec.rb b/spec/models/ci/build_trace_chunk_spec.rb
index 31c7c7a44bc73..e08fe196d6543 100644
--- a/spec/models/ci/build_trace_chunk_spec.rb
+++ b/spec/models/ci/build_trace_chunk_spec.rb
@@ -851,7 +851,7 @@ def lock_chunk(&block)
 
     context 'when project is destroyed' do
       let(:subject) do
-        Projects::DestroyService.new(project, project.owner).execute
+        Projects::DestroyService.new(project, project.first_owner).execute
       end
 
       it_behaves_like 'deletes all build_trace_chunk and data in redis'
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 90f56c1e0a4ad..67f632c3adfa6 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -3384,7 +3384,7 @@ def create_pipeline(status, ref, sha)
       create(:ci_pipeline,
              project: project,
              sha: project.commit('master').sha,
-             user: project.owner)
+             user: project.first_owner)
     end
 
     before do
@@ -4459,7 +4459,7 @@ def create_pipeline(status, ref, sha)
   describe '#reset_source_bridge!' do
     let(:pipeline) { create(:ci_pipeline, :created, project: project) }
 
-    subject(:reset_bridge) { pipeline.reset_source_bridge!(project.owner) }
+    subject(:reset_bridge) { pipeline.reset_source_bridge!(project.first_owner) }
 
     context 'when the pipeline is a child pipeline and the bridge is depended' do
       let!(:parent_pipeline) { create(:ci_pipeline) }
diff --git a/spec/models/ci/trigger_spec.rb b/spec/models/ci/trigger_spec.rb
index b9f7e44f3e84a..3b731e1264b27 100644
--- a/spec/models/ci/trigger_spec.rb
+++ b/spec/models/ci/trigger_spec.rb
@@ -59,7 +59,7 @@
   end
 
   it_behaves_like 'includes Limitable concern' do
-    subject { build(:ci_trigger, owner: project.owner, project: project) }
+    subject { build(:ci_trigger, owner: project.first_owner, project: project) }
   end
 
   context 'loose foreign key on ci_triggers.owner_id' do
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index 2176eea75bc3e..4d3a2fac0fcf3 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -486,7 +486,7 @@
     it 'uses the CachedMarkdownField cache instead of the Mentionable cache', :use_clean_rails_redis_caching do
       expect(commit.title_html).not_to be_present
 
-      commit.all_references(project.owner).all
+      commit.all_references(project.first_owner).all
 
       expect(commit.title_html).to be_present
       expect(Rails.cache.read("banzai/commit:#{commit.id}/safe_message/single_line")).to be_nil
diff --git a/spec/models/environment_status_spec.rb b/spec/models/environment_status_spec.rb
index 1b9b38a09324b..1db1171401ccb 100644
--- a/spec/models/environment_status_spec.rb
+++ b/spec/models/environment_status_spec.rb
@@ -161,7 +161,7 @@
 
     let!(:build) { create(:ci_build, :with_deployment, :deploy_to_production, pipeline: pipeline) }
     let(:environment) { build.deployment.environment }
-    let(:user) { project.owner }
+    let(:user) { project.first_owner }
 
     context 'when environment is created on a forked project', :sidekiq_inline do
       let(:project) { create(:project, :repository) }
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
index 9119ef83034c8..f099015e63e82 100644
--- a/spec/models/event_spec.rb
+++ b/spec/models/event_spec.rb
@@ -25,7 +25,7 @@
           expect(instance).to receive(:reset_project_activity)
         end
 
-        create_push_event(project, project.owner)
+        create_push_event(project, project.first_owner)
       end
     end
 
@@ -34,7 +34,7 @@
         it 'updates the project last_repository_updated_at and updated_at' do
           project.touch(:last_repository_updated_at, time: 1.year.ago) # rubocop: disable Rails/SkipsModelValidations
 
-          event = create_push_event(project, project.owner)
+          event = create_push_event(project, project.first_owner)
 
           project.reload
 
@@ -47,7 +47,7 @@
         it 'does not update the project last_repository_updated_at' do
           project.update!(last_repository_updated_at: 1.year.ago)
 
-          create(:closed_issue_event, project: project, author: project.owner)
+          create(:closed_issue_event, project: project, author: project.first_owner)
 
           project.reload
 
@@ -63,14 +63,14 @@
         project.reload # a reload removes fractions of seconds
 
         expect do
-          create_push_event(project, project.owner)
+          create_push_event(project, project.first_owner)
           project.reload
         end.not_to change { project.last_repository_updated_at }
       end
     end
 
     describe 'after_create UserInteractedProject.track' do
-      let(:event) { build(:push_event, project: project, author: project.owner) }
+      let(:event) { build(:push_event, project: project, author: project.first_owner) }
 
       it 'passes event to UserInteractedProject.track' do
         expect(UserInteractedProject).to receive(:track).with(event)
@@ -157,7 +157,7 @@
 
   describe "Push event" do
     let(:project) { create(:project, :private) }
-    let(:user) { project.owner }
+    let(:user) { project.first_owner }
     let(:event) { create_push_event(project, user) }
 
     it do
@@ -173,7 +173,7 @@
   describe '#target_title' do
     let_it_be(:project) { create(:project) }
 
-    let(:author) { project.owner }
+    let(:author) { project.first_owner }
     let(:target) { nil }
 
     let(:event) do
@@ -746,7 +746,7 @@ def visible_to_all_except(*roles)
 
         target = kind == :project ? nil : build(kind, **extra_data)
 
-        [kind, build(:event, :created, author: project.owner, project: project, target: target)]
+        [kind, build(:event, :created, author: project.first_owner, project: project, target: target)]
       end
     end
 
@@ -830,7 +830,7 @@ def visible_to_all_except(*roles)
         expect(project).not_to receive(:update_column)
           .with(:last_activity_at, a_kind_of(Time))
 
-        create_push_event(project, project.owner)
+        create_push_event(project, project.first_owner)
       end
     end
 
@@ -838,7 +838,7 @@ def visible_to_all_except(*roles)
       it 'updates the project' do
         project.touch(:last_activity_at, time: 1.year.ago) # rubocop: disable Rails/SkipsModelValidations
 
-        event = create_push_event(project, project.owner)
+        event = create_push_event(project, project.first_owner)
 
         project.reload
 
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb
index 05ee21662453d..4bc4df02c249e 100644
--- a/spec/models/group_spec.rb
+++ b/spec/models/group_spec.rb
@@ -1249,7 +1249,7 @@ def setup_group_members(group)
         let(:common_id) { [Project.maximum(:id).to_i, Namespace.maximum(:id).to_i].max + 999 }
         let!(:group) { create(:group, id: common_id) }
         let!(:unrelated_project) { create(:project, id: common_id) }
-        let(:user) { unrelated_project.owner }
+        let(:user) { unrelated_project.first_owner }
 
         it 'returns correct access level' do
           expect(shared_group_parent.max_member_access_for_user(user)).to eq(Gitlab::Access::NO_ACCESS)
diff --git a/spec/models/issue_collection_spec.rb b/spec/models/issue_collection_spec.rb
index d67bd8debceae..183082bab2629 100644
--- a/spec/models/issue_collection_spec.rb
+++ b/spec/models/issue_collection_spec.rb
@@ -50,7 +50,9 @@
       end
     end
 
-    context 'using a user that is the owner of a project' do
+    # TODO update when we have multiple owners of a project
+    # https://gitlab.com/gitlab-org/gitlab/-/issues/350605
+    context 'using a user that is an owner of a project' do
       it 'returns the issues of the project' do
         expect(collection.updatable_by_user(project.namespace.owner))
           .to eq([issue1, issue2])
diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb
index c105f6c3439c4..a3f43064f95bb 100644
--- a/spec/models/issue_spec.rb
+++ b/spec/models/issue_spec.rb
@@ -887,6 +887,8 @@
         end
       end
 
+      # TODO update when we have multiple owners of a project
+      # https://gitlab.com/gitlab-org/gitlab/-/issues/350605
       context 'with an owner' do
         before do
           project.add_maintainer(user)
diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb
index 9d9cca0678a57..f7d32dc1a7b96 100644
--- a/spec/models/note_spec.rb
+++ b/spec/models/note_spec.rb
@@ -617,7 +617,7 @@ def retrieve_participants
       let(:note) do
         create :note,
           noteable: ext_issue, project: ext_proj,
-          note: "mentioned in #{ext_proj.owner.to_reference}",
+          note: "mentioned in #{ext_proj.first_owner.to_reference}",
           system: true
       end
 
diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb
index 0d1ab22c520b3..d78d0a56f1047 100644
--- a/spec/models/project_spec.rb
+++ b/spec/models/project_spec.rb
@@ -871,6 +871,8 @@
   end
 
   describe 'reference methods' do
+    # TODO update when we have multiple owners of a project
+    # https://gitlab.com/gitlab-org/gitlab/-/issues/350605
     let_it_be(:owner)     { create(:user, name: 'Gitlab') }
     let_it_be(:namespace) { create(:namespace, name: 'Sample namespace', path: 'sample-namespace', owner: owner) }
     let_it_be(:project)   { create(:project, name: 'Sample project', path: 'sample-project', namespace: namespace) }
@@ -2874,7 +2876,7 @@ def has_external_wiki
       end
 
       before do
-        project.repository.rm_branch(project.owner, branch.name)
+        project.repository.rm_branch(project.first_owner, branch.name)
       end
 
       subject { project.latest_pipeline(branch.name) }
diff --git a/spec/models/project_team_spec.rb b/spec/models/project_team_spec.rb
index d5af2d8090634..bfdebbc33df00 100644
--- a/spec/models/project_team_spec.rb
+++ b/spec/models/project_team_spec.rb
@@ -80,7 +80,7 @@
   describe 'owner methods' do
     context 'personal project' do
       let(:project) { create(:project) }
-      let(:owner) { project.owner }
+      let(:owner) { project.first_owner }
 
       specify { expect(project.team.owners).to contain_exactly(owner) }
       specify { expect(project.team.owner?(owner)).to be_truthy }
@@ -108,10 +108,12 @@
       let(:project) { create(:project) }
 
       it 'returns project members' do
+        # TODO this can be updated when we have multiple project owners
+        # See https://gitlab.com/gitlab-org/gitlab/-/issues/350605
         user = create(:user)
         project.add_guest(user)
 
-        expect(project.team.members).to contain_exactly(user, project.owner)
+        expect(project.team.members).to contain_exactly(user, project.first_owner)
       end
 
       it 'returns project members of a specified level' do
@@ -129,7 +131,7 @@
                                     group_access: Gitlab::Access::GUEST)
 
         expect(project.team.members)
-          .to contain_exactly(group_member.user, project.owner)
+          .to contain_exactly(group_member.user, project.first_owner)
       end
 
       it 'returns invited members of a group of a specified level' do
-- 
GitLab