diff --git a/spec/interactors/issue_creation_spec.rb b/spec/interactors/issue_creation_spec.rb deleted file mode 100644 index bd7ae99..0000000 --- a/spec/interactors/issue_creation_spec.rb +++ /dev/null @@ -1,63 +0,0 @@ -require 'spec_helper' - -describe IssueCreation do - subject(:issue_creation) do - IssueCreation.new(problem, user, tracker_name, request) - end - - let(:request) do - double(:request, - :host => 'github.com', - :port => '80', - :scheme => 'http' - ) - end - let(:problem) { notice.problem } - let(:notice) { Fabricate(:notice) } - let(:user) { Fabricate(:admin) } - let(:errors) { issue_creation.errors[:base] } - let(:tracker_name) { nil } - - it "adds the error when issue tracker isn't configured" do - issue_creation.execute - expect(errors).to include("This app has no issue tracker setup.") - end - - it 'creates an issue if issue tracker is configured' do - problem.app.issue_tracker = Fabricate(:issue_tracker) - issue_creation.execute - expect(errors).to be_empty - end - - context "with user's github" do - let(:tracker_name) { 'user_github' } - - it "adds the error when repo isn't set up" do - issue_creation.execute - expect(errors).to include("This app doesn't have a GitHub repo set up.") - end - - context 'with repo set up' do - before do - notice.app.update_attribute(:github_repo, 'errbit/errbit') - end - - it "adds the error when github account isn't linked" do - issue_creation.execute - expect(errors).to include("You haven't linked your Github account.") - end - - it 'creates an issue if github account is linked' do - user.github_login = 'admin' - user.github_oauth_token = 'oauthtoken' - user.save! - - ErrbitGithubPlugin::IssueTracker.should_receive(:new).and_return( - double(:create_issue => true) - ) - issue_creation.execute - expect(errors).to be_empty - end - end - end -end diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb new file mode 100644 index 0000000..a030856 --- /dev/null +++ b/spec/models/issue_spec.rb @@ -0,0 +1,77 @@ +require "spec_helper" + +describe Issue do + + subject(:issue) { Issue.new(user: user, title: title, body: body) } + + let(:problem) { notice.problem } + let(:notice) { Fabricate(:notice) } + let(:user) { Fabricate(:admin) } + + 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 + expect(issue.save).to be false + end + + it "returns an error" do + issue.save + expect(errors).to include("This app has no issue tracker setup.") + end + end + end + + context "when has no title" do + let(:tracker) { Fabricate(:issue_tracker) } + let(:body) { "barrr" } + + pending "returns an error" do + end + end + + context "when has no body" do + let(:tracker) { Fabricate(:issue_tracker) } + let(:title) { "Foo" } + + pending "returns an error" do + end + end + + context "when app has a issue tracker" do + let(:issue_tracker) { Fabricate(:issue_tracker) } + let(:title) { "Foo" } + let(:body) { "barrr" } + + before do + issue.issue_tracker = issue_tracker + end + + context "#save" do + + it "creates the issue" do + issue.save + expect(issue_tracker.tracker.output.count).to be 1 + end + + it "returns true" do + expect(issue.save).to be true + end + + it "sends the title" do + issue.save + saved_issue = issue_tracker.tracker.output.first + expect(saved_issue.first).to be title + end + + it "sends the body" do + issue.save + saved_issue = issue_tracker.tracker.output.first + expect(saved_issue[1]).to be body + end + end + end +end -- libgit2 0.21.2