Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-16 21:18:33 +0300
commitf64a639bcfa1fc2bc89ca7db268f594306edfd7c (patch)
treea2c3c2ebcc3b45e596949db485d6ed18ffaacfa1 /spec/presenters
parentbfbc3e0d6583ea1a91f627528bedc3d65ba4b10f (diff)
Add latest changes from gitlab-org/gitlab@13-10-stable-eev13.10.0-rc40
Diffstat (limited to 'spec/presenters')
-rw-r--r--spec/presenters/ci/build_runner_presenter_spec.rb24
-rw-r--r--spec/presenters/packages/composer/packages_presenter_spec.rb7
-rw-r--r--spec/presenters/packages/detail/package_presenter_spec.rb5
-rw-r--r--spec/presenters/project_presenter_spec.rb115
-rw-r--r--spec/presenters/projects/import_export/project_export_presenter_spec.rb20
-rw-r--r--spec/presenters/snippet_presenter_spec.rb2
6 files changed, 163 insertions, 10 deletions
diff --git a/spec/presenters/ci/build_runner_presenter_spec.rb b/spec/presenters/ci/build_runner_presenter_spec.rb
index 43b677483ce..1eecc9d1ce6 100644
--- a/spec/presenters/ci/build_runner_presenter_spec.rb
+++ b/spec/presenters/ci/build_runner_presenter_spec.rb
@@ -271,4 +271,28 @@ RSpec.describe Ci::BuildRunnerPresenter do
end
end
end
+
+ describe '#variables' do
+ subject { presenter.variables }
+
+ let(:build) { create(:ci_build) }
+
+ it 'returns a Collection' do
+ is_expected.to be_an_instance_of(Gitlab::Ci::Variables::Collection)
+ end
+ end
+
+ describe '#runner_variables' do
+ subject { presenter.runner_variables }
+
+ let(:build) { create(:ci_build) }
+
+ it 'returns an array' do
+ is_expected.to be_an_instance_of(Array)
+ end
+
+ it 'returns the expected variables' do
+ is_expected.to eq(presenter.variables.to_runner_variables)
+ end
+ end
end
diff --git a/spec/presenters/packages/composer/packages_presenter_spec.rb b/spec/presenters/packages/composer/packages_presenter_spec.rb
index 19d99a62468..c4217b6e37c 100644
--- a/spec/presenters/packages/composer/packages_presenter_spec.rb
+++ b/spec/presenters/packages/composer/packages_presenter_spec.rb
@@ -67,10 +67,15 @@ RSpec.describe ::Packages::Composer::PackagesPresenter do
{
'packages' => [],
'provider-includes' => { 'p/%hash%.json' => { 'sha256' => /^\h+$/ } },
- 'providers-url' => "/api/v4/group/#{group.id}/-/packages/composer/%package%$%hash%.json"
+ 'providers-url' => "prefix/api/v4/group/#{group.id}/-/packages/composer/%package%$%hash%.json",
+ 'metadata-url' => "prefix/api/v4/group/#{group.id}/-/packages/composer/p2/%package%.json"
}
end
+ before do
+ stub_config(gitlab: { relative_url_root: 'prefix' })
+ end
+
it 'returns the provider json' do
expect(subject).to match(expected_json)
end
diff --git a/spec/presenters/packages/detail/package_presenter_spec.rb b/spec/presenters/packages/detail/package_presenter_spec.rb
index e38bbbe600c..5e20eed877f 100644
--- a/spec/presenters/packages/detail/package_presenter_spec.rb
+++ b/spec/presenters/packages/detail/package_presenter_spec.rb
@@ -16,7 +16,10 @@ RSpec.describe ::Packages::Detail::PackagePresenter do
created_at: file.created_at,
download_path: file.download_path,
file_name: file.file_name,
- size: file.size
+ size: file.size,
+ file_md5: file.file_md5,
+ file_sha1: file.file_sha1,
+ file_sha256: file.file_sha256
}
end
end
diff --git a/spec/presenters/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb
index 98bcbd8384b..a9a5ecb3299 100644
--- a/spec/presenters/project_presenter_spec.rb
+++ b/spec/presenters/project_presenter_spec.rb
@@ -183,6 +183,14 @@ RSpec.describe ProjectPresenter do
context 'not empty repo' do
let(:project) { create(:project, :repository) }
+ context 'if no current user' do
+ let(:user) { nil }
+
+ it 'returns false' do
+ expect(presenter.can_current_user_push_code?).to be(false)
+ end
+ end
+
it 'returns true if user can push to default branch' do
project.add_developer(user)
@@ -350,7 +358,7 @@ RSpec.describe ProjectPresenter do
is_link: false,
label: a_string_including("New file"),
link: presenter.project_new_blob_path(project, 'master'),
- class_modifier: 'dashed'
+ class_modifier: 'btn-dashed'
)
end
@@ -555,6 +563,51 @@ RSpec.describe ProjectPresenter do
end
end
end
+
+ describe '#upload_anchor_data' do
+ context 'with empty_repo_upload enabled' do
+ before do
+ stub_experiments(empty_repo_upload: :candidate)
+ end
+
+ context 'user can push to branch' do
+ before do
+ project.add_developer(user)
+ end
+
+ it 'returns upload_anchor_data' do
+ expect(presenter.upload_anchor_data).to have_attributes(
+ is_link: false,
+ label: a_string_including('Upload file'),
+ data: {
+ "can_push_code" => "true",
+ "original_branch" => "master",
+ "path" => "/#{project.full_path}/-/create/master",
+ "project_path" => project.path,
+ "target_branch" => "master"
+ }
+ )
+ end
+ end
+
+ context 'user cannot push to branch' do
+ it 'returns nil' do
+ expect(presenter.upload_anchor_data).to be_nil
+ end
+ end
+ end
+
+ context 'with empty_repo_upload disabled' do
+ before do
+ stub_experiments(empty_repo_upload: :control)
+ project.add_developer(user)
+ end
+
+ it 'returns nil' do
+ expect(presenter.upload_anchor_data).to be_nil
+ end
+ end
+ end
end
describe '#statistics_buttons' do
@@ -594,13 +647,47 @@ RSpec.describe ProjectPresenter do
end
end
+ describe 'experiment(:repo_integrations_link)' do
+ context 'when enabled' do
+ before do
+ stub_experiments(repo_integrations_link: :candidate)
+ end
+
+ it 'includes a button to configure integrations for maintainers' do
+ project.add_maintainer(user)
+
+ expect(empty_repo_statistics_buttons.map(&:label)).to include(
+ a_string_including('Configure Integration')
+ )
+ end
+
+ it 'does not include a button if not a maintainer' do
+ expect(empty_repo_statistics_buttons.map(&:label)).not_to include(
+ a_string_including('Configure Integration')
+ )
+ end
+ end
+
+ context 'when disabled' do
+ it 'does not include a button' do
+ project.add_maintainer(user)
+
+ expect(empty_repo_statistics_buttons.map(&:label)).not_to include(
+ a_string_including('Configure Integration')
+ )
+ end
+ end
+ end
+
context 'for a developer' do
before do
project.add_developer(user)
+ stub_experiments(empty_repo_upload: :candidate)
end
it 'orders the items correctly' do
expect(empty_repo_statistics_buttons.map(&:label)).to start_with(
+ a_string_including('Upload'),
a_string_including('New'),
a_string_including('README'),
a_string_including('LICENSE'),
@@ -609,6 +696,16 @@ RSpec.describe ProjectPresenter do
a_string_including('CI/CD')
)
end
+
+ context 'when not in the upload experiment' do
+ before do
+ stub_experiments(empty_repo_upload: :control)
+ end
+
+ it 'does not include upload button' do
+ expect(empty_repo_statistics_buttons.map(&:label)).not_to start_with(a_string_including('Upload'))
+ end
+ end
end
end
@@ -694,4 +791,20 @@ RSpec.describe ProjectPresenter do
end
end
end
+
+ describe 'empty_repo_upload_experiment?' do
+ subject { presenter.empty_repo_upload_experiment? }
+
+ it 'returns false when upload_anchor_data is nil' do
+ allow(presenter).to receive(:upload_anchor_data).and_return(nil)
+
+ expect(subject).to be false
+ end
+
+ it 'returns true when upload_anchor_data exists' do
+ allow(presenter).to receive(:upload_anchor_data).and_return(true)
+
+ expect(subject).to be true
+ end
+ end
end
diff --git a/spec/presenters/projects/import_export/project_export_presenter_spec.rb b/spec/presenters/projects/import_export/project_export_presenter_spec.rb
index b2b2ce35f34..d5776ba2323 100644
--- a/spec/presenters/projects/import_export/project_export_presenter_spec.rb
+++ b/spec/presenters/projects/import_export/project_export_presenter_spec.rb
@@ -86,14 +86,22 @@ RSpec.describe Projects::ImportExport::ProjectExportPresenter do
context 'as admin' do
let(:user) { create(:admin) }
- it 'exports group members as admin' do
- expect(member_emails).to include('group@member.com')
- end
+ context 'when admin mode is enabled', :enable_admin_mode do
+ it 'exports group members as admin' do
+ expect(member_emails).to include('group@member.com')
+ end
+
+ it 'exports group members as project members' do
+ member_types = subject.project_members.map { |pm| pm.source_type }
- it 'exports group members as project members' do
- member_types = subject.project_members.map { |pm| pm.source_type }
+ expect(member_types).to all(eq('Project'))
+ end
+ end
- expect(member_types).to all(eq('Project'))
+ context 'when admin mode is disabled' do
+ it 'does not export group members' do
+ expect(member_emails).not_to include('group@member.com')
+ end
end
end
end
diff --git a/spec/presenters/snippet_presenter_spec.rb b/spec/presenters/snippet_presenter_spec.rb
index a1d987ed78f..b0387206bd9 100644
--- a/spec/presenters/snippet_presenter_spec.rb
+++ b/spec/presenters/snippet_presenter_spec.rb
@@ -159,7 +159,7 @@ RSpec.describe SnippetPresenter do
let(:snippet) { create(:snippet, :repository, author: user) }
it 'returns repository first blob' do
- expect(subject).to eq snippet.blobs.first
+ expect(subject.name).to eq snippet.blobs.first.name
end
end
end