ticketmaster-bugherd 0.0.1 → 0.0.2

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/Gemfile CHANGED
@@ -4,8 +4,7 @@ source "http://rubygems.org"
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
6
  gem "ticketmaster", "~> 0.6.0"
7
- gem "activesupport", "~> 3.0.0"
8
- gem "activeresource", "~> 3.0.0"
7
+ gem "bugherd-api", "~> 0.0.3"
9
8
  # Add dependencies to develop your gem here.
10
9
  # Include everything needed to run rake, tests, features, etc.
11
10
  group :development do
@@ -9,6 +9,9 @@ GEM
9
9
  activemodel (= 3.0.9)
10
10
  activesupport (= 3.0.9)
11
11
  activesupport (3.0.9)
12
+ bugherd-api (0.0.3)
13
+ activeresource
14
+ activesupport
12
15
  builder (2.1.2)
13
16
  diff-lcs (1.1.2)
14
17
  git (1.2.5)
@@ -42,8 +45,7 @@ PLATFORMS
42
45
  x86-mingw32
43
46
 
44
47
  DEPENDENCIES
45
- activeresource (~> 3.0.0)
46
- activesupport (~> 3.0.0)
48
+ bugherd-api (~> 0.0.3)
47
49
  bundler (~> 1.0.0)
48
50
  jeweler (~> 1.6.4)
49
51
  rcov
@@ -1,6 +1,31 @@
1
1
  = ticketmaster-bugherd
2
2
 
3
- Description goes here.
3
+ This is a provider for ticketmaster[http://ticketrb.com]. It provides interoperability with Bugherd[http://www.bugherd.com] through the ticketmaster gem.
4
+
5
+ == Usage and Examples
6
+
7
+ first we have to instance a new ticketmaster instance:
8
+ bugherd = TicketMaster.new(:bugherd, :email => 'user@email.com', :password => 'password')
9
+
10
+ === Retreiving all projects
11
+ bugherd.projects
12
+
13
+ === Retrieving projects based on an array of id's
14
+ bugherd.projects([1,2,3])
15
+
16
+ === Retrieving projects based on attributes
17
+ bugherd.projects(:id => 1)
18
+
19
+ === Retrieving a single project
20
+ bugherd.project(1)
21
+
22
+ === Retrieving all tickets
23
+ project = bugherd.project(1)
24
+ project.tickets
25
+
26
+ === Retrieving tickets based on array of id's
27
+ project = bugherd.project(1)
28
+ project.tickets([1,2,3,4])
4
29
 
5
30
  == Contributing to ticketmaster-bugherd
6
31
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -2,7 +2,7 @@ module TicketMaster::Provider
2
2
  # This is the Bugherd Provider for ticketmaster
3
3
  module Bugherd
4
4
  include TicketMaster::Provider::Base
5
- #TICKET_API = Bugherd::Ticket # The class to access the api's tickets
5
+ TICKET_API = Bugherd::Ticket # The class to access the api's tickets
6
6
  PROJECT_API = BugherdAPI::Project # The class to access the api's projects
7
7
 
8
8
  # This is for cases when you want to instantiate using TicketMaster::Provider::Bugherd.new(auth)
@@ -24,11 +24,7 @@ module TicketMaster::Provider
24
24
 
25
25
  # declare needed overloaded methods here
26
26
  def valid?
27
- begin
28
- !BugherdAPI::User.find(:first).nil?
29
- rescue
30
- false
31
- end
27
+ BugherdAPI::User.find(:all)
32
28
  end
33
29
 
34
30
  end
@@ -6,9 +6,37 @@ module TicketMaster::Provider
6
6
  # versions of the ticket.
7
7
  #
8
8
  class Comment < TicketMaster::Provider::Base::Comment
9
- #API = Bugherd::Comment # The class to access the api's comments
9
+ API = BugherdAPI::Comment # The class to access the api's comments
10
10
  # declare needed overloaded methods here
11
11
 
12
+ def author
13
+ author = BugherdAPI::User.find(:all).select do |user|
14
+ user.id == self[:user_id]
15
+ end.first
16
+ "#{author.name} #{author.surname}"
17
+ end
18
+
19
+ def ticket_id
20
+ self.prefix_options[:task_id]
21
+ end
22
+
23
+ def project_id
24
+ self.prefix_options[:project_id]
25
+ end
26
+
27
+ def body
28
+ self[:text]
29
+ end
30
+
31
+ def self.search(project_id, ticket_id, options = {}, limit = 1000)
32
+ API.find(:all, :params => {:project_id => project_id, :task_id => ticket_id}).collect do |comment|
33
+ self.new comment
34
+ end
35
+ end
36
+
37
+ def self.find_by_id(project_id, ticket_id, id)
38
+ self.new API.find(id, :params => {:project_id => project_id, :task_id => ticket_id})
39
+ end
12
40
  end
13
41
  end
14
42
  end
@@ -34,11 +34,6 @@ module TicketMaster::Provider
34
34
  end
35
35
  end
36
36
 
37
- def comments(*options)
38
- warn "Bugherd API doesn't support comments"
39
- []
40
- end
41
-
42
37
  end
43
38
  end
44
39
  end
@@ -1,4 +1,5 @@
1
- require 'lib/bugherd/bugherd-api'
1
+ require 'rubygems'
2
+ require 'bugherd-api'
2
3
 
3
4
  %w{ bugherd ticket project comment }.each do |f|
4
5
  require File.dirname(__FILE__) + '/provider/' + f + '.rb';
@@ -1,7 +1,51 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "TicketMaster::Provider::Bugherd::Comment" do
4
+ before(:each) do
5
+ @tm = TicketMaster.new(:bugherd, :email => 'user@email.com',
6
+ :password => '0000')
7
+ @klass = TicketMaster::Provider::Bugherd::Comment
8
+ headers = {'Authorization' => 'Basic dXNlckBlbWFpbC5jb206MDAwMA==', 'Accept' => 'application/xml'}
9
+ ActiveResource::HttpMock.respond_to do |mock|
10
+ mock.get '/api_v1/projects/1458.xml', headers, fixture_for('projects/1458', 'xml'), 200
11
+ mock.get '/api_v1/projects/1458/tasks/4950.xml', headers, fixture_for('tasks/4950', 'xml'), 200
12
+ mock.get '/api_v1/projects/1458/tasks/4950/comments.xml', headers, fixture_for('comments', 'xml'), 200
13
+ mock.get '/api_v1/projects/1458/tasks/4950/comments/9760.xml', headers, fixture_for('comments/9760', 'xml'), 200
14
+ mock.get '/api_v1/users.xml', headers, fixture_for('users', 'xml'), 200
15
+ end
16
+ @project_id = 1458
17
+ @ticket_id = 4950
18
+ @project = @tm.project(@project_id)
19
+ @ticket = @project.ticket(@ticket_id)
20
+ end
4
21
 
5
- it "should create a comment"
22
+ it "should retrieve all comments" do
23
+ @ticket.comments.should be_an_instance_of(Array)
24
+ @ticket.comments.first.should be_an_instance_of(@klass)
25
+ end
6
26
 
27
+ it "should retrieve all comments based on an array of id's" do
28
+ comments = @ticket.comments([9760])
29
+ comments.should be_an_instance_of(Array)
30
+ comments.first.should be_an_instance_of(@klass)
31
+ end
32
+
33
+ it "should be able to retrieve a single comment based on id" do
34
+ comment = @ticket.comment(9760)
35
+ comment.should be_an_instance_of(@klass)
36
+ end
37
+
38
+ it "should be able to retrieve a single comment based on attributes" do
39
+ comment = @ticket.comment(:id => 9760)
40
+ comment.should be_an_instance_of(@klass)
41
+ end
42
+
43
+ it "should have all valid fields for a comment" do
44
+ comment = @ticket.comment(9760)
45
+ comment.author.should == 'Rafael George'
46
+ comment.body.should == "I'm working on this already"
47
+ comment.id.should == 9760
48
+ comment.ticket_id.should == 4950
49
+ comment.project_id.should == 1458
50
+ end
7
51
  end
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <comments type="array">
3
+ <comment>
4
+ <id type="integer">9760</id>
5
+ <created-at type="datetime">2011-08-18T19:57:56Z</created-at>
6
+ <text>I'm working on this already</text>
7
+ <user-id type="integer">1798</user-id>
8
+ </comment>
9
+ </comments>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <comment>
3
+ <id type="integer">9760</id>
4
+ <created-at type="datetime">2011-08-18T19:57:56Z</created-at>
5
+ <text>I'm working on this already</text>
6
+ <user-id type="integer">1798</user-id>
7
+ </comment>
@@ -2,10 +2,10 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "TicketMaster::Provider::Bugherd::Project" do
4
4
  before(:each) do
5
+ headers = {'Authorization' => 'Basic dXNlckBlbWFpbC5jb206MDAwMA==', 'Accept' => 'application/xml'}
5
6
  @tm = TicketMaster.new(:bugherd, :email => 'user@email.com',
6
7
  :password => '0000')
7
8
  @klass = TicketMaster::Provider::Bugherd::Project
8
- headers = {'Authorization' => 'Basic dXNlckBlbWFpbC5jb206MDAwMA==', 'Accept' => 'application/xml'}
9
9
  ActiveResource::HttpMock.respond_to do |mock|
10
10
  mock.get '/api_v1/projects.xml', headers, fixture_for('projects', 'xml'), 200
11
11
  mock.get '/api_v1/projects/1458.xml', headers, fixture_for('/projects/1458', 'xml'), 200
@@ -2,33 +2,33 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "TicketmasterBugherd" do
4
4
  before(:each) do
5
- @tm = TicketMaster.new(:bugherd, :email => 'user@bugherd.com', :password => '123456')
6
- headers = {'Authorization' => 'Basic dXNlckBidWdoZXJkLmNvbToxMjM0NTY=', 'Accept' => 'application/xml'}
7
- ActiveResource::HttpMock.respond_to do |mock|
8
- mock.get '/api_v1/users.xml', headers, fixture_for('users', 'xml'), 200
5
+ headers = {'Authorization' => 'Basic Z2VvcmdlLnJhZmFlbEBnbWFpbC5jb206MTIzNDU2', 'Accept' => 'application/xml'}
6
+ ActiveResource::HttpMock.respond_to do |mock|
7
+ @tm = TicketMaster.new(:bugherd, :email => 'george.rafael@gmail.com', :password => '123456')
8
+ ActiveResource::HttpMock.respond_to do |mock|
9
+ mock.get '/api_v1/users.xml', headers, fixture_for('users', 'xml'), 200
10
+ end
9
11
  end
10
- end
11
12
 
12
- context "Initialization and validation" do
13
- it "should be able to initialize a ticketmaster object" do
14
- @tm.should be_an_instance_of(TicketMaster)
15
- @tm.should be_a_kind_of(TicketMaster::Provider::Bugherd)
16
- end
13
+ context "Initialization and validation" do
14
+ it "should be able to initialize a ticketmaster object" do
15
+ @tm.should be_an_instance_of(TicketMaster)
16
+ @tm.should be_a_kind_of(TicketMaster::Provider::Bugherd)
17
+ end
17
18
 
18
- it "should validate the ticketmaster instance" do
19
- @tm.valid?.should be_true
19
+ it "should validate the ticketmaster instance" do
20
+ @tm.valid?.should be_true
21
+ end
20
22
  end
21
- end
22
23
 
23
- context "Raise exceptions" do
24
- it "should raise an exception without email or password" do
25
- lambda { @tm = TicketMaster.new(:bugherd, :email => '', :password => '') }.should raise_error
26
- end
24
+ context "Raise exceptions" do
25
+ it "should raise an exception without email or password" do
26
+ lambda { @tm = TicketMaster.new(:bugherd, :email => '', :password => '') }.should raise_error
27
+ end
27
28
 
28
- it "should raise an exception with an user message" do
29
- lambda { @tm = TicketMaster.new(:bugherd, :email => '', :password => '')}.should raise_error("You must provide email and password for authentication")
29
+ it "should raise an exception with an user message" do
30
+ lambda { @tm = TicketMaster.new(:bugherd, :email => '', :password => '')}.should raise_error("You must provide email and password for authentication")
31
+ end
30
32
  end
31
33
  end
32
-
33
-
34
34
  end
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
3
3
  describe "TicketMaster::Provider::Bugherd::Ticket" do
4
4
 
5
5
  before(:each) do
6
- headers = { 'Authorization' => 'Basic Z2VvcmdlLnJhZmFlbEBnbWFpbC5jb206MTIzNDU2', 'Accept' => 'application/xml'}
6
+ headers = {'Authorization' => 'Basic Z2VvcmdlLnJhZmFlbEBnbWFpbC5jb206MTIzNDU2', 'Accept' => 'application/xml'}
7
7
  ActiveResource::HttpMock.respond_to do |mock|
8
8
  mock.get '/api_v1/projects/1458.xml', headers, fixture_for('/projects/1458', 'xml'), 200
9
9
  mock.get '/api_v1/projects/1458/tasks.xml', headers, fixture_for('tasks', 'xml'), 200
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ticketmaster-bugherd}
8
- s.version = "0.0.1"
8
+ s.version = "0.0.2"
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 = %q{2011-08-22}
12
+ s.date = %q{2011-08-29}
13
13
  s.description = %q{Ticketmaster provider for Bugherd}
14
14
  s.email = %q{george.rafael@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -26,7 +26,6 @@ Gem::Specification.new do |s|
26
26
  "README.rdoc",
27
27
  "Rakefile",
28
28
  "VERSION",
29
- "lib/bugherd/bugherd-api.rb",
30
29
  "lib/provider/bugherd.rb",
31
30
  "lib/provider/comment.rb",
32
31
  "lib/provider/project.rb",
@@ -34,6 +33,8 @@ Gem::Specification.new do |s|
34
33
  "lib/ticketmaster-bugherd.rb",
35
34
  "request.xml",
36
35
  "spec/comments_spec.rb",
36
+ "spec/fixtures/comments.xml",
37
+ "spec/fixtures/comments/9760.xml",
37
38
  "spec/fixtures/projects.xml",
38
39
  "spec/fixtures/projects/1458.xml",
39
40
  "spec/fixtures/tasks.xml",
@@ -56,16 +57,14 @@ Gem::Specification.new do |s|
56
57
 
57
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
59
  s.add_runtime_dependency(%q<ticketmaster>, ["~> 0.6.0"])
59
- s.add_runtime_dependency(%q<activesupport>, ["~> 3.0.0"])
60
- s.add_runtime_dependency(%q<activeresource>, ["~> 3.0.0"])
60
+ s.add_runtime_dependency(%q<bugherd-api>, ["~> 0.0.3"])
61
61
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
62
62
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
63
63
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
64
64
  s.add_development_dependency(%q<rcov>, [">= 0"])
65
65
  else
66
66
  s.add_dependency(%q<ticketmaster>, ["~> 0.6.0"])
67
- s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
68
- s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
67
+ s.add_dependency(%q<bugherd-api>, ["~> 0.0.3"])
69
68
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
70
69
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
71
70
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -73,8 +72,7 @@ Gem::Specification.new do |s|
73
72
  end
74
73
  else
75
74
  s.add_dependency(%q<ticketmaster>, ["~> 0.6.0"])
76
- s.add_dependency(%q<activesupport>, ["~> 3.0.0"])
77
- s.add_dependency(%q<activeresource>, ["~> 3.0.0"])
75
+ s.add_dependency(%q<bugherd-api>, ["~> 0.0.3"])
78
76
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
79
77
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
80
78
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ticketmaster-bugherd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Rafael George
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-22 00:00:00 -04:00
18
+ date: 2011-08-29 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -41,34 +41,18 @@ dependencies:
41
41
  requirements:
42
42
  - - ~>
43
43
  - !ruby/object:Gem::Version
44
- hash: 7
44
+ hash: 25
45
45
  segments:
46
- - 3
47
46
  - 0
48
47
  - 0
49
- version: 3.0.0
50
- version_requirements: *id002
51
- name: activesupport
52
- prerelease: false
53
- - !ruby/object:Gem::Dependency
54
- type: :runtime
55
- requirement: &id003 !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
58
- - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 7
61
- segments:
62
48
  - 3
63
- - 0
64
- - 0
65
- version: 3.0.0
66
- version_requirements: *id003
67
- name: activeresource
49
+ version: 0.0.3
50
+ version_requirements: *id002
51
+ name: bugherd-api
68
52
  prerelease: false
69
53
  - !ruby/object:Gem::Dependency
70
54
  type: :development
71
- requirement: &id004 !ruby/object:Gem::Requirement
55
+ requirement: &id003 !ruby/object:Gem::Requirement
72
56
  none: false
73
57
  requirements:
74
58
  - - ~>
@@ -79,12 +63,12 @@ dependencies:
79
63
  - 3
80
64
  - 0
81
65
  version: 2.3.0
82
- version_requirements: *id004
66
+ version_requirements: *id003
83
67
  name: rspec
84
68
  prerelease: false
85
69
  - !ruby/object:Gem::Dependency
86
70
  type: :development
87
- requirement: &id005 !ruby/object:Gem::Requirement
71
+ requirement: &id004 !ruby/object:Gem::Requirement
88
72
  none: false
89
73
  requirements:
90
74
  - - ~>
@@ -95,12 +79,12 @@ dependencies:
95
79
  - 0
96
80
  - 0
97
81
  version: 1.0.0
98
- version_requirements: *id005
82
+ version_requirements: *id004
99
83
  name: bundler
100
84
  prerelease: false
101
85
  - !ruby/object:Gem::Dependency
102
86
  type: :development
103
- requirement: &id006 !ruby/object:Gem::Requirement
87
+ requirement: &id005 !ruby/object:Gem::Requirement
104
88
  none: false
105
89
  requirements:
106
90
  - - ~>
@@ -111,12 +95,12 @@ dependencies:
111
95
  - 6
112
96
  - 4
113
97
  version: 1.6.4
114
- version_requirements: *id006
98
+ version_requirements: *id005
115
99
  name: jeweler
116
100
  prerelease: false
117
101
  - !ruby/object:Gem::Dependency
118
102
  type: :development
119
- requirement: &id007 !ruby/object:Gem::Requirement
103
+ requirement: &id006 !ruby/object:Gem::Requirement
120
104
  none: false
121
105
  requirements:
122
106
  - - ">="
@@ -125,7 +109,7 @@ dependencies:
125
109
  segments:
126
110
  - 0
127
111
  version: "0"
128
- version_requirements: *id007
112
+ version_requirements: *id006
129
113
  name: rcov
130
114
  prerelease: false
131
115
  description: Ticketmaster provider for Bugherd
@@ -147,7 +131,6 @@ files:
147
131
  - README.rdoc
148
132
  - Rakefile
149
133
  - VERSION
150
- - lib/bugherd/bugherd-api.rb
151
134
  - lib/provider/bugherd.rb
152
135
  - lib/provider/comment.rb
153
136
  - lib/provider/project.rb
@@ -155,6 +138,8 @@ files:
155
138
  - lib/ticketmaster-bugherd.rb
156
139
  - request.xml
157
140
  - spec/comments_spec.rb
141
+ - spec/fixtures/comments.xml
142
+ - spec/fixtures/comments/9760.xml
158
143
  - spec/fixtures/projects.xml
159
144
  - spec/fixtures/projects/1458.xml
160
145
  - spec/fixtures/tasks.xml
@@ -1,39 +0,0 @@
1
- require 'rubygems'
2
- require 'active_support'
3
- require 'active_resource'
4
-
5
- module BugherdAPI
6
- class Error < StandardError; end
7
-
8
- class << self
9
- def authenticate(email, password)
10
- @email = email
11
- @password = password
12
- self::Base.user = email
13
- self::Base.password = password
14
- end
15
-
16
- def resources
17
- @resources ||= []
18
- end
19
- end
20
-
21
- class Base < ActiveResource::Base
22
- self.format = :xml
23
- self.site = 'http://www.bugherd.com/api_v1/'
24
- def self.inherited(base)
25
- BugherdAPI.resources << base
26
- super
27
- end
28
- end
29
-
30
- class User < Base
31
- end
32
-
33
- class Project < Base
34
- end
35
-
36
- class Task < Base
37
- self.site += 'projects/:project_id/'
38
- end
39
- end