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 | 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 |