diff --git a/app/models/issue.rb b/app/models/issue.rb index 2d34be9..6aa45d1 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -12,6 +12,11 @@ class Issue def save if issue_tracker + issue_tracker.tracker.errors.each do |k, err| + errors.add k, err + end + return false if errors.present? + 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 diff --git a/spec/acceptance/app_regenerate_api_key_spec.rb b/spec/acceptance/app_regenerate_api_key_spec.rb index 5dfc9b2..69604d9 100644 --- a/spec/acceptance/app_regenerate_api_key_spec.rb +++ b/spec/acceptance/app_regenerate_api_key_spec.rb @@ -73,6 +73,8 @@ feature "Create an application" do click_on I18n.t('apps.index.new_app') fill_in 'app_name', :with => 'My new app' find('.label_radio.github').click + + fill_in 'app_github_repo', with: 'foo/bar' within ".github.tracker_params" do fill_in 'app_issue_tracker_attributes_options_username', :with => 'token' fill_in 'app_issue_tracker_attributes_options_password', :with => 'pass' diff --git a/spec/errbit_plugin/mock_issue_tracker.rb b/spec/errbit_plugin/mock_issue_tracker.rb index 2ac8485..f3ae0ed 100644 --- a/spec/errbit_plugin/mock_issue_tracker.rb +++ b/spec/errbit_plugin/mock_issue_tracker.rb @@ -28,8 +28,8 @@ module ErrbitPlugin def errors errors = [] - errors << [:foo, 'foo is required'] unless options[:foo] - errors << [:bar, 'bar is required'] unless options[:bar] + errors << [:base, 'foo is required'] unless options[:foo] + errors << [:base, 'bar is required'] unless options[:bar] errors end diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 0dd8d89..c3a9c53 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -12,11 +12,11 @@ describe Issue do t.instance_variable_set(:@tracker, ErrbitPlugin::MockIssueTracker.new(t.options)) end end + let(:errors) { issue.errors[:base] } context "when app has no issue tracker" do let(:title) { "Foo" } let(:body) { "barrr" } - let(:errors) { issue.errors[:base] } context "#save" do it "returns false" do @@ -54,6 +54,19 @@ describe Issue do context "#save" do + context "when issue tracker has errors" do + before do + issue_tracker.tracker.options.clear + end + + it("returns false") { expect(issue.save).to be false } + it "adds the errors" do + issue.save + expect(errors).to include("foo is required") + expect(errors).to include("bar is required") + end + end + it "creates the issue" do issue.save expect(issue_tracker.tracker.output.count).to be 1 -- libgit2 0.21.2