Commit ab681ed7c1510bbabe10ae19f04cb992ca9497c4

Authored by Arthur Neves
1 parent 95197da5
Exists in master and in 1 other branch production

Replace issue creation interactor spec with issue_spec

spec/interactors/issue_creation_spec.rb
... ... @@ -1,63 +0,0 @@
1   -require 'spec_helper'
2   -
3   -describe IssueCreation do
4   - subject(:issue_creation) do
5   - IssueCreation.new(problem, user, tracker_name, request)
6   - end
7   -
8   - let(:request) do
9   - double(:request,
10   - :host => 'github.com',
11   - :port => '80',
12   - :scheme => 'http'
13   - )
14   - end
15   - let(:problem) { notice.problem }
16   - let(:notice) { Fabricate(:notice) }
17   - let(:user) { Fabricate(:admin) }
18   - let(:errors) { issue_creation.errors[:base] }
19   - let(:tracker_name) { nil }
20   -
21   - it "adds the error when issue tracker isn't configured" do
22   - issue_creation.execute
23   - expect(errors).to include("This app has no issue tracker setup.")
24   - end
25   -
26   - it 'creates an issue if issue tracker is configured' do
27   - problem.app.issue_tracker = Fabricate(:issue_tracker)
28   - issue_creation.execute
29   - expect(errors).to be_empty
30   - end
31   -
32   - context "with user's github" do
33   - let(:tracker_name) { 'user_github' }
34   -
35   - it "adds the error when repo isn't set up" do
36   - issue_creation.execute
37   - expect(errors).to include("This app doesn't have a GitHub repo set up.")
38   - end
39   -
40   - context 'with repo set up' do
41   - before do
42   - notice.app.update_attribute(:github_repo, 'errbit/errbit')
43   - end
44   -
45   - it "adds the error when github account isn't linked" do
46   - issue_creation.execute
47   - expect(errors).to include("You haven't linked your Github account.")
48   - end
49   -
50   - it 'creates an issue if github account is linked' do
51   - user.github_login = 'admin'
52   - user.github_oauth_token = 'oauthtoken'
53   - user.save!
54   -
55   - ErrbitGithubPlugin::IssueTracker.should_receive(:new).and_return(
56   - double(:create_issue => true)
57   - )
58   - issue_creation.execute
59   - expect(errors).to be_empty
60   - end
61   - end
62   - end
63   -end
spec/models/issue_spec.rb 0 → 100644
... ... @@ -0,0 +1,77 @@
  1 +require "spec_helper"
  2 +
  3 +describe Issue do
  4 +
  5 + subject(:issue) { Issue.new(user: user, title: title, body: body) }
  6 +
  7 + let(:problem) { notice.problem }
  8 + let(:notice) { Fabricate(:notice) }
  9 + let(:user) { Fabricate(:admin) }
  10 +
  11 + context "when app has no issue tracker" do
  12 + let(:title) { "Foo" }
  13 + let(:body) { "barrr" }
  14 + let(:errors) { issue.errors[:base] }
  15 +
  16 + context "#save" do
  17 + it "returns false" do
  18 + expect(issue.save).to be false
  19 + end
  20 +
  21 + it "returns an error" do
  22 + issue.save
  23 + expect(errors).to include("This app has no issue tracker setup.")
  24 + end
  25 + end
  26 + end
  27 +
  28 + context "when has no title" do
  29 + let(:tracker) { Fabricate(:issue_tracker) }
  30 + let(:body) { "barrr" }
  31 +
  32 + pending "returns an error" do
  33 + end
  34 + end
  35 +
  36 + context "when has no body" do
  37 + let(:tracker) { Fabricate(:issue_tracker) }
  38 + let(:title) { "Foo" }
  39 +
  40 + pending "returns an error" do
  41 + end
  42 + end
  43 +
  44 + context "when app has a issue tracker" do
  45 + let(:issue_tracker) { Fabricate(:issue_tracker) }
  46 + let(:title) { "Foo" }
  47 + let(:body) { "barrr" }
  48 +
  49 + before do
  50 + issue.issue_tracker = issue_tracker
  51 + end
  52 +
  53 + context "#save" do
  54 +
  55 + it "creates the issue" do
  56 + issue.save
  57 + expect(issue_tracker.tracker.output.count).to be 1
  58 + end
  59 +
  60 + it "returns true" do
  61 + expect(issue.save).to be true
  62 + end
  63 +
  64 + it "sends the title" do
  65 + issue.save
  66 + saved_issue = issue_tracker.tracker.output.first
  67 + expect(saved_issue.first).to be title
  68 + end
  69 +
  70 + it "sends the body" do
  71 + issue.save
  72 + saved_issue = issue_tracker.tracker.output.first
  73 + expect(saved_issue[1]).to be body
  74 + end
  75 + end
  76 + end
  77 +end
... ...