diff options
Diffstat (limited to 'spec/presenters')
5 files changed, 114 insertions, 9 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/project_presenter_spec.rb b/spec/presenters/project_presenter_spec.rb index 98bcbd8384b..ff8bb820cc5 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 @@ -594,13 +602,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 +651,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 +746,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 |