diff options
Diffstat (limited to 'spec/controllers/projects/templates_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/templates_controller_spec.rb | 40 |
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 |