Commit 7ef18d79671009bd5df8ca2c0ef3b2db11e2af9c
1 parent
8088127a
Exists in
master
and in
1 other branch
Issue needs the problem model
Showing
3 changed files
with
17 additions
and
8 deletions
Show diff stats
app/models/issue.rb
1 | 1 | class Issue |
2 | 2 | include ActiveModel::Model |
3 | - attr_accessor :issue_tracker, :user, :title, :body | |
3 | + attr_accessor :problem, :user, :title, :body | |
4 | 4 | |
5 | - def intialize(issue_tracker: nil, user: nil, title: nil, body: nil) | |
6 | - @issue_tracker, @user, @title, @body = issue_tracker, user, title, body | |
5 | + def intialize(problem: nil, user: nil, title: nil, body: nil) | |
6 | + @problem, @user, @title, @body = problem, user, title, body | |
7 | + end | |
8 | + | |
9 | + def issue_tracker | |
10 | + problem.app.issue_tracker | |
7 | 11 | end |
8 | 12 | |
9 | 13 | def save |
10 | 14 | if issue_tracker |
11 | - issue_tracker.create_issue(title, body, user.as_document) | |
15 | + url = issue_tracker.create_issue(title, body, user: user.as_document) | |
16 | + problem.update_attributes(issue_link: url, issue_type: issue_tracker.tracker.class.label) | |
12 | 17 | else |
13 | 18 | errors.add :base, "This app has no issue tracker setup." |
14 | 19 | end |
20 | + | |
15 | 21 | errors.empty? |
16 | 22 | rescue => ex |
17 | 23 | errors.add :base, "There was an error during issue creation: #{ex.message}" | ... | ... |
spec/models/issue_spec.rb
... | ... | @@ -2,7 +2,7 @@ require "spec_helper" |
2 | 2 | |
3 | 3 | describe Issue do |
4 | 4 | |
5 | - subject(:issue) { Issue.new(user: user, title: title, body: body) } | |
5 | + subject(:issue) { Issue.new(problem: problem, user: user, title: title, body: body) } | |
6 | 6 | |
7 | 7 | let(:problem) { notice.problem } |
8 | 8 | let(:notice) { Fabricate(:notice) } |
... | ... | @@ -49,7 +49,7 @@ describe Issue do |
49 | 49 | let(:body) { "barrr" } |
50 | 50 | |
51 | 51 | before do |
52 | - issue.issue_tracker = issue_tracker | |
52 | + problem.app.issue_tracker = issue_tracker | |
53 | 53 | end |
54 | 54 | |
55 | 55 | context "#save" do | ... | ... |
spec/models/issue_tracker_spec.rb
... | ... | @@ -12,8 +12,11 @@ describe IssueTracker do |
12 | 12 | |
13 | 13 | describe "#tracker" do |
14 | 14 | context "with type_tracker class not exist" do |
15 | - it 'return NullIssueTracker' do | |
16 | - expect(IssueTracker.new(:type_tracker => 'Foo').tracker).to be_a ErrbitPlugin::NoneIssueTracker | |
15 | + let(:app) { Fabricate(:app) } | |
16 | + | |
17 | + it 'return NoneIssueTracker' do | |
18 | + issue_tracker = IssueTracker.new(type_tracker: 'Foo', app: app) | |
19 | + expect(issue_tracker.tracker).to be_a ErrbitPlugin::NoneIssueTracker | |
17 | 20 | end |
18 | 21 | end |
19 | 22 | end | ... | ... |