ticketmaster-kanbanpad 0.1.5 → 0.1.6
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 +1 -1
- data/lib/kanbanpad/kanbanpad-api.rb +3 -2
- data/lib/provider/kanbanpad.rb +2 -2
- data/lib/provider/project.rb +31 -1
- data/lib/provider/ticket.rb +14 -4
- data/spec/fixtures/all.json +1 -0
- data/spec/tickets_spec.rb +3 -2
- data/ticketmaster-kanbanpad.gemspec +3 -2
- metadata +5 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.6
|
@@ -55,7 +55,8 @@ module KanbanpadAPI
|
|
55
55
|
#
|
56
56
|
|
57
57
|
class Project < Base
|
58
|
-
|
58
|
+
|
59
|
+
def self.tickets(slug, options = {})
|
59
60
|
Task.find(:all, :params => options.update(:project_id => slug, :backlog => 'yes', :finished => 'yes'))
|
60
61
|
end
|
61
62
|
|
@@ -70,7 +71,7 @@ module KanbanpadAPI
|
|
70
71
|
|
71
72
|
class Task < Base
|
72
73
|
self.site += 'projects/:project_id/'
|
73
|
-
|
74
|
+
|
74
75
|
def self.finished(project_id, options = {})
|
75
76
|
find(:all, :params => options.merge(:slug => project_id), :from => :finished)
|
76
77
|
end
|
data/lib/provider/kanbanpad.rb
CHANGED
@@ -3,7 +3,7 @@ module TicketMaster::Provider
|
|
3
3
|
|
4
4
|
module Kanbanpad
|
5
5
|
include TicketMaster::Provider::Base
|
6
|
-
|
6
|
+
TICKET_API = KanbanpadAPI::Task
|
7
7
|
PROJECT_API = KanbanpadAPI::Project
|
8
8
|
|
9
9
|
# This is for cases when you want to instantiate using TicketMaster::Provider::Kanbanpad.new(auth)
|
@@ -20,6 +20,6 @@ module TicketMaster::Provider
|
|
20
20
|
end
|
21
21
|
::KanbanpadAPI.authenticate((auth.username.blank? ? auth.email : auth.username), (auth.password.blank? ? auth.token : auth.password))
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
end
|
25
25
|
end
|
data/lib/provider/project.rb
CHANGED
@@ -38,7 +38,37 @@ module TicketMaster::Provider
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
|
41
|
+
# TODO: Needs refactor
|
42
|
+
def tickets(*options)
|
43
|
+
if options.empty?
|
44
|
+
collect_all_tickets
|
45
|
+
elsif options.first.is_a? Array
|
46
|
+
collect_all_tickets.select do |ticket|
|
47
|
+
if options.first.any? {|id| id == ticket.id }
|
48
|
+
ticket
|
49
|
+
end
|
50
|
+
end
|
51
|
+
elsif options.first.is_a? Hash
|
52
|
+
collect_all_tickets.select do |ticket|
|
53
|
+
options.first.inject(true) do |memo, kv|
|
54
|
+
break unless memo
|
55
|
+
key, value = kv
|
56
|
+
begin
|
57
|
+
memo &= ticket.send(key) == value
|
58
|
+
rescue NoMethodError
|
59
|
+
memo = false
|
60
|
+
end
|
61
|
+
memo
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
private
|
68
|
+
def collect_all_tickets
|
69
|
+
API.tickets(id).collect { |ticket| Ticket.new ticket }
|
70
|
+
end
|
71
|
+
|
42
72
|
end
|
43
73
|
end
|
44
74
|
end
|
data/lib/provider/ticket.rb
CHANGED
@@ -17,10 +17,6 @@ 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
|
-
|
24
20
|
def created_at
|
25
21
|
if self[:created_at].blank?
|
26
22
|
Time.parse('2010-03-25 3:06:34') #kanbanpad used to not track the created_at
|
@@ -33,6 +29,20 @@ module TicketMaster::Provider
|
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
32
|
+
def self.find_by_id(project_id, id)
|
33
|
+
self.search(project_id, {'id' => id}).first
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.find_by_attributes(project_id, attributes = {})
|
37
|
+
self.search(project_id, attributes)
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.search(project_id, options = {}, limit = 1000)
|
41
|
+
tickets = API.find(:all, :params => {:project_id => project_id, :backlog => 'yes', :finished => 'yes'}).collect do |ticket|
|
42
|
+
self.new ticket
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
36
46
|
def updated_at
|
37
47
|
if self[:updated_at].blank?
|
38
48
|
Time.parse('2010-03-25 3:06:34') #kanbanpad used to not track the updated_at
|
@@ -0,0 +1 @@
|
|
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}]
|
data/spec/tickets_spec.rb
CHANGED
@@ -7,6 +7,7 @@ describe "Ticketmaster::Provider::Kanbanpad::Ticket" do
|
|
7
7
|
ActiveResource::HttpMock.respond_to do |mock|
|
8
8
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0.json', wheaders, fixture_for('projects/be74b643b64e3dc79aa0'), 200
|
9
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
|
10
11
|
mock.get '/api/v1/projects/be74b643b64e3dc79aa0/tasks/4cd428c496f0734eef000007.json', wheaders, fixture_for('tasks/4cd428c496f0734eef000007'), 200
|
11
12
|
end
|
12
13
|
@project_id = 'be74b643b64e3dc79aa0'
|
@@ -29,14 +30,14 @@ describe "Ticketmaster::Provider::Kanbanpad::Ticket" do
|
|
29
30
|
@tickets = @project.tickets([@ticket_id])
|
30
31
|
@tickets.should be_an_instance_of(Array)
|
31
32
|
@tickets.first.should be_an_instance_of(@klass)
|
32
|
-
@tickets.first.id.should ==
|
33
|
+
@tickets.first.id.should == '4cd428c496f0734eef000007'
|
33
34
|
end
|
34
35
|
|
35
36
|
it "should be able to load all tickets based on attributes" do
|
36
37
|
@tickets = @project.tickets(:id => @ticket_id)
|
37
38
|
@tickets.should be_an_instance_of(Array)
|
38
39
|
@tickets.first.should be_an_instance_of(@klass)
|
39
|
-
@tickets.first.id.should ==
|
40
|
+
@tickets.first.id.should == '4cd428c496f0734eef000007'
|
40
41
|
end
|
41
42
|
|
42
43
|
it "should return the ticket class" do
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ticketmaster-kanbanpad}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.6"
|
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-23}
|
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,6 +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/all.json",
|
32
33
|
"spec/fixtures/projects.json",
|
33
34
|
"spec/fixtures/projects.xml",
|
34
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: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
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-23 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- lib/ticketmaster-kanbanpad.rb
|
57
57
|
- rakefile
|
58
58
|
- spec/comments_spec.rb
|
59
|
+
- spec/fixtures/all.json
|
59
60
|
- spec/fixtures/projects.json
|
60
61
|
- spec/fixtures/projects.xml
|
61
62
|
- spec/fixtures/projects/be74b643b64e3dc79aa0.json
|