Commit 68c99810 authored by Phil Hughes's avatar Phil Hughes

Correctly adds commit ID into dropdown

Removes un-used method
Fixes other Ruby issues
parent 3c8c9129
...@@ -61,6 +61,8 @@ class @Project ...@@ -61,6 +61,8 @@ class @Project
data: (term, callback) -> data: (term, callback) ->
$.ajax( $.ajax(
url: $dropdown.data('refs-url') url: $dropdown.data('refs-url')
data:
ref: $dropdown.data('ref')
).done (refs) -> ).done (refs) ->
callback(refs) callback(refs)
selectable: true selectable: true
......
...@@ -252,20 +252,18 @@ class ProjectsController < Projects::ApplicationController ...@@ -252,20 +252,18 @@ class ProjectsController < Projects::ApplicationController
end end
def refs def refs
repository = @project.repository
tags = VersionSorter.rsort(repository.tag_names)
options = { options = {
'Branches' => repository.branch_names, 'Branches' => @repository.branch_names,
} }
if tags.any? unless @repository.tag_count.zero?
options['Tags'] = tags options['Tags'] = VersionSorter.rsort(@repository.tag_names)
end end
# If reference is commit id - we should add it to branch/tag selectbox # If reference is commit id - we should add it to branch/tag selectbox
if @ref && !options.flatten.include?(@ref) && @ref =~ /\A[0-9a-zA-Z]{6,52}\z/ ref = params[:ref]
options['Commits'] = @ref if ref && !options.flatten.include?(ref) && ref =~ /\A[0-9a-zA-Z]{6,52}\z/
options['Commits'] = [ref]
end end
render json: options.to_json render json: options.to_json
......
...@@ -101,22 +101,6 @@ module ApplicationHelper ...@@ -101,22 +101,6 @@ module ApplicationHelper
'Never' 'Never'
end end
def grouped_options_refs
repository = @project.repository
options = [
['Branches', repository.branch_names],
['Tags', VersionSorter.rsort(repository.tag_names)]
]
# If reference is commit id - we should add it to branch/tag selectbox
if @ref && !options.flatten.include?(@ref) && @ref =~ /\A[0-9a-zA-Z]{6,52}\z/
options << ['Commit', [@ref]]
end
grouped_options_for_select(options, @ref || @project.default_branch)
end
# Define whenever show last push event # Define whenever show last push event
# with suggestion to create MR # with suggestion to create MR
def show_last_push_widget?(event) def show_last_push_widget?(event)
......
- dropdown_toggle_text = @ref || @project.default_branch
= form_tag switch_namespace_project_refs_path(@project.namespace, @project), method: :get, class: "project-refs-form" do = form_tag switch_namespace_project_refs_path(@project.namespace, @project), method: :get, class: "project-refs-form" do
= hidden_field_tag :destination, destination = hidden_field_tag :destination, destination
- if defined?(path) - if defined?(path)
...@@ -5,7 +6,7 @@ ...@@ -5,7 +6,7 @@
- @options && @options.each do |key, value| - @options && @options.each do |key, value|
= hidden_field_tag key, value, id: nil = hidden_field_tag key, value, id: nil
.dropdown .dropdown
= dropdown_toggle @ref || @project.default_branch, { toggle: "dropdown", selected: @ref || @project.default_branch, refs_url: refs_namespace_project_path(@project.namespace, @project) }, { toggle_class: "js-project-refs-dropdown" } = dropdown_toggle dropdown_toggle_text, { toggle: "dropdown", selected: @ref || @project.default_branch, ref: @ref, refs_url: refs_namespace_project_path(@project.namespace, @project) }, { toggle_class: "js-project-refs-dropdown" }
.dropdown-menu.dropdown-menu-selectable{ class: ("dropdown-menu-align-right" if local_assigns[:align_right]) } .dropdown-menu.dropdown-menu-selectable{ class: ("dropdown-menu-align-right" if local_assigns[:align_right]) }
= dropdown_title "Switch branch/tag" = dropdown_title "Switch branch/tag"
= dropdown_filter "Search branches and tags" = dropdown_filter "Search branches and tags"
......
...@@ -174,51 +174,6 @@ describe ApplicationHelper do ...@@ -174,51 +174,6 @@ describe ApplicationHelper do
end end
end end
describe 'grouped_options_refs' do
let(:options) { helper.grouped_options_refs }
let(:project) { create(:project) }
before do
assign(:project, project)
# Override Rails' grouped_options_for_select helper to just return the
# first argument (`options`), since it's easier to work with than the
# generated HTML.
allow(helper).to receive(:grouped_options_for_select).
and_wrap_original { |_, *args| args.first }
end
it 'includes a list of branch names' do
expect(options[0][0]).to eq('Branches')
expect(options[0][1]).to include('master', 'feature')
end
it 'includes a list of tag names' do
expect(options[1][0]).to eq('Tags')
expect(options[1][1]).to include('v1.0.0', 'v1.1.0')
end
it 'includes a specific commit ref if defined' do
# Must be an instance variable
ref = '2ed06dc41dbb5936af845b87d79e05bbf24c73b8'
assign(:ref, ref)
expect(options[2][0]).to eq('Commit')
expect(options[2][1]).to eq([ref])
end
it 'sorts tags in a natural order' do
# Stub repository.tag_names to make sure we get some valid testing data
expect(project.repository).to receive(:tag_names).
and_return(['v1.0.9', 'v1.0.10', 'v2.0', 'v3.1.4.2', 'v2.0rc1¿',
'v1.0.9a', 'v2.0-rc1', 'v2.0rc2'])
expect(options[1][1]).
to eq(['v3.1.4.2', 'v2.0', 'v2.0rc2', 'v2.0rc1¿', 'v2.0-rc1', 'v1.0.10',
'v1.0.9', 'v1.0.9a'])
end
end
describe 'simple_sanitize' do describe 'simple_sanitize' do
let(:a_tag) { '<a href="#">Foo</a>' } let(:a_tag) { '<a href="#">Foo</a>' }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment