taskmapper-redmine 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.5.1
@@ -23,6 +23,10 @@ module TaskMapper::Provider
23
23
  end
24
24
  end
25
25
 
26
+ def save
27
+ raise TaskMapper::Exception.new "Redmine API doesn't support comment updates"
28
+ end
29
+
26
30
  def self.find_by_id(project_id, ticket_id, id)
27
31
  self.search(ticket_id).select { |journal| journal.id == id.to_i }.first
28
32
  end
@@ -51,5 +55,14 @@ module TaskMapper::Provider
51
55
  journal
52
56
  end
53
57
  end
58
+
59
+ class Net::HTTP
60
+ def send(*args)
61
+ puts "request: #{args.inspect}"
62
+ resp = super
63
+ puts "response: #{resp.inspect}"
64
+ resp
65
+ end
66
+ end
54
67
  end
55
68
  end
@@ -5,67 +5,82 @@ describe TaskMapper::Provider::Redmine::Comment do
5
5
  let(:project_id) { 1 }
6
6
  let(:ticket_id) { 1 }
7
7
  let(:comment_id) { 1 }
8
- let(:klass) { TaskMapper::Provider::Redmine::Comment }
9
- let(:taskmapper) { TaskMapper.new :redmine, :server => 'http://demo.redmine.org/', :token => 'abcdefghijk' }
10
- let(:project) { taskmapper.project(project_id) }
11
-
12
- before(:all) do
13
- headers = {'X-Redmine-API-Key' => 'abcdefghijk', 'Accept' => 'application/xml'}
14
- headers_post_put = {'X-Redmine-API-Key' => 'abcdefghijk', 'Content-Type' => 'application/xml'}
15
- ActiveResource::HttpMock.respond_to do |mock|
16
- mock.get '/projects.xml', headers, fixture_for('projects'), 200
17
- mock.get '/projects/1.xml', headers, fixture_for('projects/test-repo12'), 200
18
- mock.get '/issues.xml?project_id=1', headers, fixture_for('issues'), 200
19
- mock.get '/issues.xml', headers, fixture_for('issues'), 200
20
- mock.get '/issues/1.xml?include=journals', headers, fixture_for('issues/1'), 200
21
- mock.put '/issues/1.xml', headers_post_put, '', 200
22
- mock.post '/issues.xml', headers_post_put, '', 200
23
- end
24
- end
8
+ let(:comment_class) { TaskMapper::Provider::Redmine::Comment }
9
+ let(:tm) { TaskMapper.new :redmine, :server => 'http://demo.redmine.org/', :token => 'abcdefghijk' }
10
+ let(:headers_auth) { {'X-Redmine-API-Key' => 'abcdefghijk' } }
11
+ let(:headers_get) { headers_auth.merge('Accept' => 'application/xml') }
12
+ let(:headers_post) { headers_auth.merge('Content-Type' => 'application/xml') }
25
13
 
26
14
  before(:each) do
27
- @ticket = project.ticket(ticket_id)
28
15
  end
29
16
 
30
- it "should be able to load all comments" do
31
- comments = @ticket.comments
32
- comments.size.should eq(2)
33
- comments.should be_an_instance_of(Array)
34
- comments.first.should be_an_instance_of(klass)
35
- end
36
-
37
- it "should be able to load all comments based on 'id's" do
38
- comments = @ticket.comments([comment_id])
39
- comments.should be_an_instance_of(Array)
40
- comments.first.should be_an_instance_of(klass)
41
- comments.first.id.should == comment_id
42
- end
43
-
44
- it "should be able to load all comments based on attributes" do
45
- comments = @ticket.comments(:id => comment_id)
46
- comments.should be_an_instance_of(Array)
47
- comments.first.should be_an_instance_of(klass)
48
- end
49
-
50
- it "should be able to load a comment based on id" do
51
- comment = @ticket.comment(comment_id)
52
- comment.should be_an_instance_of(klass)
53
- comment.id.should == comment_id
54
- end
55
-
56
- it "should be able to load a comment based on attributes" do
57
- comment = @ticket.comment(:id => comment_id)
58
- comment.should be_an_instance_of(klass)
59
- end
60
-
61
- it "should return the class" do
62
- @ticket.comment.should == klass
17
+ describe "Retrieving comments" do
18
+ before(:each) do
19
+ ActiveResource::HttpMock.respond_to do |mock|
20
+ mock.get '/projects/1.xml', headers_get, fixture_for('projects/test-repo12'), 200
21
+ mock.get '/issues/1.xml?include=journals', headers_get, fixture_for('issues/1'), 200
22
+ end
23
+ end
24
+ let(:project) { tm.project project_id }
25
+ let(:ticket) { project.ticket ticket_id }
26
+
27
+ context "when #comments" do
28
+ subject { ticket.comments }
29
+ it { should be_an_instance_of Array }
30
+ it { should have(2).items }
31
+ end
32
+
33
+ context "when #comments with a list of id's" do
34
+ subject { ticket.comments [comment_id] }
35
+ it { should be_an_instance_of Array }
36
+ it { should have(1).items }
37
+ end
38
+
39
+ context "when #comments with a comment attribute" do
40
+ subject { ticket.comments :id => comment_id }
41
+ it { should be_an_instance_of Array }
42
+ it { should have(1).items }
43
+ end
44
+
45
+ describe "Retrieve a single comment" do
46
+ context "when #comment with an id" do
47
+ subject { ticket.comment comment_id }
48
+ it { should be_an_instance_of comment_class }
49
+ end
50
+
51
+ context "when #comment with an attribute" do
52
+ subject { ticket.comment :id => comment_id }
53
+ it { should be_an_instance_of comment_class }
54
+ end
55
+ end
63
56
  end
64
-
65
- it "should be able to create a comment for a given task" do
66
- comment = @ticket.comment!(:body => 'hello there boys and girls')
67
- comment.should be_an_instance_of(klass)
68
- comment.ticket_id.should_not be_nil
69
- comment.ticket_id.should_not == 0
57
+
58
+ describe "Create and update" do
59
+ before(:each) do
60
+ ActiveResource::HttpMock.respond_to do |mock|
61
+ mock.get '/projects/1.xml', headers_get, fixture_for('projects/test-repo12'), 200
62
+ mock.get '/issues/1.xml?include=journals', headers_get, fixture_for('issues/1'), 200
63
+ mock.put '/issues/1.xml', headers_post, '', 200
64
+ end
65
+ end
66
+ let(:project) { tm.project project_id }
67
+ let(:ticket) { project.ticket ticket_id }
68
+
69
+ context "when #comment!" do
70
+ subject { ticket.comment! :body => 'hello there boys and girls' }
71
+ it { should be_an_instance_of comment_class }
72
+ context "when #ticket_id" do
73
+ subject { ticket.comment!(:body => 'hello there boys and girls').ticket_id }
74
+ it { should_not be_nil }
75
+ it { should_not be_zero }
76
+ end
77
+ end
78
+
79
+ context "when #save" do
80
+ let(:comment) { ticket.comment(comment_id) }
81
+ let(:changed_comment) { comment.body = 'change'; comment }
82
+ subject { lambda { changed_comment.save } }
83
+ it { should raise_error "Redmine API doesn't support comment updates" }
84
+ end
70
85
  end
71
86
  end
data/spec/tickets_spec.rb CHANGED
@@ -1,64 +1,81 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe TaskMapper::Provider::Redmine::Ticket do
4
- before(:each) do
5
- headers = {'X-Redmine-API-Key' => 'abcdefghijk', 'Accept' => 'application/xml'}
6
- headers_post_put = {'X-Redmine-API-Key' => 'abcdefghijk', 'Content-Type' => 'application/xml'}
7
- @project_id = 1
8
- ActiveResource::HttpMock.respond_to do |mock|
9
- mock.get '/projects.xml', headers, fixture_for('projects'), 200
10
- mock.get '/projects/1.xml', headers, fixture_for('projects/test-repo12'), 200
11
- mock.get '/issues.xml?include=journals&project_id=1', headers, fixture_for('issues'), 200
12
- mock.get '/issues.xml', headers, fixture_for('issues'), 200
13
- mock.get '/issues/1.xml?include=journals', headers, fixture_for('issues/1'), 200
14
- mock.put '/issues/1.xml', headers_post_put, '', 200
15
- mock.post '/issues.xml', headers_post_put, '', 200
4
+ let(:headers_auth) { {'X-Redmine-API-Key' => 'abcdefghijk'} }
5
+ let(:headers_get) { headers_auth.merge('Accept' => 'application/xml') }
6
+ let(:headers_post_put) { headers_auth.merge('Content-Type' => 'application/xml') }
7
+ let(:project_id) { 1 }
8
+ let(:tm) { TaskMapper.new :redmine, :server => 'http://demo.redmine.org/', :token => 'abcdefghijk' }
9
+ let(:ticket_class) { TaskMapper::Provider::Redmine::Ticket }
10
+ let(:ticket_id) { 1 }
11
+
12
+ describe "Retrieving tickets" do
13
+ before(:each) do
14
+ ActiveResource::HttpMock.respond_to do |mock|
15
+ mock.get '/projects/1.xml', headers_get, fixture_for('projects/test-repo12'), 200
16
+ mock.get '/issues.xml?include=journals&project_id=1', headers_get, fixture_for('issues'), 200
17
+ mock.get '/issues/1.xml?include=journals', headers_get, fixture_for('issues/1'), 200
18
+ end
16
19
  end
17
-
18
- @taskmapper = TaskMapper.new :redmine, :server => 'http://demo.redmine.org/', :token => 'abcdefghijk'
19
- @project = @taskmapper.project(@project_id)
20
- @klass = TaskMapper::Provider::Redmine::Ticket
21
- end
20
+ let(:project) { tm.project project_id }
22
21
 
23
- it "should be able to load all tickets" do
24
- @project.tickets.should be_an_instance_of(Array)
25
- @project.tickets.first.should be_an_instance_of(@klass)
26
- end
22
+ context "when #tickets" do
23
+ subject { project.tickets }
24
+ it { should be_an_instance_of Array }
27
25
 
28
- it "should be able to load all tickets based on an array of id's" do
29
- @tickets = @project.tickets([1])
30
- @tickets.should be_an_instance_of(Array)
31
- @tickets.first.should be_an_instance_of(@klass)
32
- @tickets.first.title.should == 'test-issue'
33
- end
26
+ context "when #tickets.first" do
27
+ subject { project.tickets.first }
28
+ it { should be_an_instance_of ticket_class }
29
+ end
30
+ end
34
31
 
35
- it "should be able to load all tickets based on attributes" do
36
- @tickets = @project.tickets(:id => 1)
37
- @tickets.should be_an_instance_of(Array)
38
- @tickets.first.should be_an_instance_of(@klass)
39
- @tickets.first.title.should == 'test-issue'
40
- end
32
+ context "when #tickets with an array of id's" do
33
+ subject { project.tickets [ticket_id] }
34
+ it { should be_an_instance_of Array }
35
+ end
36
+
37
+ context "when #tickets with attributes" do
38
+ subject { project.tickets :id => ticket_id }
39
+ it { should be_an_instance_of Array }
40
+ end
41
41
 
42
- it "should return the ticket class" do
43
- @project.ticket.should == @klass
42
+ describe "Retrieving a single ticket" do
43
+ context "when #ticket with an id" do
44
+ subject { project.ticket ticket_id }
45
+ it { should be_an_instance_of ticket_class }
46
+ end
47
+
48
+ context "when #ticket with attributes" do
49
+ subject { project.ticket :id => ticket_id }
50
+ it { should be_an_instance_of ticket_class }
51
+ end
52
+ end
44
53
  end
45
54
 
46
- it "should be able to load a single ticket" do
47
- @ticket = @project.ticket(1)
48
- @ticket.should be_an_instance_of(@klass)
49
- @ticket.title.should == 'test-issue'
55
+ describe "Create and Update" do
56
+ before(:each) do
57
+ ActiveResource::HttpMock.respond_to do |mock|
58
+ mock.get '/projects/1.xml', headers_get, fixture_for('projects/test-repo12'), 200
59
+ mock.post '/issues.xml', headers_post_put, '', 200
60
+ end
61
+ end
62
+ let(:project) { tm.project project_id }
63
+
64
+ context "when #ticket!" do
65
+ subject { project.ticket! :title => 'Ticket #12', :description => 'Body'}
66
+ it { should be_an_instance_of ticket_class }
67
+ end
68
+
69
+ context "when #save" do
70
+ subject { project.ticket ticket_id }
71
+ end
50
72
  end
51
73
 
52
74
  it "should be able to update and save a ticket" do
75
+ pending
53
76
  @ticket = @project.ticket(1)
54
77
  @ticket.description = 'hello'
55
78
  @ticket.save.should == true
56
79
  end
57
80
 
58
- it "should be able to create a ticket" do
59
- @ticket = @project.ticket!(:title => 'Ticket #12', :description => 'Body')
60
- @ticket.should be_an_instance_of(@klass)
61
- @ticket.project_id.should_not be_nil
62
- end
63
-
64
81
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "taskmapper-redmine"
8
- s.version = "0.5.0"
8
+ s.version = "0.5.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rafael George"]
12
- s.date = "2012-06-20"
12
+ s.date = "2012-07-04"
13
13
  s.description = "Allows taskmapper to interact with Your System."
14
14
  s.email = "rafael@hybridgroup.com"
15
15
  s.extra_rdoc_files = [
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
48
48
  ]
49
49
  s.homepage = "http://github.com/hybridgroup/taskmapper-redmine"
50
50
  s.require_paths = ["lib"]
51
- s.rubygems_version = "1.8.17"
51
+ s.rubygems_version = "1.8.24"
52
52
  s.summary = "taskmapper Provider for Redmine"
53
53
 
54
54
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,82 +1,104 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: taskmapper-redmine
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
4
5
  prerelease:
5
- version: 0.5.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Rafael George
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-06-20 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: taskmapper
17
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  none: false
19
- requirements:
18
+ requirements:
20
19
  - - ~>
21
- - !ruby/object:Gem::Version
22
- version: "0.8"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.8'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.8'
30
+ - !ruby/object:Gem::Dependency
27
31
  name: rspec
28
- requirement: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
29
33
  none: false
30
- requirements:
34
+ requirements:
31
35
  - - ~>
32
- - !ruby/object:Gem::Version
33
- version: "2.8"
36
+ - !ruby/object:Gem::Version
37
+ version: '2.8'
34
38
  type: :development
35
39
  prerelease: false
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '2.8'
46
+ - !ruby/object:Gem::Dependency
38
47
  name: jeweler
39
- requirement: &id003 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
40
49
  none: false
41
- requirements:
50
+ requirements:
42
51
  - - ~>
43
- - !ruby/object:Gem::Version
44
- version: "1.6"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.6'
45
54
  type: :development
46
55
  prerelease: false
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ - !ruby/object:Gem::Dependency
49
63
  name: simplecov
50
- requirement: &id004 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
51
65
  none: false
52
- requirements:
66
+ requirements:
53
67
  - - ~>
54
- - !ruby/object:Gem::Version
55
- version: "0.5"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.5'
56
70
  type: :development
57
71
  prerelease: false
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '0.5'
78
+ - !ruby/object:Gem::Dependency
60
79
  name: rcov
61
- requirement: &id005 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
62
81
  none: false
63
- requirements:
82
+ requirements:
64
83
  - - ~>
65
- - !ruby/object:Gem::Version
66
- version: "1.0"
84
+ - !ruby/object:Gem::Version
85
+ version: '1.0'
67
86
  type: :development
68
87
  prerelease: false
69
- version_requirements: *id005
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.0'
70
94
  description: Allows taskmapper to interact with Your System.
71
95
  email: rafael@hybridgroup.com
72
96
  executables: []
73
-
74
97
  extensions: []
75
-
76
- extra_rdoc_files:
98
+ extra_rdoc_files:
77
99
  - LICENSE
78
100
  - README.md
79
- files:
101
+ files:
80
102
  - .rbenv-gemsets
81
103
  - .rvmrc
82
104
  - .travis.yml
@@ -107,30 +129,29 @@ files:
107
129
  - ticketmaster-redmine.gemspec
108
130
  homepage: http://github.com/hybridgroup/taskmapper-redmine
109
131
  licenses: []
110
-
111
132
  post_install_message:
112
133
  rdoc_options: []
113
-
114
- require_paths:
134
+ require_paths:
115
135
  - lib
116
- required_ruby_version: !ruby/object:Gem::Requirement
136
+ required_ruby_version: !ruby/object:Gem::Requirement
117
137
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: "0"
122
- required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ segments:
143
+ - 0
144
+ hash: 1055099377
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
146
  none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- version: "0"
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
128
151
  requirements: []
129
-
130
152
  rubyforge_project:
131
- rubygems_version: 1.8.17
153
+ rubygems_version: 1.8.24
132
154
  signing_key:
133
155
  specification_version: 3
134
156
  summary: taskmapper Provider for Redmine
135
157
  test_files: []
136
-