From d4726112656df24ff7721865a96237d5168466f7 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 24 Oct 2016 15:24:56 +0100 Subject: added cycle analytics events controller and started integration spec --- .../projects/cycle_analytics_events_spec.rb | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 spec/requests/projects/cycle_analytics_events_spec.rb (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb new file mode 100644 index 00000000000..064434c127e --- /dev/null +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +describe 'cycle analytics events' do + let(:user) { create(:user) } + let(:project) { create(:project) } + + describe 'GET /:namespace/:project/cycle_analytics/events/issues' do + before do + project.team << [user, :developer] + + login_as(user) + end + + it 'lists the issue events' do + get namespace_project_cycle_analytics_issues_path(project.namespace, project, format: :json) + + expect(json_response).to eq ([]) + end + end + + def json_response + JSON.parse(response.body) + end +end -- cgit v1.2.3 From 32679232635dbd0d196a91d0788ee1135ff56b43 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 24 Oct 2016 15:49:25 +0100 Subject: added the rest of the stages to the controller and relevant specs --- .../projects/cycle_analytics_events_spec.rb | 48 +++++++++++++++++++++- 1 file changed, 46 insertions(+), 2 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 064434c127e..51db9bb07fa 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -3,18 +3,62 @@ require 'spec_helper' describe 'cycle analytics events' do let(:user) { create(:user) } let(:project) { create(:project) } + let!(:issue) { create(:issue, project: project, created_at: 2.days.ago) } describe 'GET /:namespace/:project/cycle_analytics/events/issues' do before do project.team << [user, :developer] + milestone = create(:milestone, project: project) + issue.update(milestone: milestone) + create_merge_request_closing_issue(issue) + + merge_merge_requests_closing_issue(issue) + deploy_master + login_as(user) end it 'lists the issue events' do - get namespace_project_cycle_analytics_issues_path(project.namespace, project, format: :json) + get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the plan events' do + get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the code events' do + get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the test events' do + get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the review events' do + get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the staging events' do + get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) + + expect(json_response['events']).not_to be_empty + end + + it 'lists the production events' do + get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json) - expect(json_response).to eq ([]) + expect(json_response['events']).not_to be_empty end end -- cgit v1.2.3 From 9ead268cfaee7cb23fa00c7cf8bcf536cafab91a Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 2 Nov 2016 16:21:49 +0100 Subject: some more integration scenarios testing order. Also, fixed bug in the staging and test stages. --- .../projects/cycle_analytics_events_spec.rb | 55 +++++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 51db9bb07fa..e2733be4c3a 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -3,66 +3,95 @@ require 'spec_helper' describe 'cycle analytics events' do let(:user) { create(:user) } let(:project) { create(:project) } - let!(:issue) { create(:issue, project: project, created_at: 2.days.ago) } describe 'GET /:namespace/:project/cycle_analytics/events/issues' do before do project.team << [user, :developer] - milestone = create(:milestone, project: project) - issue.update(milestone: milestone) - create_merge_request_closing_issue(issue) - - merge_merge_requests_closing_issue(issue) + 3.times { create_cycle } deploy_master login_as(user) end - it 'lists the issue events' do + it 'lists the issue events in the right order' do get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + + expect(json_response['events'].first['iid']).to eq(first_issue_iid) end - it 'lists the plan events' do + it 'lists the plan events in the right order' do get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + first_date = DateTime.parse(json_response['events'].first['commit']['authored_date']) + last_date = DateTime.parse(json_response['events'].last['commit']['authored_date']) + + expect(first_date).to be > last_date end - it 'lists the code events' do + it 'lists the code events in the right order' do get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + + expect(json_response['events'].first['iid']).to eq(first_mr_iid) end - it 'lists the test events' do + it 'lists the test events in the right order' do get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + # TODO create builds end - it 'lists the review events' do + it 'lists the review events in the right order' do get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + + expect(json_response['events'].first['iid']).to eq(first_mr_iid) end - it 'lists the staging events' do + it 'lists the staging events in the right order' do get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + # TODO create builds end - it 'lists the production events' do + it 'lists the production events in the right order' do get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json) expect(json_response['events']).not_to be_empty + + first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + + expect(json_response['events'].first['iid']).to eq(first_issue_iid) end end def json_response JSON.parse(response.body) end + + def create_cycle + issue = create(:issue, project: project, created_at: 2.days.ago) + milestone = create(:milestone, project: project) + issue.update(milestone: milestone) + + create_merge_request_closing_issue(issue) + merge_merge_requests_closing_issue(issue) + end end -- cgit v1.2.3 From 8bb4750eb3987999b0ee617c29224e468e9147b3 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 3 Nov 2016 11:28:14 +0100 Subject: added pipelines to integration spec --- spec/requests/projects/cycle_analytics_events_spec.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index e2733be4c3a..3ee8795ac4c 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -50,7 +50,8 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty - # TODO create builds + expect(json_response['events'].first['pipeline']).not_to be_empty + end it 'lists the review events in the right order' do @@ -68,7 +69,7 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty - # TODO create builds + expect(json_response['events'].first['pipeline']).not_to be_empty end it 'lists the production events in the right order' do @@ -90,8 +91,11 @@ describe 'cycle analytics events' do issue = create(:issue, project: project, created_at: 2.days.ago) milestone = create(:milestone, project: project) issue.update(milestone: milestone) + mr = create_merge_request_closing_issue(issue) + + pipeline = create(:ci_empty_pipeline, status: 'created', project: project, ref: mr.source_branch, sha: mr.source_branch_sha) + pipeline.run - create_merge_request_closing_issue(issue) merge_merge_requests_closing_issue(issue) end end -- cgit v1.2.3 From 8f7266cd4b6a3e65224b55c2b91509f5ac88d837 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 3 Nov 2016 13:06:14 +0100 Subject: added missing fields to issue. Also, added a light url builder to add URLs easily from arel. Updated specs. --- spec/requests/projects/cycle_analytics_events_spec.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 3ee8795ac4c..9884df3f110 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -51,7 +51,6 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty expect(json_response['events'].first['pipeline']).not_to be_empty - end it 'lists the review events in the right order' do -- cgit v1.2.3 From 449a9fb1f16ff8b0d4328c4ebd26018dcd6fce36 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Fri, 4 Nov 2016 17:14:35 +0100 Subject: fixed integration spec after big refactoring of fields per stage --- .../projects/cycle_analytics_events_spec.rb | 56 +++++++++++++--------- 1 file changed, 33 insertions(+), 23 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 9884df3f110..c0b6a97c202 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -14,71 +14,78 @@ describe 'cycle analytics events' do login_as(user) end - it 'lists the issue events in the right order' do + it 'lists the issue events' do get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['issues']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['events'].first['iid']).to eq(first_issue_iid) + expect(json_response['issues'].first['iid']).to eq(first_issue_iid) end - it 'lists the plan events in the right order' do + it 'lists the plan events' do get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['commits']).not_to be_empty - first_date = DateTime.parse(json_response['events'].first['commit']['authored_date']) - last_date = DateTime.parse(json_response['events'].last['commit']['authored_date']) + commits = [] - expect(first_date).to be > last_date + MergeRequest.all.each do |mr| + mr.merge_request_diff.st_commits.each do |commit| + commits << { date: commit[:authored_date], sha: commit[:id] } + end + end + + newest_sha = commits.sort_by { |k| k['date'] }.first[:sha][0...8] + + expect(json_response['commits'].first['sha']).to eq(newest_sha) end - it 'lists the code events in the right order' do + it 'lists the code events' do get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['merge_requests']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['events'].first['iid']).to eq(first_mr_iid) + expect(json_response['merge_requests'].first['iid']).to eq(first_mr_iid) end - it 'lists the test events in the right order' do + it 'lists the test events' do get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['builds']).not_to be_empty - expect(json_response['events'].first['pipeline']).not_to be_empty + expect(json_response['builds'].first['date']).not_to be_empty end - it 'lists the review events in the right order' do + it 'lists the review events' do get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['merge_requests']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['events'].first['iid']).to eq(first_mr_iid) + expect(json_response['merge_requests'].first['iid']).to eq(first_mr_iid) end - it 'lists the staging events in the right order' do + it 'lists the staging events' do get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['builds']).not_to be_empty - expect(json_response['events'].first['pipeline']).not_to be_empty + expect(json_response['builds'].first['date']).not_to be_empty end - it 'lists the production events in the right order' do + it 'lists the production events' do get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json) - expect(json_response['events']).not_to be_empty + expect(json_response['issues']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['events'].first['iid']).to eq(first_issue_iid) + expect(json_response['issues'].first['iid']).to eq(first_issue_iid) end end @@ -95,6 +102,9 @@ describe 'cycle analytics events' do pipeline = create(:ci_empty_pipeline, status: 'created', project: project, ref: mr.source_branch, sha: mr.source_branch_sha) pipeline.run + create(:ci_build, pipeline: pipeline, status: :success, author: user) + create(:ci_build, pipeline: pipeline, status: :success, author: user) + merge_merge_requests_closing_issue(issue) end end -- cgit v1.2.3 From 192918cde949c8399d7d526a638f6e09f9fb7a5a Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 7 Nov 2016 10:08:18 +0100 Subject: refactored duplicated code in controller, updated JSON array naming and fixed specs --- .../projects/cycle_analytics_events_spec.rb | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index c0b6a97c202..d57e0342544 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -17,17 +17,17 @@ describe 'cycle analytics events' do it 'lists the issue events' do get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) - expect(json_response['issues']).not_to be_empty + expect(json_response['items']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['issues'].first['iid']).to eq(first_issue_iid) + expect(json_response['items'].first['iid']).to eq(first_issue_iid) end it 'lists the plan events' do get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json) - expect(json_response['commits']).not_to be_empty + expect(json_response['items']).not_to be_empty commits = [] @@ -39,53 +39,53 @@ describe 'cycle analytics events' do newest_sha = commits.sort_by { |k| k['date'] }.first[:sha][0...8] - expect(json_response['commits'].first['sha']).to eq(newest_sha) + expect(json_response['items'].first['sha']).to eq(newest_sha) end it 'lists the code events' do get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json) - expect(json_response['merge_requests']).not_to be_empty + expect(json_response['items']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['merge_requests'].first['iid']).to eq(first_mr_iid) + expect(json_response['items'].first['iid']).to eq(first_mr_iid) end it 'lists the test events' do get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) - expect(json_response['builds']).not_to be_empty + expect(json_response['items']).not_to be_empty - expect(json_response['builds'].first['date']).not_to be_empty + expect(json_response['items'].first['date']).not_to be_empty end it 'lists the review events' do get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json) - expect(json_response['merge_requests']).not_to be_empty + expect(json_response['items']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['merge_requests'].first['iid']).to eq(first_mr_iid) + expect(json_response['items'].first['iid']).to eq(first_mr_iid) end it 'lists the staging events' do get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) - expect(json_response['builds']).not_to be_empty + expect(json_response['items']).not_to be_empty - expect(json_response['builds'].first['date']).not_to be_empty + expect(json_response['items'].first['date']).not_to be_empty end it 'lists the production events' do get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json) - expect(json_response['issues']).not_to be_empty + expect(json_response['items']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['issues'].first['iid']).to eq(first_issue_iid) + expect(json_response['items'].first['iid']).to eq(first_issue_iid) end end -- cgit v1.2.3 From 3d00503368c355a4a9a45cda0e6673580074d2da Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 9 Nov 2016 11:44:29 +0100 Subject: fixed and added missing scenario to events integration spec --- .../projects/cycle_analytics_events_spec.rb | 40 ++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index d57e0342544..d4da8707ea5 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -17,17 +17,17 @@ describe 'cycle analytics events' do it 'lists the issue events' do get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['items'].first['iid']).to eq(first_issue_iid) + expect(json_response['events'].first['iid']).to eq(first_issue_iid) end it 'lists the plan events' do get namespace_project_cycle_analytics_plan_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty commits = [] @@ -39,53 +39,65 @@ describe 'cycle analytics events' do newest_sha = commits.sort_by { |k| k['date'] }.first[:sha][0...8] - expect(json_response['items'].first['sha']).to eq(newest_sha) + expect(json_response['events'].first['sha']).to eq(newest_sha) end it 'lists the code events' do get namespace_project_cycle_analytics_code_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['items'].first['iid']).to eq(first_mr_iid) + expect(json_response['events'].first['iid']).to eq(first_mr_iid) end it 'lists the test events' do get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty - expect(json_response['items'].first['date']).not_to be_empty + expect(json_response['events'].first['date']).not_to be_empty end it 'lists the review events' do get namespace_project_cycle_analytics_review_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['items'].first['iid']).to eq(first_mr_iid) + expect(json_response['events'].first['iid']).to eq(first_mr_iid) end it 'lists the staging events' do get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty - expect(json_response['items'].first['date']).not_to be_empty + expect(json_response['events'].first['date']).not_to be_empty end it 'lists the production events' do get namespace_project_cycle_analytics_production_path(project.namespace, project, format: :json) - expect(json_response['items']).not_to be_empty + expect(json_response['events']).not_to be_empty first_issue_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s - expect(json_response['items'].first['iid']).to eq(first_issue_iid) + expect(json_response['events'].first['iid']).to eq(first_issue_iid) + end + + context 'specific branch' do + it 'lists the test events' do + branch = MergeRequest.first.source_branch + + get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json, branch: branch) + + expect(json_response['events']).not_to be_empty + + expect(json_response['events'].first['date']).not_to be_empty + end end end -- cgit v1.2.3 From 633ddc9ed98c690c082c7347422ac85f9b592fb4 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Tue, 15 Nov 2016 16:25:37 +0100 Subject: fix authorization of builds and added relevant spec --- .../projects/cycle_analytics_events_spec.rb | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index d4da8707ea5..ef6e4c80911 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -39,7 +39,7 @@ describe 'cycle analytics events' do newest_sha = commits.sort_by { |k| k['date'] }.first[:sha][0...8] - expect(json_response['events'].first['sha']).to eq(newest_sha) + expect(json_response['events'].first['short_sha']).to eq(newest_sha) end it 'lists the code events' do @@ -99,6 +99,30 @@ describe 'cycle analytics events' do expect(json_response['events'].first['date']).not_to be_empty end end + + context 'with private project and builds' do + before do + ProjectMember.first.update(access_level: Gitlab::Access::GUEST) + end + + it 'does not list the test events' do + get namespace_project_cycle_analytics_test_path(project.namespace, project, format: :json) + + expect(response).to have_http_status(:not_found) + end + + it 'does not list the staging events' do + get namespace_project_cycle_analytics_staging_path(project.namespace, project, format: :json) + + expect(response).to have_http_status(:not_found) + end + + it 'lists the issue events' do + get namespace_project_cycle_analytics_issue_path(project.namespace, project, format: :json) + + expect(response).to have_http_status(:ok) + end + end end def json_response -- cgit v1.2.3 From cbc9f0cd1aa9f379952b6e4d3ad6df9971f9092a Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 16 Nov 2016 09:58:23 +0100 Subject: fix issue with commits and also updated routes --- spec/requests/projects/cycle_analytics_events_spec.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index ef6e4c80911..280aa2152b1 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -142,5 +142,7 @@ describe 'cycle analytics events' do create(:ci_build, pipeline: pipeline, status: :success, author: user) merge_merge_requests_closing_issue(issue) + + Issue::Metrics.update_all(first_mentioned_in_commit_at: mr.commits.last.committed_date) end end -- cgit v1.2.3 From cf2dcf043c0054785bc0258ab6393104499b8d70 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 16 Nov 2016 12:01:10 +0100 Subject: Refactor all query config stuff into separate classes and added specs --- spec/requests/projects/cycle_analytics_events_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 280aa2152b1..1c78cd368db 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -12,6 +12,8 @@ describe 'cycle analytics events' do deploy_master login_as(user) + + allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([context]) end it 'lists the issue events' do @@ -143,6 +145,6 @@ describe 'cycle analytics events' do merge_merge_requests_closing_issue(issue) - Issue::Metrics.update_all(first_mentioned_in_commit_at: mr.commits.last.committed_date) + ProcessCommitWorker.new.perform(project.id, user.id, mr.commits.last.sha) end end -- cgit v1.2.3 From cbd7d000395ff60fe3726e67ec351bd4d44582ec Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 16 Nov 2016 15:55:20 +0100 Subject: added custom date helper and spec and fixed some unrelated spec failures --- .../projects/cycle_analytics_events_spec.rb | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'spec/requests') diff --git a/spec/requests/projects/cycle_analytics_events_spec.rb b/spec/requests/projects/cycle_analytics_events_spec.rb index 1c78cd368db..705dbb7d1c0 100644 --- a/spec/requests/projects/cycle_analytics_events_spec.rb +++ b/spec/requests/projects/cycle_analytics_events_spec.rb @@ -3,17 +3,18 @@ require 'spec_helper' describe 'cycle analytics events' do let(:user) { create(:user) } let(:project) { create(:project) } + let(:issue) { create(:issue, project: project, created_at: 2.days.ago) } describe 'GET /:namespace/:project/cycle_analytics/events/issues' do before do project.team << [user, :developer] + allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([issue]) + 3.times { create_cycle } deploy_master login_as(user) - - allow_any_instance_of(Gitlab::ReferenceExtractor).to receive(:issues).and_return([context]) end it 'lists the issue events' do @@ -31,17 +32,7 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty - commits = [] - - MergeRequest.all.each do |mr| - mr.merge_request_diff.st_commits.each do |commit| - commits << { date: commit[:authored_date], sha: commit[:id] } - end - end - - newest_sha = commits.sort_by { |k| k['date'] }.first[:sha][0...8] - - expect(json_response['events'].first['short_sha']).to eq(newest_sha) + expect(json_response['events'].first['short_sha']).to eq(MergeRequest.last.commits.first.short_id) end it 'lists the code events' do @@ -49,7 +40,7 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty - first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + first_mr_iid = MergeRequest.order(created_at: :desc).pluck(:iid).first.to_s expect(json_response['events'].first['iid']).to eq(first_mr_iid) end @@ -67,7 +58,7 @@ describe 'cycle analytics events' do expect(json_response['events']).not_to be_empty - first_mr_iid = Issue.order(created_at: :desc).pluck(:iid).first.to_s + first_mr_iid = MergeRequest.order(created_at: :desc).pluck(:iid).first.to_s expect(json_response['events'].first['iid']).to eq(first_mr_iid) end @@ -132,7 +123,6 @@ describe 'cycle analytics events' do end def create_cycle - issue = create(:issue, project: project, created_at: 2.days.ago) milestone = create(:milestone, project: project) issue.update(milestone: milestone) mr = create_merge_request_closing_issue(issue) -- cgit v1.2.3