Commit c60a8075cb777d550c70675c5a87644a47e4938f
1 parent
c22ad2ce
Exists in
master
and in
1 other branch
Show tracker errors when saving issue
Showing
4 changed files
with
23 additions
and
3 deletions
Show diff stats
app/models/issue.rb
... | ... | @@ -12,6 +12,11 @@ class Issue |
12 | 12 | |
13 | 13 | def save |
14 | 14 | if issue_tracker |
15 | + issue_tracker.tracker.errors.each do |k, err| | |
16 | + errors.add k, err | |
17 | + end | |
18 | + return false if errors.present? | |
19 | + | |
15 | 20 | url = issue_tracker.create_issue(title, body, user: user.as_document) |
16 | 21 | problem.update_attributes(issue_link: url, issue_type: issue_tracker.tracker.class.label) |
17 | 22 | else | ... | ... |
spec/acceptance/app_regenerate_api_key_spec.rb
... | ... | @@ -73,6 +73,8 @@ feature "Create an application" do |
73 | 73 | click_on I18n.t('apps.index.new_app') |
74 | 74 | fill_in 'app_name', :with => 'My new app' |
75 | 75 | find('.label_radio.github').click |
76 | + | |
77 | + fill_in 'app_github_repo', with: 'foo/bar' | |
76 | 78 | within ".github.tracker_params" do |
77 | 79 | fill_in 'app_issue_tracker_attributes_options_username', :with => 'token' |
78 | 80 | fill_in 'app_issue_tracker_attributes_options_password', :with => 'pass' | ... | ... |
spec/errbit_plugin/mock_issue_tracker.rb
... | ... | @@ -28,8 +28,8 @@ module ErrbitPlugin |
28 | 28 | |
29 | 29 | def errors |
30 | 30 | errors = [] |
31 | - errors << [:foo, 'foo is required'] unless options[:foo] | |
32 | - errors << [:bar, 'bar is required'] unless options[:bar] | |
31 | + errors << [:base, 'foo is required'] unless options[:foo] | |
32 | + errors << [:base, 'bar is required'] unless options[:bar] | |
33 | 33 | errors |
34 | 34 | end |
35 | 35 | ... | ... |
spec/models/issue_spec.rb
... | ... | @@ -12,11 +12,11 @@ describe Issue do |
12 | 12 | t.instance_variable_set(:@tracker, ErrbitPlugin::MockIssueTracker.new(t.options)) |
13 | 13 | end |
14 | 14 | end |
15 | + let(:errors) { issue.errors[:base] } | |
15 | 16 | |
16 | 17 | context "when app has no issue tracker" do |
17 | 18 | let(:title) { "Foo" } |
18 | 19 | let(:body) { "barrr" } |
19 | - let(:errors) { issue.errors[:base] } | |
20 | 20 | |
21 | 21 | context "#save" do |
22 | 22 | it "returns false" do |
... | ... | @@ -54,6 +54,19 @@ describe Issue do |
54 | 54 | |
55 | 55 | context "#save" do |
56 | 56 | |
57 | + context "when issue tracker has errors" do | |
58 | + before do | |
59 | + issue_tracker.tracker.options.clear | |
60 | + end | |
61 | + | |
62 | + it("returns false") { expect(issue.save).to be false } | |
63 | + it "adds the errors" do | |
64 | + issue.save | |
65 | + expect(errors).to include("foo is required") | |
66 | + expect(errors).to include("bar is required") | |
67 | + end | |
68 | + end | |
69 | + | |
57 | 70 | it "creates the issue" do |
58 | 71 | issue.save |
59 | 72 | expect(issue_tracker.tracker.output.count).to be 1 | ... | ... |