diff options
| author | Rémy Coutable <remy@rymai.me> | 2016-05-09 14:48:48 +0000 |
|---|---|---|
| committer | Rémy Coutable <remy@rymai.me> | 2016-05-09 14:48:48 +0000 |
| commit | d4d34b161b41539567332d45527bb10c9f0665e3 (patch) | |
| tree | 484145a78e7aa113ca631a68c1aab45097394c66 /spec | |
| parent | bdfe6dc319571dbae8340a7132e5bd6a8ea06764 (diff) | |
| parent | f18ec70743375024aa7ec7bb86c437ca9198e729 (diff) | |
| download | gitlab-ce-d4d34b161b41539567332d45527bb10c9f0665e3.tar.gz | |
Merge branch 'rs-backport-ee-372' into 'master'
Backport changes from gitlab-org/gitlab-ee!372
Mostly replaces several Spinach tests with RSpec Feature tests.
See merge request !4043
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/factories/projects.rb | 10 | ||||
| -rw-r--r-- | spec/features/projects/developer_views_empty_project_instructions_spec.rb | 63 | ||||
| -rw-r--r-- | spec/helpers/projects_helper_spec.rb | 10 |
3 files changed, 75 insertions, 8 deletions
diff --git a/spec/factories/projects.rb b/spec/factories/projects.rb index ecd0e44dd62..4d61345696a 100644 --- a/spec/factories/projects.rb +++ b/spec/factories/projects.rb @@ -60,6 +60,12 @@ FactoryGirl.define do trait :private do visibility_level Gitlab::VisibilityLevel::PRIVATE end + + trait :empty_repo do + after(:create) do |project| + project.create_repository + end + end end # Project with empty repository @@ -67,9 +73,7 @@ FactoryGirl.define do # This is a case when you just created a project # but not pushed any code there yet factory :project_empty_repo, parent: :empty_project do - after :create do |project| - project.create_repository - end + empty_repo end # Project with test repository diff --git a/spec/features/projects/developer_views_empty_project_instructions_spec.rb b/spec/features/projects/developer_views_empty_project_instructions_spec.rb new file mode 100644 index 00000000000..0c51fe72ca4 --- /dev/null +++ b/spec/features/projects/developer_views_empty_project_instructions_spec.rb @@ -0,0 +1,63 @@ +require 'rails_helper' + +feature 'Developer views empty project instructions', feature: true do + let(:project) { create(:empty_project, :empty_repo) } + let(:developer) { create(:user) } + + background do + project.team << [developer, :developer] + + login_as(developer) + end + + context 'without an SSH key' do + scenario 'defaults to HTTP' do + visit_project + + expect_instructions_for('http') + end + + scenario 'switches to SSH', js: true do + visit_project + + select_protocol('SSH') + + expect_instructions_for('ssh') + end + end + + context 'with an SSH key' do + background do + create(:personal_key, user: developer) + end + + scenario 'defaults to SSH' do + visit_project + + expect_instructions_for('ssh') + end + + scenario 'switches to HTTP', js: true do + visit_project + + select_protocol('HTTP') + + expect_instructions_for('http') + end + end + + def visit_project + visit namespace_project_path(project.namespace, project) + end + + def select_protocol(protocol) + find('#clone-dropdown').click + find(".#{protocol.downcase}-selector").click + end + + def expect_instructions_for(protocol) + msg = :"#{protocol.downcase}_url_to_repo" + + expect(page).to have_content("git clone #{project.send(msg)}") + end +end diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 29bcb8c5892..ac5af8740dc 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -88,18 +88,18 @@ describe ProjectsHelper do end describe 'default_clone_protocol' do - describe 'using HTTP' do + context 'when user is not logged in and gitlab protocol is HTTP' do it 'returns HTTP' do - expect(helper).to receive(:current_user).and_return(nil) + allow(helper).to receive(:current_user).and_return(nil) expect(helper.send(:default_clone_protocol)).to eq('http') end end - describe 'using HTTPS' do + context 'when user is not logged in and gitlab protocol is HTTPS' do it 'returns HTTPS' do - allow(Gitlab.config.gitlab).to receive(:protocol).and_return('https') - expect(helper).to receive(:current_user).and_return(nil) + stub_config_setting(protocol: 'https') + allow(helper).to receive(:current_user).and_return(nil) expect(helper.send(:default_clone_protocol)).to eq('https') end |
