ticketmaster-kanbanpad 0.5.1 → 0.6.0
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/{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
|