summaryrefslogtreecommitdiff
path: root/spec/controllers/projects/templates_controller_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/templates_controller_spec.rb')
-rw-r--r--spec/controllers/projects/templates_controller_spec.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/controllers/projects/templates_controller_spec.rb b/spec/controllers/projects/templates_controller_spec.rb
index d5ef2b0e114..07b8a36fefc 100644
--- a/spec/controllers/projects/templates_controller_spec.rb
+++ b/spec/controllers/projects/templates_controller_spec.rb
@@ -99,4 +99,44 @@ describe Projects::TemplatesController do
include_examples 'renders 404 when params are invalid'
end
end
+
+ describe '#names' do
+ before do
+ project.add_developer(user)
+ sign_in(user)
+ end
+
+ shared_examples 'template names request' do
+ it 'returns the template names' do
+ get(:names, params: { namespace_id: project.namespace, template_type: template_type, project_id: project }, format: :json)
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response.size).to eq(1)
+ expect(json_response[0]['name']).to eq(expected_template_name)
+ end
+
+ it 'fails for user with no access' do
+ other_user = create(:user)
+ sign_in(other_user)
+
+ get(:names, params: { namespace_id: project.namespace, template_type: template_type, project_id: project }, format: :json)
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+ end
+
+ context 'when querying for issue templates' do
+ it_behaves_like 'template names request' do
+ let(:template_type) { 'issue' }
+ let(:expected_template_name) { 'issue_template' }
+ end
+ end
+
+ context 'when querying for merge_request templates' do
+ it_behaves_like 'template names request' do
+ let(:template_type) { 'merge_request' }
+ let(:expected_template_name) { 'merge_request_template' }
+ end
+ end
+ end
end