Allow the TemplateFinder to handle licenses as well
This commit is contained in:
parent
03c733849c
commit
ca92fcd9de
3 changed files with 28 additions and 3 deletions
|
@ -5,6 +5,16 @@ class TemplateFinder
|
||||||
gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate
|
gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate
|
||||||
}.freeze
|
}.freeze
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def build(type, params = {})
|
||||||
|
if type == :licenses
|
||||||
|
LicenseTemplateFinder.new(params)
|
||||||
|
else
|
||||||
|
new(type, params)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
attr_reader :type, :params
|
attr_reader :type, :params
|
||||||
|
|
||||||
attr_reader :vendored_templates
|
attr_reader :vendored_templates
|
||||||
|
|
|
@ -33,7 +33,7 @@ module API
|
||||||
popular = declared(params)[:popular]
|
popular = declared(params)[:popular]
|
||||||
popular = to_boolean(popular) if popular.present?
|
popular = to_boolean(popular) if popular.present?
|
||||||
|
|
||||||
templates = LicenseTemplateFinder.new(popular: popular).execute
|
templates = TemplateFinder.build(:licenses, popular: popular).execute
|
||||||
|
|
||||||
present paginate(::Kaminari.paginate_array(templates)), with: ::API::Entities::License
|
present paginate(::Kaminari.paginate_array(templates)), with: ::API::Entities::License
|
||||||
end
|
end
|
||||||
|
@ -46,7 +46,7 @@ module API
|
||||||
requires :name, type: String, desc: 'The name of the template'
|
requires :name, type: String, desc: 'The name of the template'
|
||||||
end
|
end
|
||||||
get "templates/licenses/:name", requirements: { name: /[\w\.-]+/ } do
|
get "templates/licenses/:name", requirements: { name: /[\w\.-]+/ } do
|
||||||
templates = LicenseTemplateFinder.new.execute
|
templates = TemplateFinder.build(:licenses).execute
|
||||||
template = templates.find { |template| template.key == params[:name] }
|
template = templates.find { |template| template.key == params[:name] }
|
||||||
|
|
||||||
not_found!('License') unless template.present?
|
not_found!('License') unless template.present?
|
||||||
|
@ -82,7 +82,7 @@ module API
|
||||||
requires :name, type: String, desc: 'The name of the template'
|
requires :name, type: String, desc: 'The name of the template'
|
||||||
end
|
end
|
||||||
get "templates/#{template_type}/:name" do
|
get "templates/#{template_type}/:name" do
|
||||||
finder = TemplateFinder.new(template_type, name: declared(params)[:name])
|
finder = TemplateFinder.build(template_type, name: declared(params)[:name])
|
||||||
new_template = finder.execute
|
new_template = finder.execute
|
||||||
|
|
||||||
render_response(template_type, new_template)
|
render_response(template_type, new_template)
|
||||||
|
|
|
@ -3,6 +3,21 @@ require 'spec_helper'
|
||||||
describe TemplateFinder do
|
describe TemplateFinder do
|
||||||
using RSpec::Parameterized::TableSyntax
|
using RSpec::Parameterized::TableSyntax
|
||||||
|
|
||||||
|
describe '#build' do
|
||||||
|
where(:type, :expected_class) do
|
||||||
|
:dockerfiles | described_class
|
||||||
|
:gitignores | described_class
|
||||||
|
:gitlab_ci_ymls | described_class
|
||||||
|
:licenses | ::LicenseTemplateFinder
|
||||||
|
end
|
||||||
|
|
||||||
|
with_them do
|
||||||
|
subject { described_class.build(type) }
|
||||||
|
|
||||||
|
it { is_expected.to be_a(expected_class) }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#execute' do
|
describe '#execute' do
|
||||||
where(:type, :vendored_name) do
|
where(:type, :vendored_name) do
|
||||||
:dockerfiles | 'Binary'
|
:dockerfiles | 'Binary'
|
||||||
|
|
Loading…
Reference in a new issue