diff options
Diffstat (limited to 'spec/controllers/projects/error_tracking')
-rw-r--r-- | spec/controllers/projects/error_tracking/projects_controller_spec.rb | 31 | ||||
-rw-r--r-- | spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb | 37 |
2 files changed, 30 insertions, 38 deletions
diff --git a/spec/controllers/projects/error_tracking/projects_controller_spec.rb b/spec/controllers/projects/error_tracking/projects_controller_spec.rb index 67947d1c9d9..7529c701b2b 100644 --- a/spec/controllers/projects/error_tracking/projects_controller_spec.rb +++ b/spec/controllers/projects/error_tracking/projects_controller_spec.rb @@ -6,18 +6,21 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } + before_all do + project.add_maintainer(user) + end + before do sign_in(user) - project.add_maintainer(user) end describe 'GET #index' do context 'with insufficient permissions' do - before do - project.add_guest(user) - end + let(:user) { create(:user) } it 'returns 404' do + project.add_guest(user) + get :index, params: list_projects_params expect(response).to have_gitlab_http_status(:not_found) @@ -37,8 +40,8 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do end context 'with authorized user' do - let(:list_projects_service) { spy(:list_projects_service) } - let(:sentry_project) { build(:error_tracking_project) } + let(:list_projects_service) { instance_double('ErrorTracking::ListProjectsService') } + let(:sentry_project) { build_stubbed(:error_tracking_project) } let(:query_params) do list_projects_params.slice(:api_host, :token) @@ -50,9 +53,9 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do .and_return(list_projects_service) end - context 'service result is successful' do + context 'when service result is successful' do before do - expect(list_projects_service).to receive(:execute) + allow(list_projects_service).to receive(:execute) .and_return(status: :success, projects: [sentry_project]) end @@ -65,12 +68,12 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do end end - context 'service result is erroneous' do + context 'with service result is erroneous' do let(:error_message) { 'error message' } context 'without http_status' do before do - expect(list_projects_service).to receive(:execute) + allow(list_projects_service).to receive(:execute) .and_return(status: :error, message: error_message) end @@ -86,7 +89,7 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do let(:http_status) { :no_content } before do - expect(list_projects_service).to receive(:execute).and_return( + allow(list_projects_service).to receive(:execute).and_return( status: :error, message: error_message, http_status: http_status @@ -106,11 +109,7 @@ RSpec.describe Projects::ErrorTracking::ProjectsController do private def list_projects_params(opts = {}) - project_params( - format: :json, - api_host: 'gitlab.com', - token: 'token' - ) + project_params(format: :json, api_host: 'gitlab.com', token: 'token') end end diff --git a/spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb b/spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb index 19b6b597a84..e011428adde 100644 --- a/spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb +++ b/spec/controllers/projects/error_tracking/stack_traces_controller_spec.rb @@ -6,30 +6,34 @@ RSpec.describe Projects::ErrorTracking::StackTracesController do let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } + before_all do + project.add_maintainer(user) + end + before do sign_in(user) - project.add_maintainer(user) end describe 'GET #index' do let(:issue_id) { non_existing_record_id } - let(:issue_stack_trace_service) { spy(:issue_stack_trace_service) } + let(:issue_latest_event_service) { instance_double('ErrorTracking::IssueLatestEventService') } subject(:get_stack_trace) do get :index, params: { namespace_id: project.namespace, project_id: project, issue_id: issue_id, format: :json } end before do - expect(ErrorTracking::IssueLatestEventService) + allow(ErrorTracking::IssueLatestEventService) .to receive(:new).with(project, user, issue_id: issue_id.to_s) - .and_return(issue_stack_trace_service) - expect(issue_stack_trace_service).to receive(:execute).and_return(service_response) + .and_return(issue_latest_event_service) + + allow(issue_latest_event_service).to receive(:execute).and_return(service_response) get_stack_trace end - context 'awaiting data' do - let(:service_response) { { status: :error, http_status: :no_content }} + context 'when awaiting data' do + let(:service_response) { { status: :error, http_status: :no_content } } it 'responds with no data' do expect(response).to have_gitlab_http_status(:no_content) @@ -38,19 +42,14 @@ RSpec.describe Projects::ErrorTracking::StackTracesController do it_behaves_like 'sets the polling header' end - context 'service result is successful' do + context 'when service result is successful' do let(:service_response) { { status: :success, latest_event: error_event } } - let(:error_event) { build(:error_tracking_sentry_error_event) } + let(:error_event) { build_stubbed(:error_tracking_sentry_error_event) } - it 'responds with success' do + it 'highlights stack trace source code' do expect(response).to have_gitlab_http_status(:ok) - end - - it 'responds with error' do expect(response).to match_response_schema('error_tracking/issue_stack_trace') - end - it 'highlights stack trace source code' do expect(json_response['error']).to eq( Gitlab::ErrorTracking::StackTraceHighlightDecorator.decorate(error_event).as_json ) @@ -59,7 +58,7 @@ RSpec.describe Projects::ErrorTracking::StackTracesController do it_behaves_like 'sets the polling header' end - context 'service result is erroneous' do + context 'when service result is erroneous' do let(:error_message) { 'error message' } context 'without http_status' do @@ -67,9 +66,6 @@ RSpec.describe Projects::ErrorTracking::StackTracesController do it 'responds with bad request' do expect(response).to have_gitlab_http_status(:bad_request) - end - - it 'responds with error message' do expect(json_response['message']).to eq(error_message) end end @@ -80,9 +76,6 @@ RSpec.describe Projects::ErrorTracking::StackTracesController do it 'responds with custom http status' do expect(response).to have_gitlab_http_status(http_status) - end - - it 'responds with error message' do expect(json_response['message']).to eq(error_message) end end |