unfuddle_issues_tracker_spec.rb
4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
require 'spec_helper'
describe IssueTrackers::UnfuddleTracker do
let(:issue_link) { "https://test.unfuddle.com/projects/15/tickets/2436" }
let(:notice) { Fabricate :notice }
let(:tracker) { Fabricate :unfuddle_issues_tracker, :app => notice.app }
let(:problem) { notice.problem }
it "should create an issue on Unfuddle Issues with problem params, and set issue link for problem" do
project_xml = <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<project>
<account-id type="integer">1</account-id>
<archived type="boolean">false</archived>
<assignee-on-resolve>reporter</assignee-on-resolve>
<backup-frequency type="integer">0</backup-frequency>
<close-ticket-simultaneously-default type="boolean">false</close-ticket-simultaneously-default>
<default-ticket-report-id type="integer" nil="true"></default-ticket-report-id>
<description nil="true"></description>
<disk-usage type="integer">27932</disk-usage>
<enable-time-tracking type="boolean">true</enable-time-tracking>
<id type="integer">#{tracker.project_id}</id>
<s3-access-key-id></s3-access-key-id>
<s3-backup-enabled type="boolean">false</s3-backup-enabled>
<s3-bucket-name></s3-bucket-name>
<short-name>test-project</short-name>
<theme>blue</theme>
<ticket-field1-active type="boolean">false</ticket-field1-active>
<ticket-field1-disposition>text</ticket-field1-disposition>
<ticket-field1-title>Field 1</ticket-field1-title>
<ticket-field2-active type="boolean">false</ticket-field2-active>
<ticket-field2-disposition>text</ticket-field2-disposition>
<ticket-field2-title>Field 2</ticket-field2-title>
<ticket-field3-active type="boolean">false</ticket-field3-active>
<ticket-field3-disposition>text</ticket-field3-disposition>
<ticket-field3-title>Field 3</ticket-field3-title>
<title>test-project</title>
<created-at>2011-04-25T09:21:43Z</created-at>
<updated-at>2013-03-08T08:03:02Z</updated-at>
</project>
EOF
ticket_xml =<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<ticket>
<assignee-id type="integer">40</assignee-id>
<component-id type="integer" nil="true"></component-id>
<description nil="true"></description>
<description-format>markdown</description-format>
<due-on type="date" nil="true"></due-on>
<field1-value-id type="integer" nil="true"></field1-value-id>
<field2-value-id type="integer" nil="true"></field2-value-id>
<field3-value-id type="integer" nil="true"></field3-value-id>
<hours-estimate-current type="float">1268.7</hours-estimate-current>
<hours-estimate-initial type="float">0.0</hours-estimate-initial>
<id type="integer">2436</id>
<milestone-id type="integer">78</milestone-id>
<number type="integer">119</number>
<priority>3</priority>
<project-id type="integer">15</project-id>
<reporter-id type="integer">40</reporter-id>
<resolution></resolution>
<resolution-description></resolution-description>
<resolution-description-format>markdown</resolution-description-format>
<severity-id type="integer" nil="true"></severity-id>
<status>reopened</status>
<summary>TEST-ticket.</summary>
<version-id type="integer" nil="true"></version-id>
<created-at>2012-06-27T17:49:06Z</created-at>
<updated-at>2013-03-07T16:04:05Z</updated-at>
</ticket>
EOF
stub_request(:get, "https://#{tracker.username}:#{tracker.password}@test.unfuddle.com/api/v1/projects/#{tracker.project_id}.xml").
to_return(:status => 200, :body => project_xml, :headers => {})
stub_request(:post, "https://#{tracker.username}:#{tracker.password}@test.unfuddle.com/api/v1/projects/#{tracker.project_id}/tickets.xml").
to_return(:status => 200, :body => ticket_xml, :headers => {})
problem.app.issue_tracker.create_issue(problem)
problem.reload
requested = have_requested(:post,"https://#{tracker.username}:#{tracker.password}@test.unfuddle.com/api/v1/projects/#{tracker.project_id}/tickets.xml" )
WebMock.should requested.with(:title => /[production][foo#bar] FooError: Too Much Bar/)
WebMock.should requested.with(:content => /See this exception on Errbit/)
problem.issue_link.should == issue_link
problem.issue_type.should == IssueTrackers::UnfuddleTracker::Label
end
end