Commit 7ef18d79671009bd5df8ca2c0ef3b2db11e2af9c

Authored by Arthur Neves
1 parent 8088127a
Exists in master and in 1 other branch production

Issue needs the problem model

app/models/issue.rb
1 class Issue 1 class Issue
2 include ActiveModel::Model 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 end 11 end
8 12
9 def save 13 def save
10 if issue_tracker 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 else 17 else
13 errors.add :base, "This app has no issue tracker setup." 18 errors.add :base, "This app has no issue tracker setup."
14 end 19 end
  20 +
15 errors.empty? 21 errors.empty?
16 rescue => ex 22 rescue => ex
17 errors.add :base, "There was an error during issue creation: #{ex.message}" 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,7 +2,7 @@ require "spec_helper"
2 2
3 describe Issue do 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 let(:problem) { notice.problem } 7 let(:problem) { notice.problem }
8 let(:notice) { Fabricate(:notice) } 8 let(:notice) { Fabricate(:notice) }
@@ -49,7 +49,7 @@ describe Issue do @@ -49,7 +49,7 @@ describe Issue do
49 let(:body) { "barrr" } 49 let(:body) { "barrr" }
50 50
51 before do 51 before do
52 - issue.issue_tracker = issue_tracker 52 + problem.app.issue_tracker = issue_tracker
53 end 53 end
54 54
55 context "#save" do 55 context "#save" do
spec/models/issue_tracker_spec.rb
@@ -12,8 +12,11 @@ describe IssueTracker do @@ -12,8 +12,11 @@ describe IssueTracker do
12 12
13 describe "#tracker" do 13 describe "#tracker" do
14 context "with type_tracker class not exist" do 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 end 20 end
18 end 21 end
19 end 22 end