OSDN Git Service

Update default public pull url.
authorJason Hollingsworth <jhworth.developer@gmail.com>
Wed, 4 Dec 2013 02:13:19 +0000 (20:13 -0600)
committerJason Hollingsworth <jhworth.developer@gmail.com>
Tue, 17 Dec 2013 18:48:59 +0000 (12:48 -0600)
This updates the default pull URL for public projects when the user
is not logged in.

app/helpers/projects_helper.rb
app/views/projects/empty.html.haml
app/views/shared/_clone_panel.html.haml
features/public/public_projects.feature
features/steps/public/projects_feature.rb

index 0141da1..6605289 100644 (file)
@@ -179,4 +179,12 @@ module ProjectsHelper
 
     title
   end
+  
+  def default_url_to_repo
+    current_user ? @project.url_to_repo : @project.http_url_to_repo
+  end
+  
+  def default_clone_protocol
+    current_user ? "ssh" : "http"
+  end
 end
index b63e6a6..15cf150 100644 (file)
@@ -29,7 +29,7 @@
           touch README
           git add README
           git commit -m 'first commit'
-        %span.clone= "git remote add origin #{@project.url_to_repo}"
+        %span.clone= "git remote add origin #{default_url_to_repo}"
         :preserve
           git push -u origin master
 
@@ -38,7 +38,7 @@
       %pre.dark
         :preserve
           cd existing_git_repo
-        %span.clone= "git remote add origin #{@project.url_to_repo}"
+        %span.clone= "git remote add origin #{default_url_to_repo}"
         :preserve
           git push -u origin master
 
index 097c811..2ae3e6d 100644 (file)
@@ -1,4 +1,4 @@
 .git-clone-holder
-  %button{class: "btn #{ current_user ? 'active' : '' }", :"data-clone" => @project.ssh_url_to_repo} SSH
-  %button{class: "btn #{ current_user ? '' : 'active' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase
-  = text_field_tag :project_clone, (current_user ? @project.url_to_repo : @project.http_url_to_repo), class: "one_click_select span5", readonly: true
+  %button{class: "btn #{ 'active' if default_clone_protocol == 'ssh' }", :"data-clone" => @project.ssh_url_to_repo} SSH
+  %button{class: "btn #{ 'active' if default_clone_protocol == 'http' }", :"data-clone" => @project.http_url_to_repo}= gitlab_config.protocol.upcase
+  = text_field_tag :project_clone, default_url_to_repo, class: "one_click_select span5", readonly: true
index 5a30c03..d6574ca 100644 (file)
@@ -26,6 +26,14 @@ Feature: Public Projects Feature
     Given public empty project "Empty Public Project"
     When I visit empty project page
     Then I should see empty public project details
+    And I should see empty public project details with http clone info
+
+  Scenario: I visit an empty public project page as user
+    Given I sign in as a user
+    And public empty project "Empty Public Project"
+    When I visit empty project page
+    Then I should see empty public project details
+    And I should see empty public project details with ssh clone info
 
   Scenario: I visit public area as user
     Given I sign in as a user
@@ -42,10 +50,15 @@ Feature: Public Projects Feature
   Scenario: I visit public project page
     When I visit project "Community" page
     Then I should see project "Community" home page
-    And I should see a http link to the repository
+    And I should see an http link to the repository
 
-  Scenario: I visit public area as user
+  Scenario: I visit public project page as user
     Given I sign in as a user
     When I visit project "Community" page
     Then I should see project "Community" home page
-    And I should see a ssh link to the repository
+    And I should see an ssh link to the repository
+
+  Scenario: I visit an empty public project page
+    Given public empty project "Empty Public Project"
+    When I visit empty project page
+    Then I should see empty public project details
index a4209bb..47e52f4 100644 (file)
@@ -46,6 +46,20 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
     page.should have_content 'Git global setup'
   end
 
+  step 'I should see empty public project details with http clone info' do
+    project = Project.find_by_name('Empty Public Project')
+    page.all(:css, '.git-empty .clone').each do |element|
+      element.text.should include(project.http_url_to_repo)
+    end
+  end
+
+  step 'I should see empty public project details with ssh clone info' do
+    project = Project.find_by_name('Empty Public Project')
+    page.all(:css, '.git-empty .clone').each do |element|
+      element.text.should include(project.url_to_repo)
+    end
+  end
+
   step 'private project "Enterprise"' do
     create :project, name: 'Enterprise'
   end
@@ -84,12 +98,12 @@ class Spinach::Features::PublicProjectsFeature < Spinach::FeatureSteps
     end
   end
 
-  Then 'I should see a http link to the repository' do
+  step 'I should see an http link to the repository' do
     project = Project.find_by_name 'Community'
     page.should have_field('project_clone', with: project.http_url_to_repo)
   end
 
-  Then 'I should see a ssh link to the repository' do
+  step 'I should see an ssh link to the repository' do
     project = Project.find_by_name 'Community'
     page.should have_field('project_clone', with: project.url_to_repo)
   end