ticketmaster-kanbanpad 0.1.7 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/kanbanpad/kanbanpad-api.rb +5 -0
- data/lib/provider/comment.rb +6 -3
- data/lib/provider/ticket.rb +12 -6
- data/spec/comments_spec.rb +41 -2
- data/spec/fixtures/comments.json +1 -0
- data/spec/tickets_spec.rb +2 -0
- data/ticketmaster-kanbanpad.gemspec +3 -3
- metadata +5 -5
- data/spec/fixtures/all.json +0 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.7
|
@@ -101,5 +101,10 @@ module KanbanpadAPI
|
|
101
101
|
class TaskComment < Base
|
102
102
|
self.site += 'projects/:project_id/tasks/:task_id'
|
103
103
|
self.element_name = 'comment'
|
104
|
+
|
105
|
+
def self.element_path(id, prefix_options = {}, query_options = nil)
|
106
|
+
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
|
107
|
+
"#{prefix(prefix_options)}#{collection_name}.#{format.extension}#{query_string(query_options)}"
|
108
|
+
end
|
104
109
|
end
|
105
110
|
end
|
data/lib/provider/comment.rb
CHANGED
@@ -11,12 +11,15 @@ module TicketMaster::Provider
|
|
11
11
|
API = KanbanpadAPI::TaskComment
|
12
12
|
|
13
13
|
def self.find_by_id(project_id, ticket_id, id)
|
14
|
-
self.
|
14
|
+
self.search(project_id, ticket_id).select { |ticket| ticket.id == id }.first
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.find_by_attributes(project_id, ticket_id, attributes = {})
|
18
|
+
search_by_attribute(self.search(project_id, ticket_id), attributes)
|
15
19
|
end
|
16
20
|
|
17
21
|
def self.search(project_id, ticket_id, options = {}, limit = 1000)
|
18
|
-
comments =
|
19
|
-
search_by_attribute(comments, options, limit)
|
22
|
+
comments = API.find(:all, :params => {:project_id => project_id, :task_id => ticket_id}).collect { |comment| self.new comment }
|
20
23
|
end
|
21
24
|
|
22
25
|
def updated_at
|
data/lib/provider/ticket.rb
CHANGED
@@ -17,6 +17,10 @@ module TicketMaster::Provider
|
|
17
17
|
self.assigned_to.first
|
18
18
|
end
|
19
19
|
|
20
|
+
def project_id
|
21
|
+
self.project_slug
|
22
|
+
end
|
23
|
+
|
20
24
|
def created_at
|
21
25
|
if self[:created_at].blank?
|
22
26
|
Time.parse('2010-03-25 3:06:34') #kanbanpad used to not track the created_at
|
@@ -29,12 +33,8 @@ module TicketMaster::Provider
|
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
32
|
-
def self.find_by_id(project_id, id)
|
33
|
-
self.search(project_id, {'id' => id}).first
|
34
|
-
end
|
35
|
-
|
36
36
|
def self.find_by_attributes(project_id, attributes = {})
|
37
|
-
self.search(project_id, attributes)
|
37
|
+
self.search_by_attribute(self.search(project_id), attributes)
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.search(project_id, options = {}, limit = 1000)
|
@@ -55,6 +55,12 @@ module TicketMaster::Provider
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
def self.create(*options)
|
59
|
+
ticket = API.new(options.first)
|
60
|
+
ticket.save
|
61
|
+
self.new ticket
|
62
|
+
end
|
63
|
+
|
58
64
|
#TODO?
|
59
65
|
def comment
|
60
66
|
warn 'Kanbanpad does not allow find by id of comments. Perhaps you should leave feedback to request it?'
|
@@ -66,7 +72,7 @@ module TicketMaster::Provider
|
|
66
72
|
warn 'Perhaps you should leave feedback to request it?'
|
67
73
|
[]
|
68
74
|
end
|
69
|
-
|
75
|
+
|
70
76
|
end
|
71
77
|
end
|
72
78
|
end
|
data/spec/comments_spec.rb
CHANGED
@@ -1,5 +1,44 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe "Ticketmaster::Provider::
|
4
|
-
|
3
|
+
describe "Ticketmaster::Provider::Kanbanpad::Comment" do
|
4
|
+
before(:all) do
|
5
|
+
headers = {'Authorization' => 'Basic YWJjQGcuY29tOmllODIzZDYzanM='}
|
6
|
+
wheaders = headers.merge('Accept' => 'application/json')
|
7
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
8
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0.json', wheaders, fixture_for('projects/be74b643b64e3dc79aa0'), 200
|
9
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks.json', wheaders, fixture_for('tasks'), 200
|
10
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks.json?backlog=yes&finished=yes', wheaders, fixture_for('tasks'), 200
|
11
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000007.json', wheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
12
|
+
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000007/comments.json', wheaders, fixture_for('comments'), 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
|
+
@ticket = @project.ticket(@ticket_id)
|
23
|
+
@klass = TicketMaster::Provider::Kanbanpad::Comment
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be able to load all comments" do
|
27
|
+
@comments = @ticket.comments
|
28
|
+
@comments.should be_an_instance_of(Array)
|
29
|
+
@comments.first.should be_an_instance_of(@klass)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should be able to load all comments based on array of id's" do
|
33
|
+
@comments = @ticket.comments([@comment_id])
|
34
|
+
@comments.should be_an_instance_of(Array)
|
35
|
+
@comments.first.should be_an_instance_of(@klass)
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should be able to load all comments based on attributes" do
|
39
|
+
@comments = @ticket.comments(:id => @comment_id)
|
40
|
+
@comments.should be_an_instance_of(Array)
|
41
|
+
@comments.first.should be_an_instance_of(@klass)
|
42
|
+
end
|
43
|
+
|
5
44
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
[{"created_at":"2011-02-26T00:50:55Z","author":"Rafael George <george.rafael@gmail.com>","body":"testing comments","updated_at":"2011-02-26T00:50:55Z","id":"4d684e6f973c7d5648000009","user_id":"4d62b9acc26df8076000004c"},{"created_at":"2011-02-26T01:02:25Z","author":"Rafael George <george.rafael@gmail.com>","body":"another comment\n","updated_at":"2011-02-26T01:02:25Z","id":"4d685121e87f1467ab00001d","user_id":"4d62b9acc26df8076000004c"},{"created_at":"2011-02-26T01:02:31Z","author":"Rafael George <george.rafael@gmail.com>","body":"and another one","updated_at":"2011-02-26T01:02:31Z","id":"4d685127d1c632140800000c","user_id":"4d62b9acc26df8076000004c"}]
|
data/spec/tickets_spec.rb
CHANGED
@@ -4,6 +4,7 @@ describe "Ticketmaster::Provider::Kanbanpad::Ticket" do
|
|
4
4
|
before(:all) do
|
5
5
|
headers = {'Authorization' => 'Basic YWJjQGcuY29tOmllODIzZDYzanM='}
|
6
6
|
wheaders = headers.merge('Accept' => 'application/json')
|
7
|
+
post_data = {:tasks => {:title => 'new ticket'}}
|
7
8
|
ActiveResource::HttpMock.respond_to do |mock|
|
8
9
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0.json', wheaders, fixture_for('projects/be74b643b64e3dc79aa0'), 200
|
9
10
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks.json', wheaders, fixture_for('tasks'), 200
|
@@ -55,4 +56,5 @@ describe "Ticketmaster::Provider::Kanbanpad::Ticket" do
|
|
55
56
|
@ticket.should be_an_instance_of(@klass)
|
56
57
|
@ticket.id.should == @ticket_id
|
57
58
|
end
|
59
|
+
|
58
60
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ticketmaster-kanbanpad}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.7"
|
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 = %q{2011-02-
|
12
|
+
s.date = %q{2011-02-25}
|
13
13
|
s.description = %q{Allows ticketmaster to interact with kanbanpad.}
|
14
14
|
s.email = %q{sonia@hybridgroup.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
"lib/ticketmaster-kanbanpad.rb",
|
30
30
|
"rakefile",
|
31
31
|
"spec/comments_spec.rb",
|
32
|
-
"spec/fixtures/
|
32
|
+
"spec/fixtures/comments.json",
|
33
33
|
"spec/fixtures/projects.json",
|
34
34
|
"spec/fixtures/projects.xml",
|
35
35
|
"spec/fixtures/projects/be74b643b64e3dc79aa0.json",
|
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: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 2
|
9
9
|
- 7
|
10
|
-
version: 0.
|
10
|
+
version: 0.2.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- HybridGroup
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-02-
|
18
|
+
date: 2011-02-25 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -56,7 +56,7 @@ files:
|
|
56
56
|
- lib/ticketmaster-kanbanpad.rb
|
57
57
|
- rakefile
|
58
58
|
- spec/comments_spec.rb
|
59
|
-
- spec/fixtures/
|
59
|
+
- spec/fixtures/comments.json
|
60
60
|
- spec/fixtures/projects.json
|
61
61
|
- spec/fixtures/projects.xml
|
62
62
|
- spec/fixtures/projects/be74b643b64e3dc79aa0.json
|
data/spec/fixtures/all.json
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
[{"assigned_to":[],"created_at":"2011-02-21T19:13:22Z","title":"Testing provider","updated_at":"2011-02-21T22:48:15Z","urgent":false,"id":"4d62b952faf6426596000061","step_id":null,"note":null,"wip":true,"project_slug":"ef74c392a173ea994328","finished":true,"backlog":false},{"assigned_to":[],"created_at":"2011-02-21T22:53:59Z","title":"Checking tasks creation","updated_at":"2011-02-21T22:57:56Z","urgent":false,"id":"4d62ed07c0847f51ea000009","step_id":null,"note":null,"wip":false,"project_slug":"ef74c392a173ea994328","finished":true,"backlog":false}]
|