diff --git a/app/models/issue.rb b/app/models/issue.rb index 2daab33..2d34be9 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -1,17 +1,23 @@ class Issue include ActiveModel::Model - attr_accessor :issue_tracker, :user, :title, :body + attr_accessor :problem, :user, :title, :body - def intialize(issue_tracker: nil, user: nil, title: nil, body: nil) - @issue_tracker, @user, @title, @body = issue_tracker, user, title, body + def intialize(problem: nil, user: nil, title: nil, body: nil) + @problem, @user, @title, @body = problem, user, title, body + end + + def issue_tracker + problem.app.issue_tracker end def save if issue_tracker - issue_tracker.create_issue(title, body, user.as_document) + url = issue_tracker.create_issue(title, body, user: user.as_document) + problem.update_attributes(issue_link: url, issue_type: issue_tracker.tracker.class.label) else errors.add :base, "This app has no issue tracker setup." end + errors.empty? rescue => ex errors.add :base, "There was an error during issue creation: #{ex.message}" diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 5884264..0dd8d89 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" describe Issue do - subject(:issue) { Issue.new(user: user, title: title, body: body) } + subject(:issue) { Issue.new(problem: problem, user: user, title: title, body: body) } let(:problem) { notice.problem } let(:notice) { Fabricate(:notice) } @@ -49,7 +49,7 @@ describe Issue do let(:body) { "barrr" } before do - issue.issue_tracker = issue_tracker + problem.app.issue_tracker = issue_tracker end context "#save" do diff --git a/spec/models/issue_tracker_spec.rb b/spec/models/issue_tracker_spec.rb index 9c4b7a7..4b046fe 100644 --- a/spec/models/issue_tracker_spec.rb +++ b/spec/models/issue_tracker_spec.rb @@ -12,8 +12,11 @@ describe IssueTracker do describe "#tracker" do context "with type_tracker class not exist" do - it 'return NullIssueTracker' do - expect(IssueTracker.new(:type_tracker => 'Foo').tracker).to be_a ErrbitPlugin::NoneIssueTracker + let(:app) { Fabricate(:app) } + + it 'return NoneIssueTracker' do + issue_tracker = IssueTracker.new(type_tracker: 'Foo', app: app) + expect(issue_tracker.tracker).to be_a ErrbitPlugin::NoneIssueTracker end end end -- libgit2 0.21.2