Correctly adds commit ID into dropdown
Removes un-used method Fixes other Ruby issues
This commit is contained in:
parent
3c8c912965
commit
68c9981013
|
@ -61,6 +61,8 @@ class @Project
|
|||
data: (term, callback) ->
|
||||
$.ajax(
|
||||
url: $dropdown.data('refs-url')
|
||||
data:
|
||||
ref: $dropdown.data('ref')
|
||||
).done (refs) ->
|
||||
callback(refs)
|
||||
selectable: true
|
||||
|
|
|
@ -252,20 +252,18 @@ class ProjectsController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def refs
|
||||
repository = @project.repository
|
||||
tags = VersionSorter.rsort(repository.tag_names)
|
||||
|
||||
options = {
|
||||
'Branches' => repository.branch_names,
|
||||
'Branches' => @repository.branch_names,
|
||||
}
|
||||
|
||||
if tags.any?
|
||||
options['Tags'] = tags
|
||||
unless @repository.tag_count.zero?
|
||||
options['Tags'] = VersionSorter.rsort(@repository.tag_names)
|
||||
end
|
||||
|
||||
# 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['Commits'] = @ref
|
||||
ref = params[:ref]
|
||||
if ref && !options.flatten.include?(ref) && ref =~ /\A[0-9a-zA-Z]{6,52}\z/
|
||||
options['Commits'] = [ref]
|
||||
end
|
||||
|
||||
render json: options.to_json
|
||||
|
|
|
@ -101,22 +101,6 @@ module ApplicationHelper
|
|||
'Never'
|
||||
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
|
||||
# with suggestion to create MR
|
||||
def show_last_push_widget?(event)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
- dropdown_toggle_text = @ref || @project.default_branch
|
||||
= form_tag switch_namespace_project_refs_path(@project.namespace, @project), method: :get, class: "project-refs-form" do
|
||||
= hidden_field_tag :destination, destination
|
||||
- if defined?(path)
|
||||
|
@ -5,7 +6,7 @@
|
|||
- @options && @options.each do |key, value|
|
||||
= hidden_field_tag key, value, id: nil
|
||||
.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_title "Switch branch/tag"
|
||||
= dropdown_filter "Search branches and tags"
|
||||
|
|
|
@ -174,51 +174,6 @@ describe ApplicationHelper do
|
|||
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
|
||||
let(:a_tag) { '<a href="#">Foo</a>' }
|
||||
|
||||
|
|
Loading…
Reference in New Issue