From ef688d8408d84a7a2ec9e061e1aaae179b0c13bf Mon Sep 17 00:00:00 2001
From: charlie ablett <cablett@gitlab.com>
Date: Tue, 25 Jan 2022 12:57:47 +1300
Subject: [PATCH] Replace owner with first_owner in various specs

---
 spec/serializers/build_details_entity_spec.rb    |  2 +-
 .../ci/lint/result_serializer_spec.rb            |  4 ++--
 spec/serializers/diff_file_base_entity_spec.rb   |  2 +-
 spec/serializers/runner_entity_spec.rb           |  2 +-
 spec/serializers/trigger_variable_entity_spec.rb |  2 +-
 spec/support/helpers/repo_helpers.rb             |  2 +-
 .../graphql/requests/packages_shared_context.rb  |  2 +-
 .../creatable_merge_request_shared_examples.rb   |  2 +-
 .../menus/zentao_menu_shared_examples.rb         |  2 +-
 .../update_project_statistics_shared_examples.rb |  4 ++--
 .../requests/api/notes_shared_examples.rb        |  2 +-
 spec/tasks/gitlab/backup_rake_spec.rb            |  4 ++--
 .../nav/sidebar/_project.html.haml_spec.rb       |  2 +-
 .../create_pipeline_worker_spec.rb               |  2 +-
 .../cleanup_container_repository_worker_spec.rb  |  2 +-
 .../delete_container_repository_worker_spec.rb   |  2 +-
 .../delete_merged_branches_worker_spec.rb        |  4 ++--
 spec/workers/post_receive_spec.rb                | 16 ++++++++--------
 spec/workers/project_destroy_worker_spec.rb      |  4 ++--
 19 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/spec/serializers/build_details_entity_spec.rb b/spec/serializers/build_details_entity_spec.rb
index a24841fe286b..da2734feb51f 100644
--- a/spec/serializers/build_details_entity_spec.rb
+++ b/spec/serializers/build_details_entity_spec.rb
@@ -11,7 +11,7 @@
 
   describe '#as_json' do
     let(:project) { create(:project, :repository) }
-    let(:user) { project.owner }
+    let(:user) { project.first_owner }
     let(:pipeline) { create(:ci_pipeline, project: project) }
     let(:build) { create(:ci_build, :failed, pipeline: pipeline) }
     let(:request) { double('request', project: project) }
diff --git a/spec/serializers/ci/lint/result_serializer_spec.rb b/spec/serializers/ci/lint/result_serializer_spec.rb
index a834ea05e143..3fdaba1808a7 100644
--- a/spec/serializers/ci/lint/result_serializer_spec.rb
+++ b/spec/serializers/ci/lint/result_serializer_spec.rb
@@ -7,7 +7,7 @@
 
   let(:result) do
     Gitlab::Ci::Lint
-      .new(project: project, current_user: project.owner)
+      .new(project: project, current_user: project.first_owner)
       .validate(yaml_content, dry_run: false)
   end
 
@@ -64,7 +64,7 @@
     context 'when dry run is enabled' do
       let(:result) do
         Gitlab::Ci::Lint
-          .new(project: project, current_user: project.owner)
+          .new(project: project, current_user: project.first_owner)
           .validate(yaml_content, dry_run: true)
       end
 
diff --git a/spec/serializers/diff_file_base_entity_spec.rb b/spec/serializers/diff_file_base_entity_spec.rb
index 99dbaff4b7e2..11ceb7991d77 100644
--- a/spec/serializers/diff_file_base_entity_spec.rb
+++ b/spec/serializers/diff_file_base_entity_spec.rb
@@ -142,7 +142,7 @@
     end
 
     context 'when source_project and target_project are different' do
-      let(:target_project) { fork_project(source_project, source_project.owner, repository: true) }
+      let(:target_project) { fork_project(source_project, source_project.first_owner, repository: true) }
 
       it 'returns the merge_request ide route with the target_project as param' do
         expect(entity[:ide_edit_path]).to eq("#{expected_merge_request_path}?target_project=#{ERB::Util.url_encode(target_project.full_path)}")
diff --git a/spec/serializers/runner_entity_spec.rb b/spec/serializers/runner_entity_spec.rb
index 39cac65c5ac3..f34cb7948344 100644
--- a/spec/serializers/runner_entity_spec.rb
+++ b/spec/serializers/runner_entity_spec.rb
@@ -7,7 +7,7 @@
   let(:runner) { create(:ci_runner, :project, projects: [project]) }
   let(:entity) { described_class.new(runner, request: request, current_user: user) }
   let(:request) { double('request') }
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
 
   before do
     allow(request).to receive(:current_user).and_return(user)
diff --git a/spec/serializers/trigger_variable_entity_spec.rb b/spec/serializers/trigger_variable_entity_spec.rb
index e90bfc24f9f1..deabbb9d54b6 100644
--- a/spec/serializers/trigger_variable_entity_spec.rb
+++ b/spec/serializers/trigger_variable_entity_spec.rb
@@ -31,7 +31,7 @@
     end
 
     context 'when user is owner' do
-      let(:user) { project.owner }
+      let(:user) { project.first_owner }
 
       it 'exposes the variable value' do
         expect(subject).to include(:value)
diff --git a/spec/support/helpers/repo_helpers.rb b/spec/support/helpers/repo_helpers.rb
index bbba58d60d6d..f275be39dc40 100644
--- a/spec/support/helpers/repo_helpers.rb
+++ b/spec/support/helpers/repo_helpers.rb
@@ -129,7 +129,7 @@ def create_file_in_repo(
         commit_message: 'Add new content')
     Files::CreateService.new(
       project,
-      project.owner,
+      project.first_owner,
       commit_message: commit_message,
       start_branch: start_branch,
       branch_name: branch_name,
diff --git a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb
index 9ac3d4a04f9e..13e7ecf26698 100644
--- a/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb
+++ b/spec/support/shared_contexts/graphql/requests/packages_shared_context.rb
@@ -11,7 +11,7 @@
   let(:package_files) { all_graphql_fields_for('PackageFile') }
   let(:dependency_links) { all_graphql_fields_for('PackageDependencyLink') }
   let(:pipelines) { all_graphql_fields_for('Pipeline', max_depth: 1) }
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
   let(:package_details) { graphql_data_at(:package) }
   let(:metadata_response) { graphql_data_at(:package, :metadata) }
   let(:first_file) { package.package_files.find { |f| global_id_of(f) == first_file_response['id'] } }
diff --git a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
index 1c816ee4b0ae..456175e7113d 100644
--- a/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
+++ b/spec/support/shared_examples/features/creatable_merge_request_shared_examples.rb
@@ -62,7 +62,7 @@
   end
 
   it 'updates the branches when selecting a new target project', :js do
-    target_project_member = target_project.owner
+    target_project_member = target_project.first_owner
     ::Branches::CreateService.new(target_project, target_project_member)
       .execute('a-brand-new-branch-to-test', 'master')
 
diff --git a/spec/support/shared_examples/lib/sidebars/projects/menus/zentao_menu_shared_examples.rb b/spec/support/shared_examples/lib/sidebars/projects/menus/zentao_menu_shared_examples.rb
index d3fd28727b59..b4c438771ce5 100644
--- a/spec/support/shared_examples/lib/sidebars/projects/menus/zentao_menu_shared_examples.rb
+++ b/spec/support/shared_examples/lib/sidebars/projects/menus/zentao_menu_shared_examples.rb
@@ -4,7 +4,7 @@
 
 RSpec.shared_examples 'ZenTao menu with CE version' do
   let(:project) { create(:project, has_external_issue_tracker: true) }
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
   let(:context) { Sidebars::Projects::Context.new(current_user: user, container: project) }
   let(:zentao_integration) { create(:zentao_integration, project: project) }
 
diff --git a/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb b/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb
index 06326ffac97a..ad0bbc0aeff9 100644
--- a/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb
+++ b/spec/support/shared_examples/models/update_project_statistics_shared_examples.rb
@@ -115,14 +115,14 @@ def expect_flush_counter_increments_worker_performed
             expect(ProjectStatistics)
               .not_to receive(:increment_statistic)
 
-            expect(Projects::DestroyService.new(project, project.owner).execute).to eq(true)
+            expect(Projects::DestroyService.new(project, project.first_owner).execute).to eq(true)
           end
 
           it 'does not schedule a namespace statistics worker' do
             expect(Namespaces::ScheduleAggregationWorker)
               .not_to receive(:perform_async)
 
-            expect(Projects::DestroyService.new(project, project.owner).execute).to eq(true)
+            expect(Projects::DestroyService.new(project, project.first_owner).execute).to eq(true)
           end
         end
       end
diff --git a/spec/support/shared_examples/requests/api/notes_shared_examples.rb b/spec/support/shared_examples/requests/api/notes_shared_examples.rb
index 0434d0beb7e1..2a157f6e8557 100644
--- a/spec/support/shared_examples/requests/api/notes_shared_examples.rb
+++ b/spec/support/shared_examples/requests/api/notes_shared_examples.rb
@@ -190,7 +190,7 @@
 
       if parent_type == 'projects'
         context 'by a project owner' do
-          let(:user) { project.owner }
+          let(:user) { project.first_owner }
 
           it 'sets the creation time on the new note' do
             post api("/#{parent_type}/#{parent.id}/#{noteable_type}/#{noteable[id_name]}/notes", user), params: params
diff --git a/spec/tasks/gitlab/backup_rake_spec.rb b/spec/tasks/gitlab/backup_rake_spec.rb
index c5e73aa3b45b..92843f48b8b5 100644
--- a/spec/tasks/gitlab/backup_rake_spec.rb
+++ b/spec/tasks/gitlab/backup_rake_spec.rb
@@ -344,9 +344,9 @@ def reenable_backup_sub_tasks
       shared_examples 'includes repositories in all repository storages' do
         specify :aggregate_failures do
           project_a = create(:project, :repository)
-          project_snippet_a = create(:project_snippet, :repository, project: project_a, author: project_a.owner)
+          project_snippet_a = create(:project_snippet, :repository, project: project_a, author: project_a.first_owner)
           project_b = create(:project, :repository, repository_storage: second_storage_name)
-          project_snippet_b = create(:project_snippet, :repository, project: project_b, author: project_b.owner)
+          project_snippet_b = create(:project_snippet, :repository, project: project_b, author: project_b.first_owner)
           project_snippet_b.snippet_repository.update!(shard: project_b.project_repository.shard)
           create(:wiki_page, container: project_a)
           create(:design, :with_file, issue: create(:issue, project: project_a))
diff --git a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
index 869defbb3310..22e925e22ae5 100644
--- a/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
+++ b/spec/views/layouts/nav/sidebar/_project.html.haml_spec.rb
@@ -5,7 +5,7 @@
 RSpec.describe 'layouts/nav/sidebar/_project' do
   let_it_be_with_reload(:project) { create(:project, :repository) }
 
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
   let(:current_ref) { 'master' }
 
   before do
diff --git a/spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb b/spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb
index 116a0e4d0352..a637ac088ff8 100644
--- a/spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb
+++ b/spec/workers/ci/external_pull_requests/create_pipeline_worker_spec.rb
@@ -4,7 +4,7 @@
 
 RSpec.describe Ci::ExternalPullRequests::CreatePipelineWorker do
   let_it_be(:project) { create(:project, :auto_devops, :repository) }
-  let_it_be(:user) { project.owner }
+  let_it_be(:user) { project.first_owner }
   let_it_be(:external_pull_request) do
     branch = project.repository.branches.last
     create(:external_pull_request, project: project, source_branch: branch.name, source_sha: branch.target)
diff --git a/spec/workers/cleanup_container_repository_worker_spec.rb b/spec/workers/cleanup_container_repository_worker_spec.rb
index 6ae4308bd46d..6723ea2049d7 100644
--- a/spec/workers/cleanup_container_repository_worker_spec.rb
+++ b/spec/workers/cleanup_container_repository_worker_spec.rb
@@ -5,7 +5,7 @@
 RSpec.describe CleanupContainerRepositoryWorker, :clean_gitlab_redis_shared_state do
   let(:repository) { create(:container_repository) }
   let(:project) { repository.project }
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
 
   subject { described_class.new }
 
diff --git a/spec/workers/delete_container_repository_worker_spec.rb b/spec/workers/delete_container_repository_worker_spec.rb
index b8363a2f81a0..ec040eab2d42 100644
--- a/spec/workers/delete_container_repository_worker_spec.rb
+++ b/spec/workers/delete_container_repository_worker_spec.rb
@@ -5,7 +5,7 @@
 RSpec.describe DeleteContainerRepositoryWorker do
   let(:registry) { create(:container_repository) }
   let(:project) { registry.project }
-  let(:user) { project.owner }
+  let(:user) { project.first_owner }
 
   subject { described_class.new }
 
diff --git a/spec/workers/delete_merged_branches_worker_spec.rb b/spec/workers/delete_merged_branches_worker_spec.rb
index 861ca111b923..056fcb1200d5 100644
--- a/spec/workers/delete_merged_branches_worker_spec.rb
+++ b/spec/workers/delete_merged_branches_worker_spec.rb
@@ -13,11 +13,11 @@
         expect(instance).to receive(:execute).and_return(true)
       end
 
-      worker.perform(project.id, project.owner.id)
+      worker.perform(project.id, project.first_owner.id)
     end
 
     it "returns false when project was not found" do
-      expect(worker.perform('unknown', project.owner.id)).to be_falsy
+      expect(worker.perform('unknown', project.first_owner.id)).to be_falsy
     end
   end
 end
diff --git a/spec/workers/post_receive_spec.rb b/spec/workers/post_receive_spec.rb
index 42e39c51a889..9b33e559c718 100644
--- a/spec/workers/post_receive_spec.rb
+++ b/spec/workers/post_receive_spec.rb
@@ -15,7 +15,7 @@
   let(:wrongly_encoded_changes) { changes.encode("ISO-8859-1").force_encoding("UTF-8") }
   let(:base64_changes) { Base64.encode64(wrongly_encoded_changes) }
   let(:gl_repository) { "project-#{project.id}" }
-  let(:key) { create(:key, user: project.owner) }
+  let(:key) { create(:key, user: project.first_owner) }
   let!(:key_id) { key.shell_id }
 
   let(:project) do
@@ -47,7 +47,7 @@ def perform(changes: base64_changes)
 
     context 'with PersonalSnippet' do
       let(:gl_repository) { "snippet-#{snippet.id}" }
-      let(:snippet) { create(:personal_snippet, author: project.owner) }
+      let(:snippet) { create(:personal_snippet, author: project.first_owner) }
 
       it 'does not log an error' do
         expect(Gitlab::GitLogger).not_to receive(:error)
@@ -60,7 +60,7 @@ def perform(changes: base64_changes)
 
     context 'with ProjectSnippet' do
       let(:gl_repository) { "snippet-#{snippet.id}" }
-      let(:snippet) { create(:snippet, type: 'ProjectSnippet', project: nil, author: project.owner) }
+      let(:snippet) { create(:snippet, type: 'ProjectSnippet', project: nil, author: project.first_owner) }
 
       it 'returns false and logs an error' do
         expect(Gitlab::GitLogger).to receive(:error).with("POST-RECEIVE: #{error_message}")
@@ -74,7 +74,7 @@ def perform(changes: base64_changes)
       let(:empty_project) { create(:project, :empty_repo) }
 
       before do
-        allow_next(Gitlab::GitPostReceive).to receive(:identify).and_return(empty_project.owner)
+        allow_next(Gitlab::GitPostReceive).to receive(:identify).and_return(empty_project.first_owner)
         # Need to mock here so we can expect calls on project
         allow(Gitlab::GlRepository).to receive(:parse).and_return([empty_project, empty_project, Gitlab::GlRepository::PROJECT])
       end
@@ -128,7 +128,7 @@ def perform(changes: base64_changes)
       let(:push_service) { double(execute: true) }
 
       before do
-        allow_next(Gitlab::GitPostReceive).to receive(:identify).and_return(project.owner)
+        allow_next(Gitlab::GitPostReceive).to receive(:identify).and_return(project.first_owner)
         allow(Gitlab::GlRepository).to receive(:parse).and_return([project, project, Gitlab::GlRepository::PROJECT])
       end
 
@@ -381,7 +381,7 @@ def perform(changes: base64_changes)
       allow(Project).to receive(:find_by).and_return(project)
       expect_next(MergeRequests::PushedBranchesService).to receive(:execute).and_return(%w(tést))
 
-      expect(UpdateMergeRequestsWorker).to receive(:perform_async).with(project.id, project.owner.id, any_args)
+      expect(UpdateMergeRequestsWorker).to receive(:perform_async).with(project.id, project.first_owner.id, any_args)
 
       perform
     end
@@ -461,13 +461,13 @@ def perform(changes: base64_changes)
     end
 
     context 'with PersonalSnippet' do
-      let!(:snippet) { create(:personal_snippet, :repository, author: project.owner) }
+      let!(:snippet) { create(:personal_snippet, :repository, author: project.first_owner) }
 
       it_behaves_like 'snippet changes actions'
     end
 
     context 'with ProjectSnippet' do
-      let!(:snippet) { create(:project_snippet, :repository, project: project, author: project.owner) }
+      let!(:snippet) { create(:project_snippet, :repository, project: project, author: project.first_owner) }
 
       it_behaves_like 'snippet changes actions'
     end
diff --git a/spec/workers/project_destroy_worker_spec.rb b/spec/workers/project_destroy_worker_spec.rb
index 00a4ddac29f5..0b0543a50893 100644
--- a/spec/workers/project_destroy_worker_spec.rb
+++ b/spec/workers/project_destroy_worker_spec.rb
@@ -14,7 +14,7 @@
 
   describe '#perform' do
     it 'deletes the project' do
-      subject.perform(project.id, project.owner.id, {})
+      subject.perform(project.id, project.first_owner.id, {})
 
       expect(Project.all).not_to include(project)
       expect(Dir.exist?(path)).to be_falsey
@@ -22,7 +22,7 @@
 
     it 'does not raise error when project could not be found' do
       expect do
-        subject.perform(-1, project.owner.id, {})
+        subject.perform(-1, project.first_owner.id, {})
       end.not_to raise_error
     end
 
-- 
GitLab