Skip to content
This repository was archived by the owner on Jul 19, 2025. It is now read-only.

Commit 9433497

Browse files
committed
Merge pull request #79 from codeclimate/gd-issue-tickets
Add Issue type
2 parents 8f18ce1 + cca4a0f commit 9433497

13 files changed

+144
-6
lines changed

lib/cc/helpers/issue_helper.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module CC::Service::IssueHelper
2+
def constant_name
3+
payload["constant_name"]
4+
end
5+
6+
def issue
7+
payload["issue"]
8+
end
9+
end

lib/cc/service.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def self.load_services
3030

3131
attr_reader :event, :config, :payload
3232

33-
ALL_EVENTS = %w[test unit coverage quality vulnerability snapshot pull_request]
33+
ALL_EVENTS = %w[test unit coverage quality vulnerability snapshot pull_request issue]
3434

3535
# Tracks the defined services.
3636
def self.services

lib/cc/services/asana.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@ def receive_test
3131
raise ex
3232
end
3333

34+
def receive_issue
35+
title = %{Fix "#{issue["check_name"]}" issue in #{constant_name}}
36+
37+
body = [issue["description"], details_url].join("\n\n")
38+
39+
create_task(title, body)
40+
end
3441

3542
def receive_quality
3643
title = "Refactor #{constant_name} from #{rating} on Code Climate"
@@ -47,8 +54,8 @@ def receive_vulnerability
4754

4855
private
4956

50-
def create_task(name)
51-
params = generate_params(name)
57+
def create_task(name, notes = nil)
58+
params = generate_params(name, notes)
5259
authenticate_http
5360
http.headers["Content-Type"] = "application/json"
5461
service_post(ENDPOINT, params.to_json) do |response|
@@ -59,9 +66,9 @@ def create_task(name)
5966
end
6067
end
6168

62-
def generate_params(name)
69+
def generate_params(name, notes = nil)
6370
params = {
64-
data: { workspace: config.workspace_id, name: name }
71+
data: { workspace: config.workspace_id, name: name, notes: notes }
6572
}
6673

6774
if config.project_id.present?

lib/cc/services/github_issues.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ def receive_vulnerability
4545
)
4646
end
4747

48+
def receive_issue
49+
title = %{Fix "#{issue["check_name"]}" issue in #{constant_name}}
50+
51+
body = [issue["description"], details_url].join("\n\n")
52+
53+
create_issue(title, body)
54+
end
55+
4856
private
4957

5058
def create_issue(title, issue_body)

lib/cc/services/jira.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ def receive_quality
4141
create_ticket(title, details_url)
4242
end
4343

44+
def receive_issue
45+
title = %{Fix "#{issue["check_name"]}" issue in #{constant_name}}
46+
47+
body = [issue["description"], details_url].join("\n\n")
48+
49+
create_ticket(title, body)
50+
end
51+
4452
def receive_vulnerability
4553
formatter = CC::Formatters::TicketFormatter.new(self)
4654

lib/cc/services/lighthouse.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ def receive_quality
3535
create_ticket(title, details_url)
3636
end
3737

38+
def receive_issue
39+
title = %{Fix "#{issue["check_name"]}" issue in #{constant_name}}
40+
41+
body = [issue["description"], details_url].join("\n\n")
42+
43+
create_ticket(title, body)
44+
end
45+
3846
def receive_vulnerability
3947
formatter = CC::Formatters::TicketFormatter.new(self)
4048

lib/cc/services/pivotal_tracker.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ def receive_quality
3333
create_story(name, details_url)
3434
end
3535

36+
def receive_issue
37+
title = %{Fix "#{issue["check_name"]}" issue in #{constant_name}}
38+
39+
body = [issue["description"], details_url].join("\n\n")
40+
41+
create_story(title, body)
42+
end
43+
3644
def receive_vulnerability
3745
formatter = CC::Formatters::TicketFormatter.new(self)
3846

test/asana_test.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,23 @@ def test_vulnerability
1818
)
1919
end
2020

21+
def test_issue
22+
payload = {
23+
issue: {
24+
"check_name" => "Style/LongLine",
25+
"description" => "Line is too long [1000/80]"
26+
},
27+
constant_name: "foo.rb",
28+
details_url: "http://example.com/repos/id/foo.rb#issue_123"
29+
}
30+
31+
assert_asana_receives(
32+
event(:issue, payload),
33+
"Fix \"Style/LongLine\" issue in foo.rb",
34+
"Line is too long [1000/80]\n\nhttp://example.com/repos/id/foo.rb#issue_123"
35+
)
36+
end
37+
2138
def test_successful_post
2239
@stubs.post '/api/1.0/tasks' do |env|
2340
[200, {}, '{"data":{"id":"2"}}']
@@ -41,7 +58,7 @@ def test_receive_test
4158

4259
private
4360

44-
def assert_asana_receives(event_data, name)
61+
def assert_asana_receives(event_data, name, notes = nil)
4562
@stubs.post '/api/1.0/tasks' do |env|
4663
body = JSON.parse(env[:body])
4764
data = body["data"]
@@ -50,6 +67,7 @@ def assert_asana_receives(event_data, name)
5067
assert_equal "2", data["projects"].first
5168
assert_equal "jim@asana.com", data["assignee"]
5269
assert_equal name, data["name"]
70+
assert_equal notes, data["notes"]
5371

5472
[200, {}, '{"data":{"id":4}}']
5573
end

test/fixtures.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ def vulnerability
5151
options.merge(name: "vulnerability")
5252
end
5353

54+
def issue
55+
options.merge(name: "issue")
56+
end
57+
5458
end
5559

5660
def event(name, options = {})

test/github_issues_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,23 @@ def test_quality
2222
)
2323
end
2424

25+
def test_issue
26+
payload = {
27+
issue: {
28+
"check_name" => "Style/LongLine",
29+
"description" => "Line is too long [1000/80]"
30+
},
31+
constant_name: "foo.rb",
32+
details_url: "http://example.com/repos/id/foo.rb#issue_123"
33+
}
34+
35+
assert_github_receives(
36+
event(:issue, payload),
37+
"Fix \"Style/LongLine\" issue in foo.rb",
38+
"Line is too long [1000/80]\n\nhttp://example.com/repos/id/foo.rb#issue_123"
39+
)
40+
end
41+
2542
def test_vulnerability
2643
assert_github_receives(
2744
event(:vulnerability, vulnerabilities: [{

0 commit comments

Comments
 (0)