ticketmaster-kanbanpad 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{rakefile → Rakefile} +2 -1
- data/VERSION +1 -1
- data/lib/kanbanpad/kanbanpad-api.rb +13 -8
- data/lib/provider/project.rb +16 -10
- data/lib/provider/ticket.rb +17 -5
- data/spec/fixtures/tasks.json +1 -9
- data/spec/fixtures/tasks.xml +2 -0
- data/spec/fixtures/tasks/4cd428c496f0734eef000007.json +1 -1
- data/spec/fixtures/tasks/4cd428c496f0734eef000007.xml +2 -0
- data/spec/fixtures/tasks/4cd428c496f0734eef000008.json +1 -3
- data/spec/fixtures/tasks/4cd428c496f0734eef000008.xml +3 -1
- data/spec/fixtures/tasks/4dc31c4c9bd0ff6c3700004e.json +1 -1
- data/spec/project_comments_spec.rb +37 -0
- data/spec/{comments_spec.rb → ticket_comments_spec.rb} +5 -8
- data/spec/tickets_spec.rb +32 -9
- data/ticketmaster-kanbanpad.gemspec +7 -6
- metadata +25 -24
data/{rakefile → Rakefile}
RENAMED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
@@ -28,7 +28,7 @@ module KanbanpadAPI
|
|
28
28
|
@resources ||= []
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
class Base < ActiveResource::Base
|
33
33
|
self.site = "https://www.kanbanpad.com/api/v1/"
|
34
34
|
self.format = :json
|
@@ -37,7 +37,7 @@ module KanbanpadAPI
|
|
37
37
|
super
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
# Find projects
|
42
42
|
#
|
43
43
|
# KanbanpadAPI::Project.find(:all) # find all projects for the current account.
|
@@ -53,13 +53,13 @@ module KanbanpadAPI
|
|
53
53
|
#
|
54
54
|
# KanbanpadAPI::Task.finished('7e2cad4b3cbe5954950c')
|
55
55
|
#
|
56
|
-
|
56
|
+
|
57
57
|
class Project < Base
|
58
58
|
|
59
59
|
def tasks(slug, options = {})
|
60
60
|
Task.find(:all, :params => options.update(:project_id => slug, :backlog => 'yes', :finished => 'yes'))
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
def steps(options = {})
|
64
64
|
Step.find(:all, :params => options.update(:project_id => slug))
|
65
65
|
end
|
@@ -69,7 +69,8 @@ module KanbanpadAPI
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
class
|
72
|
+
class TaskList < Base
|
73
|
+
self.element_name = 'task'
|
73
74
|
self.site += 'projects/:project_id/'
|
74
75
|
|
75
76
|
def self.finished(project_id, options = {})
|
@@ -85,6 +86,10 @@ module KanbanpadAPI
|
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
89
|
+
class Task < Base
|
90
|
+
self.site += 'projects/:project_id/steps/:step_id/'
|
91
|
+
end
|
92
|
+
|
88
93
|
class Step < Base
|
89
94
|
self.site += 'projects/:project_id/'
|
90
95
|
|
@@ -92,7 +97,7 @@ module KanbanpadAPI
|
|
92
97
|
Task.find(:all, :params => options.merge(prefix_options))
|
93
98
|
end
|
94
99
|
end
|
95
|
-
|
100
|
+
|
96
101
|
class ProjectComment < Base
|
97
102
|
self.site += 'projects/:project_id/'
|
98
103
|
self.element_name = 'comment'
|
@@ -111,11 +116,11 @@ module KanbanpadAPI
|
|
111
116
|
class TaskCommentCreator < Base
|
112
117
|
self.site += 'projects/:project_id/steps/:step_id/tasks/:task_id'
|
113
118
|
self.element_name = 'comment'
|
114
|
-
|
119
|
+
|
115
120
|
def self.element_path(id, prefix_options = {}, query_options = nil)
|
116
121
|
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
|
117
122
|
"#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
|
118
123
|
end
|
119
124
|
|
120
125
|
end
|
121
|
-
|
126
|
+
end
|
data/lib/provider/project.rb
CHANGED
@@ -6,7 +6,7 @@ module TicketMaster::Provider
|
|
6
6
|
class Project < TicketMaster::Provider::Base::Project
|
7
7
|
# declare needed overloaded methods here
|
8
8
|
API = KanbanpadAPI::Project
|
9
|
-
|
9
|
+
COMMENT_API = KanbanpadAPI::ProjectComment
|
10
10
|
|
11
11
|
def initialize(*object)
|
12
12
|
if object.first
|
@@ -56,17 +56,23 @@ module TicketMaster::Provider
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
def comment!(
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
project_comment = PROJECT_COMMENT_API.new(options.first)
|
64
|
-
project_comment.save
|
65
|
-
comment = Comment.new(project_comment.attributes)
|
66
|
-
end
|
59
|
+
def comment!(attributes)
|
60
|
+
comment = create_comment attributes
|
61
|
+
Comment.new(comment.attributes.merge :project_id => id) if comment.save
|
67
62
|
end
|
68
63
|
|
69
|
-
|
64
|
+
def comments
|
65
|
+
find_comments.map { |c| Comment.new c.attributes }
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
def find_comments
|
70
|
+
COMMENT_API.find(:all, :params => { :project_id => id })
|
71
|
+
end
|
72
|
+
|
73
|
+
def create_comment(attributes)
|
74
|
+
COMMENT_API.new(attributes.merge(:project_id => id))
|
75
|
+
end
|
70
76
|
end
|
71
77
|
end
|
72
78
|
end
|
data/lib/provider/ticket.rb
CHANGED
@@ -3,21 +3,24 @@ module TicketMaster::Provider
|
|
3
3
|
# Ticket class for ticketmaster-kanbanpad
|
4
4
|
#
|
5
5
|
class Ticket < TicketMaster::Provider::Base::Ticket
|
6
|
-
API = KanbanpadAPI::
|
6
|
+
API = KanbanpadAPI::TaskList
|
7
7
|
STEP_API = KanbanpadAPI::Step
|
8
8
|
TASK_COMMENT_API = KanbanpadAPI::TaskCommentCreator
|
9
|
-
|
9
|
+
|
10
10
|
def initialize(*object)
|
11
11
|
if object.first
|
12
12
|
object = object.first
|
13
|
+
@system_data = {:client => object}
|
13
14
|
unless object.is_? Hash
|
14
15
|
hash = {:id => object.id,
|
15
16
|
:finished => object.finished,
|
17
|
+
:title => object.title,
|
16
18
|
:backlog => object.backlog,
|
17
19
|
:assigned_to => object.assigned_to,
|
18
20
|
:wip => object.wip,
|
19
21
|
:project_slug => object.project_slug,
|
20
|
-
:step_id => object.step_id
|
22
|
+
:step_id => object.step_id,
|
23
|
+
:urgent => object.urgent}
|
21
24
|
else
|
22
25
|
hash = object
|
23
26
|
end
|
@@ -25,6 +28,10 @@ module TicketMaster::Provider
|
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
31
|
+
def priority
|
32
|
+
self.urgent ? "Urgent" : "Not Urgent"
|
33
|
+
end
|
34
|
+
|
28
35
|
def status
|
29
36
|
return "Finished" if self.finished
|
30
37
|
return "Backlog" if self.backlog
|
@@ -65,6 +72,11 @@ module TicketMaster::Provider
|
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
75
|
+
def save
|
76
|
+
task = KanbanpadAPI::TaskList.find(:all, :params => {:project_id => self.project_id}).select { |task| task.id == self.id }.first
|
77
|
+
task.update_attributes(:title => self.title, :project_id => self.project_id)
|
78
|
+
end
|
79
|
+
|
68
80
|
def self.find_by_attributes(project_id, attributes = {})
|
69
81
|
self.search_by_attribute(self.search(project_id), attributes)
|
70
82
|
end
|
@@ -98,10 +110,10 @@ module TicketMaster::Provider
|
|
98
110
|
options.first.merge!(:project_id => self.project_id,
|
99
111
|
:task_id => self.id,
|
100
112
|
:step_id => self.step_id)
|
101
|
-
|
113
|
+
|
102
114
|
task_comment = TASK_COMMENT_API.new(options.first)
|
103
115
|
task_comment.save
|
104
|
-
comment = Comment.new(task_comment.attributes)
|
116
|
+
comment = Comment.new(task_comment.attributes.merge :ticket_id => id)
|
105
117
|
end
|
106
118
|
end
|
107
119
|
|
data/spec/fixtures/tasks.json
CHANGED
@@ -1,10 +1,2 @@
|
|
1
|
-
[{"id":"4cd428c496f0734eef000007","title":"
|
2
|
-
"note":"","wip":"false","project_slug":"7e2cad4b3cbe5954950c","step_id":"4dc312f49bd0ff6c37000044",
|
3
|
-
"project_id":"7e2cad4b3cbe5954950c","backlog":"false","finished":"false", "created_at":"2011-05-07T02:59:10Z","updated_at":"2011-12-17T00:45:07Z"},
|
4
|
-
{"id":"4cd428c496f0734eef000008","title":"Fix issue","assigned_to":"james",
|
5
|
-
"note":"","wip":"false","project_slug":"7e2cad4b3cbe5954950c","step_id":"4dc312f49bd0ff6c37000044",
|
6
|
-
"project_id":"7e2cad4b3cbe5954950c","backlog":"false","finished":"true","created_at":"2011-05-07T02:59:10Z","updated_at":"2011-12-17T00:45:07Z"}
|
7
|
-
]
|
1
|
+
[{"assigned_to":[],"backlog":false,"comments_total":0,"created_at":"2011-05-05T21:53:16Z","finished":false,"id":"4cd428c496f0734eef000007","note":"","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":2,"title":"Task","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false},{"assigned_to":[],"backlog":false,"comments_total":1,"created_at":"2011-05-07T02:46:03Z","finished":false,"id":"4dc4b26aa6db681276000013","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":3,"title":"VAMOS A VER SI ES VERDAD","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false},{"assigned_to":[],"backlog":false,"comments_total":0,"created_at":"2011-05-07T02:55:09Z","finished":false,"id":"4dc4b48da6db68138a00000b","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":4,"title":"ANOTHER TASK","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false},{"assigned_to":[],"backlog":false,"comments_total":0,"created_at":"2011-05-07T03:31:23Z","finished":false,"id":"4dc4bd0ba6db681276000017","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":6,"title":"newer task","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false},{"assigned_to":[],"backlog":false,"comments_total":2,"created_at":"2011-05-07T03:33:34Z","finished":false,"id":"4dc4bd8e88de2c119600000c","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":7,"title":"a more newer task","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false}]
|
8
2
|
|
9
|
-
|
10
|
-
|
data/spec/fixtures/tasks.xml
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
<tasks type="array">
|
3
3
|
<task>
|
4
4
|
<id>4cd428c496f0734eef000007</id>
|
5
|
+
<task_id>1</task_id>
|
5
6
|
<title>Configure app</title>
|
6
7
|
<assigned_to>jhon</assigned_to>
|
7
8
|
<note></note>
|
@@ -12,6 +13,7 @@
|
|
12
13
|
</task>
|
13
14
|
<task>
|
14
15
|
<id>4cd428c496f0734eef000008</id>
|
16
|
+
<task_id>2</task_id>
|
15
17
|
<title>Fix issue</title>
|
16
18
|
<assigned_to>james</assigned_to>
|
17
19
|
<note></note>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
{"id":"4cd428c496f0734eef000007","title":"Fix UI detail","assigned_to":"
|
1
|
+
{"id":"4cd428c496f0734eef000007","title":"Fix UI detail","assigned_to":["Rafael George"],"task_id":2,"urgent":false,
|
2
2
|
"note":"Lorem ipsum dolor sit amet, consectetur adipiscing elit.","wip":"false","project_slug":"be74b643b64e3dc79aa0",
|
3
3
|
"project_id":"be74b643b64e3dc79aa0","backlog":"false","finished":"false", "step_id":"4dc312f49bd0ff6c37000040", "created_at":"2011-05-07T02:59:10Z","updated_at":"2011-12-17T00:45:07Z"}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
2
|
<task>
|
3
3
|
<id>4cd428c496f0734eef000007</id>
|
4
|
+
<task_id>1</task_id>
|
4
5
|
<title>Fix UI detail</title>
|
6
|
+
<urgent>false</urgent>
|
5
7
|
<assigned_to>jhon</assigned_to>
|
6
8
|
<note>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</note>
|
7
9
|
<wip type="boolean">false</wip>
|
@@ -1,3 +1 @@
|
|
1
|
-
{"id":"4cd428c496f0734eef000007","title":"
|
2
|
-
"wip":"false","project_slug":"be74b643b64e3dc79aa0",
|
3
|
-
"project_id":"be74b643b64e3dc79aa0","backlog":"false","finished":"false", "step_id":"4dc312f49bd0ff6c37000040", "created_at":"2011-05-07T02:59:10Z","updated_at":"2011-12-17T00:45:07Z"}
|
1
|
+
{"assigned_to":[],"backlog":false,"comments_total":0,"created_at":"2011-05-05T21:53:16Z","finished":false,"id":"4cd428c496f0734eef000007","note":"","project_slug":"1c36637a4508065059b3","step_id":"4dc312f49bd0ff6c37000040","task_id":2,"title":"Task","updated_at":"2011-07-15T19:44:04Z","urgent":false,"wip":false}
|
@@ -4,8 +4,10 @@
|
|
4
4
|
<title>Fix bug</title>
|
5
5
|
<assigned_to>chris</assigned_to>
|
6
6
|
<note></note>
|
7
|
+
<task_id>2</task_id>
|
8
|
+
<urgent>false</urgent>
|
7
9
|
<wip type="boolean">false</wip>
|
8
10
|
<project_slug>be74b643b64e3dc79aa0</project_slug>
|
9
11
|
<backlog>false</backlog>
|
10
12
|
<finished>true</finished>
|
11
|
-
</task>
|
13
|
+
</task>
|
@@ -1 +1 @@
|
|
1
|
-
{"assigned_to":[],"created_at":"2011-05-05T21:53:16Z","title":"Task","updated_at":"2011-05-06T18:30:39Z","urgent":false,"id":"4dc31c4c9bd0ff6c3700004e","step_id":"4dc312f49bd0ff6c37000040","note":"","wip":false,"project_slug":"1c36637a4508065059b3","finished":false,"backlog":false, "step_id":"4dc312f49bd0ff6c37000044"}
|
1
|
+
{"assigned_to":[],"created_at":"2011-05-05T21:53:16Z","title":"Task","updated_at":"2011-05-06T18:30:39Z","urgent":false,"task_id":2,"id":"4dc31c4c9bd0ff6c3700004e","step_id":"4dc312f49bd0ff6c37000040","note":"","wip":false,"project_slug":"1c36637a4508065059b3","finished":false,"backlog":false, "step_id":"4dc312f49bd0ff6c37000044"}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe TicketMaster::Provider::Kanbanpad::Comment do
|
4
|
+
before(:all) do
|
5
|
+
headers = {'Authorization' => 'Basic YWJjQGcuY29tOmllODIzZDYzanM='}
|
6
|
+
wheaders = headers.merge('Accept' => 'application/json')
|
7
|
+
pheaders = headers.merge("Content-Type" => "application/json")
|
8
|
+
|
9
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
10
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0.json', wheaders, fixture_for('projects/be74b643b64e3dc79aa0'), 200
|
11
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/comments.json', wheaders, fixture_for('comments'), 200
|
12
|
+
mock.post '/api/v1/projects/be74b643b64e3dc79aa0/comments.json', pheaders, fixture_for('comments/4ef2719bf17365000110df9e'), 200
|
13
|
+
end
|
14
|
+
@project_id = 'be74b643b64e3dc79aa0'
|
15
|
+
@ticket_id = '4cd428c496f0734eef000007'
|
16
|
+
@comment_id = '4d684e6f973c7d5648000009'
|
17
|
+
end
|
18
|
+
|
19
|
+
before(:each) do
|
20
|
+
@ticketmaster = TicketMaster.new(:kanbanpad, :username => 'abc@g.com', :password => 'ie823d63js')
|
21
|
+
@project = @ticketmaster.project(@project_id)
|
22
|
+
@klass = TicketMaster::Provider::Kanbanpad::Comment
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should be able to load all comments" do
|
26
|
+
comments = @project.comments
|
27
|
+
comments.should be_instance_of Array
|
28
|
+
comments.first.should be_instance_of TicketMaster::Provider::Kanbanpad::Comment
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should be able to create a comment" do
|
32
|
+
comment = @project.comment!(:body => "New Project Comment")
|
33
|
+
comment.should be_an_instance_of(@klass)
|
34
|
+
comment.project_id.should be_a String
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -13,7 +13,6 @@ describe TicketMaster::Provider::Kanbanpad::Comment do
|
|
13
13
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000007.json', wheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
14
14
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000007/comments.json', wheaders, fixture_for('comments'), 200
|
15
15
|
mock.post '/api/v1/projects/be74b643b64e3dc79aa0/steps/4dc312f49bd0ff6c37000040/tasks/4cd428c496f0734eef000007/comments.json', pheaders, fixture_for('comments/4ef2719bf17365000110df9e'), 200
|
16
|
-
mock.post '/api/v1/projects/be74b643b64e3dc79aa0/comments.json', pheaders, fixture_for('comments/4ef2719bf17365000110df9e'), 200
|
17
16
|
end
|
18
17
|
@project_id = 'be74b643b64e3dc79aa0'
|
19
18
|
@ticket_id = '4cd428c496f0734eef000007'
|
@@ -46,13 +45,11 @@ describe TicketMaster::Provider::Kanbanpad::Comment do
|
|
46
45
|
end
|
47
46
|
|
48
47
|
it "should be able to create a comment for a given task" do
|
49
|
-
|
50
|
-
|
48
|
+
comment = @ticket.comment!(:body => "New Ticket")
|
49
|
+
comment.should be_an_instance_of(@klass)
|
50
|
+
|
51
|
+
comment.ticket_id.should_not be_nil
|
52
|
+
comment.ticket_id.should_not == 0
|
51
53
|
end
|
52
54
|
|
53
|
-
it "should be able to create a comment for a given project" do
|
54
|
-
@comment = @project.comment!(:body => "New Project Comment")
|
55
|
-
@comment.should be_an_instance_of(@klass)
|
56
|
-
end
|
57
|
-
|
58
55
|
end
|
data/spec/tickets_spec.rb
CHANGED
@@ -14,7 +14,9 @@ describe TicketMaster::Provider::Kanbanpad::Ticket do
|
|
14
14
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000008.json', wheaders, fixture_for('tasks/4cd428c496f0734eef000008'), 200
|
15
15
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/steps/4dc312f49bd0ff6c37000040.json', wheaders, fixture_for('steps/4dc312f49bd0ff6c37000040'), 200
|
16
16
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4dc31c4c9bd0ff6c3700004e.json', wheaders, fixture_for('tasks/4dc31c4c9bd0ff6c3700004e'), 200
|
17
|
+
mock.put '/api/v1/projects/be74b643b64e3dc79aa0/steps/4dc312f49bd0ff6c37000040/tasks/4cd428c496f0734eef000007.json', pheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
17
18
|
mock.post '/api/v1/projects/be74b643b64e3dc79aa0/tasks.json', pheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
19
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/steps/4dc312f49bd0ff6c37000040/tasks/4cd428c496f0734eef000007.json', wheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
18
20
|
end
|
19
21
|
@project_id = 'be74b643b64e3dc79aa0'
|
20
22
|
@ticket_id = '4cd428c496f0734eef000007'
|
@@ -33,7 +35,7 @@ describe TicketMaster::Provider::Kanbanpad::Ticket do
|
|
33
35
|
@project.tickets.should be_an_instance_of(Array)
|
34
36
|
@project.tickets.first.should be_an_instance_of(@klass)
|
35
37
|
end
|
36
|
-
|
38
|
+
|
37
39
|
it "should be able to load all tickets based on an array of ids" do
|
38
40
|
@tickets = @project.tickets([@ticket_id])
|
39
41
|
@tickets.should be_an_instance_of(Array)
|
@@ -41,42 +43,63 @@ describe TicketMaster::Provider::Kanbanpad::Ticket do
|
|
41
43
|
@tickets.first.id.should == '4cd428c496f0734eef000007'
|
42
44
|
end
|
43
45
|
|
44
|
-
it "should retrieve a ticket without notes" do
|
46
|
+
it "should retrieve a ticket without notes" do
|
45
47
|
@ticket = @project.ticket(@ticket_id_without_note)
|
46
48
|
@ticket.should be_an_instance_of(@klass)
|
47
49
|
end
|
48
|
-
|
50
|
+
|
49
51
|
it "should be able to load all tickets based on attributes" do
|
50
52
|
@tickets = @project.tickets(:id => @ticket_id)
|
51
53
|
@tickets.should be_an_instance_of(Array)
|
52
54
|
@tickets.first.should be_an_instance_of(@klass)
|
53
55
|
@tickets.first.id.should == '4cd428c496f0734eef000007'
|
54
56
|
end
|
55
|
-
|
57
|
+
|
56
58
|
it "should return the ticket class" do
|
57
59
|
@project.ticket.should == @klass
|
58
60
|
end
|
59
|
-
|
61
|
+
|
60
62
|
it "should be able to load a single ticket" do
|
61
63
|
@ticket = @project.ticket(@ticket_id)
|
62
64
|
@ticket.should be_an_instance_of(@klass)
|
63
65
|
@ticket.id.should == @ticket_id
|
64
66
|
end
|
65
|
-
|
67
|
+
|
66
68
|
it "should be able to load a single ticket based on attributes" do
|
67
69
|
@ticket = @project.ticket(:id => @ticket_id)
|
68
70
|
@ticket.should be_an_instance_of(@klass)
|
69
71
|
@ticket.id.should == @ticket_id
|
70
72
|
end
|
71
73
|
|
72
|
-
it "should return nobody as assignee for an empty assignee from the api" do
|
74
|
+
it "should return nobody as assignee for an empty assignee from the api" do
|
73
75
|
@ticket = @project.ticket(@ticket_id_without_assignee)
|
74
76
|
@ticket.assignee.should == 'Nobody'
|
75
77
|
end
|
76
|
-
|
77
|
-
it "should be able to create a ticket for a given project" do
|
78
|
+
|
79
|
+
it "should be able to create a ticket for a given project" do
|
78
80
|
@ticket = @project.ticket!(:title => 'New ticket', :assignee => ['jhon'], :description => 'Ticket description')
|
79
81
|
@ticket.should be_an_instance_of(@klass)
|
80
82
|
end
|
81
83
|
|
84
|
+
it "should be able to update a ticket" do
|
85
|
+
pending
|
86
|
+
@ticket = @project.ticket(@ticket_id)
|
87
|
+
@ticket.title = "Hello World"
|
88
|
+
@ticket.save.should be_true
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should contain all fields for tickets" do
|
92
|
+
ticket = @project.ticket(@ticket_id)
|
93
|
+
ticket.id.should == '4cd428c496f0734eef000007'
|
94
|
+
ticket.status.should == 'Finished'
|
95
|
+
ticket.priority.should == 'Not Urgent'
|
96
|
+
ticket.resolution.should be_nil
|
97
|
+
ticket.title.should == 'Fix UI detail'
|
98
|
+
ticket.created_at.should_not be_nil
|
99
|
+
ticket.updated_at.should_not be_nil
|
100
|
+
ticket.description.should be_nil
|
101
|
+
ticket.assignee.should == 'Rafael George'
|
102
|
+
ticket.requestor.should be_nil
|
103
|
+
ticket.project_id.should == 'be74b643b64e3dc79aa0'
|
104
|
+
end
|
82
105
|
end
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ticketmaster-kanbanpad"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.6.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["HybridGroup"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-05-01"
|
13
13
|
s.description = "Allows ticketmaster to interact with kanbanpad."
|
14
14
|
s.email = "sonia@hybridgroup.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Gemfile.lock",
|
26
26
|
"LICENSE",
|
27
27
|
"README.md",
|
28
|
+
"Rakefile",
|
28
29
|
"VERSION",
|
29
30
|
"lib/kanbanpad/kanbanpad-api.rb",
|
30
31
|
"lib/provider/comment.rb",
|
@@ -32,8 +33,6 @@ Gem::Specification.new do |s|
|
|
32
33
|
"lib/provider/project.rb",
|
33
34
|
"lib/provider/ticket.rb",
|
34
35
|
"lib/ticketmaster-kanbanpad.rb",
|
35
|
-
"rakefile",
|
36
|
-
"spec/comments_spec.rb",
|
37
36
|
"spec/fixtures/comments.json",
|
38
37
|
"spec/fixtures/comments/4ef2719bf17365000110df9e.json",
|
39
38
|
"spec/fixtures/projects.json",
|
@@ -52,16 +51,18 @@ Gem::Specification.new do |s|
|
|
52
51
|
"spec/fixtures/tasks/4cd428c496f0734eef000008.xml",
|
53
52
|
"spec/fixtures/tasks/4dc31c4c9bd0ff6c3700004e.json",
|
54
53
|
"spec/fixtures/tasks/create.xml",
|
54
|
+
"spec/project_comments_spec.rb",
|
55
55
|
"spec/projects_spec.rb",
|
56
56
|
"spec/spec.opts",
|
57
57
|
"spec/spec_helper.rb",
|
58
|
+
"spec/ticket_comments_spec.rb",
|
58
59
|
"spec/ticketmaster-kanbanpad_spec.rb",
|
59
60
|
"spec/tickets_spec.rb",
|
60
61
|
"ticketmaster-kanbanpad.gemspec"
|
61
62
|
]
|
62
63
|
s.homepage = "http://github.com/hybridgroup/ticketmaster-kanbanpad"
|
63
64
|
s.require_paths = ["lib"]
|
64
|
-
s.rubygems_version = "1.8.
|
65
|
+
s.rubygems_version = "1.8.17"
|
65
66
|
s.summary = "Ticketmaster Provider for Kanbanpad"
|
66
67
|
|
67
68
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ticketmaster-kanbanpad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- HybridGroup
|
@@ -15,9 +15,12 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-05-01 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
+
name: ticketmaster
|
22
|
+
prerelease: false
|
23
|
+
type: :runtime
|
21
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
22
25
|
none: false
|
23
26
|
requirements:
|
@@ -30,10 +33,10 @@ dependencies:
|
|
30
33
|
- 10
|
31
34
|
version: 0.6.10
|
32
35
|
version_requirements: *id001
|
33
|
-
name: ticketmaster
|
34
|
-
prerelease: false
|
35
|
-
type: :runtime
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
prerelease: false
|
39
|
+
type: :development
|
37
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
41
|
none: false
|
39
42
|
requirements:
|
@@ -45,10 +48,10 @@ dependencies:
|
|
45
48
|
- 8
|
46
49
|
version: "2.8"
|
47
50
|
version_requirements: *id002
|
48
|
-
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: bundler
|
49
53
|
prerelease: false
|
50
54
|
type: :development
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
56
|
none: false
|
54
57
|
requirements:
|
@@ -60,10 +63,10 @@ dependencies:
|
|
60
63
|
- 1
|
61
64
|
version: "1.1"
|
62
65
|
version_requirements: *id003
|
63
|
-
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: jeweler
|
64
68
|
prerelease: false
|
65
69
|
type: :development
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
70
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
71
|
none: false
|
69
72
|
requirements:
|
@@ -75,10 +78,10 @@ dependencies:
|
|
75
78
|
- 6
|
76
79
|
version: "1.6"
|
77
80
|
version_requirements: *id004
|
78
|
-
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: simplecov
|
79
83
|
prerelease: false
|
80
84
|
type: :development
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
85
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
86
|
none: false
|
84
87
|
requirements:
|
@@ -90,10 +93,10 @@ dependencies:
|
|
90
93
|
- 5
|
91
94
|
version: "0.5"
|
92
95
|
version_requirements: *id005
|
93
|
-
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: rcov
|
94
98
|
prerelease: false
|
95
99
|
type: :development
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
100
|
requirement: &id006 !ruby/object:Gem::Requirement
|
98
101
|
none: false
|
99
102
|
requirements:
|
@@ -105,10 +108,10 @@ dependencies:
|
|
105
108
|
- 0
|
106
109
|
version: "1.0"
|
107
110
|
version_requirements: *id006
|
108
|
-
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
109
113
|
prerelease: false
|
110
114
|
type: :development
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
115
|
requirement: &id007 !ruby/object:Gem::Requirement
|
113
116
|
none: false
|
114
117
|
requirements:
|
@@ -121,9 +124,6 @@ dependencies:
|
|
121
124
|
- 9
|
122
125
|
version: 1.2.9
|
123
126
|
version_requirements: *id007
|
124
|
-
name: rspec
|
125
|
-
prerelease: false
|
126
|
-
type: :development
|
127
127
|
description: Allows ticketmaster to interact with kanbanpad.
|
128
128
|
email: sonia@hybridgroup.com
|
129
129
|
executables: []
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- Gemfile.lock
|
143
143
|
- LICENSE
|
144
144
|
- README.md
|
145
|
+
- Rakefile
|
145
146
|
- VERSION
|
146
147
|
- lib/kanbanpad/kanbanpad-api.rb
|
147
148
|
- lib/provider/comment.rb
|
@@ -149,8 +150,6 @@ files:
|
|
149
150
|
- lib/provider/project.rb
|
150
151
|
- lib/provider/ticket.rb
|
151
152
|
- lib/ticketmaster-kanbanpad.rb
|
152
|
-
- rakefile
|
153
|
-
- spec/comments_spec.rb
|
154
153
|
- spec/fixtures/comments.json
|
155
154
|
- spec/fixtures/comments/4ef2719bf17365000110df9e.json
|
156
155
|
- spec/fixtures/projects.json
|
@@ -169,9 +168,11 @@ files:
|
|
169
168
|
- spec/fixtures/tasks/4cd428c496f0734eef000008.xml
|
170
169
|
- spec/fixtures/tasks/4dc31c4c9bd0ff6c3700004e.json
|
171
170
|
- spec/fixtures/tasks/create.xml
|
171
|
+
- spec/project_comments_spec.rb
|
172
172
|
- spec/projects_spec.rb
|
173
173
|
- spec/spec.opts
|
174
174
|
- spec/spec_helper.rb
|
175
|
+
- spec/ticket_comments_spec.rb
|
175
176
|
- spec/ticketmaster-kanbanpad_spec.rb
|
176
177
|
- spec/tickets_spec.rb
|
177
178
|
- ticketmaster-kanbanpad.gemspec
|
@@ -204,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
205
|
requirements: []
|
205
206
|
|
206
207
|
rubyforge_project:
|
207
|
-
rubygems_version: 1.8.
|
208
|
+
rubygems_version: 1.8.17
|
208
209
|
signing_key:
|
209
210
|
specification_version: 3
|
210
211
|
summary: Ticketmaster Provider for Kanbanpad
|