ticketevolution-ruby 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -267,7 +267,7 @@ Click on the links next to each endpoint for more detail.
267
267
  @venue = @connection.venues.show(id)
268
268
 
269
269
 
270
- ######ticketevolution-ruby v0.7.4
270
+ ######ticketevolution-ruby v0.7.5
271
271
 
272
272
  License
273
273
  -------
@@ -1,7 +1,15 @@
1
1
  module TicketEvolution
2
2
  class Base
3
3
  def method_missing(method, *args)
4
- "TicketEvolution::#{method.to_s.camelize.to_sym}".constantize.new({:parent => self}) rescue super
4
+ begin
5
+ "#{self.class.name}::#{method.to_s.camelize.to_sym}".constantize.new({:parent => self})
6
+ rescue
7
+ begin
8
+ "TicketEvolution::#{method.to_s.camelize.to_sym}".constantize.new({:parent => self})
9
+ rescue
10
+ super
11
+ end
12
+ end
5
13
  end
6
14
  end
7
15
  end
@@ -2,10 +2,12 @@ module TicketEvolution
2
2
  class Builder < OpenStruct
3
3
  include SingularClass
4
4
 
5
- def initialize(*stuff)
6
- super
7
- @table.each do |k, v|
8
- send("#{k}=", process_datum(v))
5
+ def initialize(hash={})
6
+ attrs = hash.clone
7
+ @table = attrs['id'].present? ? {:id => attrs.delete('id')} : {}
8
+ attrs.each do |k, v|
9
+ @table[k.to_sym] = process_datum(v, k)
10
+ new_ostruct_member(k)
9
11
  end
10
12
  end
11
13
 
@@ -28,7 +30,7 @@ module TicketEvolution
28
30
 
29
31
  private
30
32
 
31
- def process_datum(v)
33
+ def process_datum(v, k=nil)
32
34
  case v.class.to_s.to_sym
33
35
  when :Hash
34
36
  Datum.new(v)
@@ -53,11 +55,11 @@ module TicketEvolution
53
55
 
54
56
  def method_missing(meth, *args)
55
57
  if args.size == 1
56
- super(meth, process_datum(args.first))
58
+ super(meth, process_datum(args.first, meth))
57
59
  elsif args.size == 0
58
60
  super(meth)
59
61
  else
60
- super(meth, process_datum(args))
62
+ super(meth, process_datum(args, meth))
61
63
  end
62
64
  end
63
65
 
@@ -7,10 +7,7 @@ module TicketEvolution
7
7
  raise EndpointConfigurationError, "#{self.class.to_s} instances require a hash as their first parameter" unless options.is_a? Hash
8
8
  raise EndpointConfigurationError, "The options hash must include a parent key / value pair" unless options[:parent].present?
9
9
  raise EndpointConfigurationError, "#{self.class.to_s} instances require a parent which inherits from TicketEvolution::Base" unless options[:parent].kind_of? TicketEvolution::Base
10
- options.each do |k, v|
11
- self.singleton_class.send(:attr_accessor, k)
12
- send("#{k}=", v)
13
- end
10
+ @options = options.with_indifferent_access
14
11
  raise EndpointConfigurationError, "The parent passed in the options hash must be a TicketEvolution::Connection object or have one in it's parent chain" unless has_connection?
15
12
  end
16
13
 
@@ -18,14 +15,14 @@ module TicketEvolution
18
15
  [].tap do |parts|
19
16
  parts << parent.base_path if parent.kind_of? TicketEvolution::Endpoint
20
17
  parts << "/"+endpoint_name
21
- parts << "/#{self.id}" if self.respond_to?("id=") and self.id.present?
18
+ parts << "/#{self.id}" if self.id.present?
22
19
  end.join
23
20
  end
24
21
 
25
22
  def connection
26
23
  if self.parent.is_a? TicketEvolution::Connection
27
24
  self.parent
28
- elsif self.parent.respond_to? :parent
25
+ elsif self.parent.kind_of? TicketEvolution::Endpoint
29
26
  self.parent.connection
30
27
  else
31
28
  nil
@@ -40,12 +37,22 @@ module TicketEvolution
40
37
  self.class.name.demodulize.underscore
41
38
  end
42
39
 
40
+ def method_missing(method, *args)
41
+ name = method.to_s
42
+ @options.keys.include?(name) ? @options[name] : super
43
+ end
44
+
45
+ # Ruby 1.8.7 / REE compatibility
46
+ def id
47
+ @options[:id]
48
+ end
49
+
43
50
  private
44
51
 
45
52
  def ensure_id
46
53
  raise TicketEvolution::MethodUnavailableError.new \
47
54
  "#{self.class.to_s}##{caller.first.split('`').last.split("'").first} can only be called if there is an id present on this #{self.class.to_s} instance" \
48
- unless self.respond_to?("id=") and self.id.present?
55
+ unless self.id.present?
49
56
  end
50
57
  end
51
58
  end
@@ -57,6 +57,10 @@ module TicketEvolution
57
57
  resp.server_message = (CODES[resp.response_code] || ['Unknown Error']).last
58
58
  end
59
59
  end
60
+
61
+ def collection_handler(response)
62
+ TicketEvolution::Collection.build_from_response(response, self.class.name.demodulize.underscore, singular_class)
63
+ end
60
64
  end
61
65
  end
62
66
  end
@@ -43,7 +43,7 @@ module TicketEvolution
43
43
 
44
44
  private
45
45
 
46
- def process_datum(v)
46
+ def process_datum(v, k=nil)
47
47
  if v.is_a? Hash and v['url'].present?
48
48
  name = class_name_from_url(v['url'])
49
49
  datum_exists?(name) ? singular_class(class_name_from_url(name)).new(v.merge({:connection => @connection})) : Datum.new(v)
@@ -1,24 +1,38 @@
1
1
  module TicketEvolution
2
+ module EndpointBehavior
3
+ def endpoint=(e); @endpoint = e; end
4
+ def method_missing(method, *args); @endpoint.send(method, *args); end
5
+ end
6
+
2
7
  class Model
3
8
  module ParentalBehavior
4
- def new_ostruct_member(name)
5
- ostruct_method = super
9
+ def process_datum(v, k = nil)
10
+ v = super
11
+ if k and v.is_a? Array and v.singleton_class.ancestors.first == Array
12
+ endpoint = "#{self.plural_class_name}::#{k.to_s.chomp('=').camelize}".constantize.new({
13
+ :parent => self.plural_class.new({
14
+ :id => self.id,
15
+ :parent => @connection
16
+ })
17
+ })
18
+ v.extend(TicketEvolution::EndpointBehavior)
19
+ v.endpoint = endpoint
20
+ end
21
+ ensure
22
+ return v
23
+ end
6
24
 
7
- named_endpoint = "#{self.plural_class_name}::#{name.to_s.camelize}".constantize
8
- class << self; self; end.class_eval do
9
- define_method(name) do
10
- obj = @table[name.to_sym]
11
- unless obj.nil?
12
- def obj.endpoint=(e); @endpoint = e; end
13
- def obj.method_missing(method, *args); @endpoint.send(method, *args); end
14
- obj.endpoint = named_endpoint.new(:parent => self.plural_class.new(:id => self.id, :parent => @connection))
15
- end
16
- obj
25
+ def new_ostruct_member(name)
26
+ name = name.to_sym
27
+ unless self.respond_to?(name)
28
+ class << self; self; end.class_eval do
29
+ define_method(name) { @table[name.to_sym] }
30
+ define_method("#{name}=") { |x| modifiable[name] = process_datum(x, name) }
17
31
  end
18
32
  end
19
- ostruct_method
33
+ name
20
34
  rescue NameError => e
21
- ostruct_method
35
+ super
22
36
  end
23
37
  end
24
38
  end
@@ -2,13 +2,9 @@ module TicketEvolution
2
2
  module Modules
3
3
  module Deleted
4
4
  def deleted(params = nil, &handler)
5
- handler ||= method(:build_for_deleted)
5
+ handler ||= method(:collection_handler)
6
6
  request(:GET, '/deleted', params, &handler)
7
7
  end
8
-
9
- def build_for_deleted(response)
10
- TicketEvolution::Collection.build_from_response(response, self.class.name.demodulize.underscore, singular_class)
11
- end
12
8
  end
13
9
  end
14
10
  end
@@ -2,15 +2,11 @@ module TicketEvolution
2
2
  module Modules
3
3
  module List
4
4
  def list(params = nil, &handler)
5
- handler ||= method(:build_for_list)
5
+ handler ||= method(:collection_handler)
6
6
  request(:GET, nil, params, &handler)
7
7
  end
8
8
 
9
9
  alias :all :list
10
-
11
- def build_for_list(response)
12
- TicketEvolution::Collection.build_from_response(response, self.class.name.demodulize.underscore, singular_class)
13
- end
14
10
  end
15
11
  end
16
12
  end
@@ -2,13 +2,9 @@ module TicketEvolution
2
2
  module Modules
3
3
  module Search
4
4
  def search(params = nil, &handler)
5
- handler ||= method(:build_for_search)
5
+ handler ||= method(:collection_handler)
6
6
  request(:GET, '/search', params, &handler)
7
7
  end
8
-
9
- def build_for_search(response)
10
- TicketEvolution::Collection.build_from_response(response, self.class.name.demodulize.underscore, singular_class)
11
- end
12
8
  end
13
9
  end
14
10
  end
@@ -1,3 +1,3 @@
1
1
  module TicketEvolution
2
- VERSION = '0.7.4'
2
+ VERSION = '0.7.5'
3
3
  end
@@ -0,0 +1,48 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: https://api.sandbox.ticketevolution.com:443/clients?per_page=1
6
+ body: !!null
7
+ headers:
8
+ x-signature:
9
+ - CVHhWgZb27YMNhFegxDYpGpJJ0dN4Cjf7w4am0cYSmM=
10
+ x-token:
11
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
12
+ accept:
13
+ - application/vnd.ticketevolution.api+json; version=8
14
+ accept-encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ response: !ruby/struct:VCR::Response
17
+ status: !ruby/struct:VCR::ResponseStatus
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ content-type:
22
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
23
+ transfer-encoding:
24
+ - chunked
25
+ connection:
26
+ - keep-alive
27
+ status:
28
+ - '200'
29
+ x-powered-by:
30
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.11
31
+ x-ua-compatible:
32
+ - IE=Edge,chrome=1
33
+ etag:
34
+ - ! '"46f6caa87384ce7e4bcee3406b641e9d"'
35
+ cache-control:
36
+ - max-age=0, private, must-revalidate
37
+ x-runtime:
38
+ - '0.153706'
39
+ strict-transport-security:
40
+ - max-age=31536000
41
+ server:
42
+ - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
43
+ body: ! '{"current_page":1,"per_page":1,"total_entries":119,"clients":[{"email_addresses":[{"label":null,"address":"tyrique@brown.info","id":"309"}],"addresses":[{"label":"Work","longitude":null,"extended_address":null,"street_address":"555
44
+ Evergreen Terrace","locality":"Springfield","region":"MG","country_code":"US","name":null,"latitude":null,"postal_code":"58008-0000","id":"170858"}],"office":{"url":"/offices/6","brokerage":{"abbreviation":"Ticket
45
+ Evolution","url":"/brokerages/61","name":"Ticket Evolution","id":"61"},"name":"Main
46
+ Office","id":"6"},"url":"/clients/3","updated_at":"2012-03-20T18:06:05Z","company":null,"phone_numbers":[{"number":"(301)555-1234","label":null,"extension":"999","country_code":null,"id":"333"}],"tags":["best
47
+ seller","promotion","vip"],"name":"Main Office","id":"3"}]}'
48
+ http_version: '1.1'
@@ -19,6 +19,18 @@ describe TicketEvolution::Client do
19
19
  it_behaves_like "a ticket_evolution model"
20
20
  it_behaves_like "a parental model"
21
21
 
22
+ describe "a retrieved instance" do
23
+ use_vcr_cassette "endpoints/clients/list", :record => :new_episodes, :match_requests_on => [:method, :uri, :body]
24
+
25
+ let(:client) { connection.clients.list(:per_page => 1) }
26
+
27
+ it "should be capable of being marshaled" do
28
+ expect {
29
+ Marshal.dump(client)
30
+ }.to_not raise_error
31
+ end
32
+ end
33
+
22
34
  context "#update_attributes" do
23
35
  let(:client) { connection.clients.create(:name => "foo") }
24
36
  let(:initial_client_id) { client.id }
@@ -34,4 +34,13 @@ describe TicketEvolution::Clients do
34
34
  end
35
35
  end
36
36
  end
37
+
38
+ describe "chained endpoints" do
39
+ context "when the parent endpoint has an id" do
40
+ it "should check for chained endpoints in the method_missing stack" do
41
+ endpoint = klass.new(:parent => connection, :id => 1).samples
42
+ endpoint.should be_a TicketEvolution::Clients::Samples
43
+ end
44
+ end
45
+ end
37
46
  end
@@ -21,14 +21,17 @@ describe TicketEvolution::Builder do
21
21
  end
22
22
 
23
23
  it "should assign each key value pair as attributes" do
24
+ instance
24
25
  params.keys.each do |key|
25
26
  instance.send(key).should == params[key]
26
27
  end
27
28
  end
28
29
 
29
30
  it "should call #process_datum for each attribute assigned" do
30
- params.values.each do |v|
31
- klass.any_instance.should_receive(:process_datum).with(v)
31
+ attrs = params.clone
32
+ attrs.delete('id')
33
+ attrs.each do |k, v|
34
+ klass.any_instance.should_receive(:process_datum).with(v, k)
32
35
  end
33
36
  instance
34
37
  end
@@ -79,9 +82,9 @@ describe TicketEvolution::Builder do
79
82
 
80
83
  describe "with args" do
81
84
  it "should invoke #process_datum with the information received" do
82
- instance.should_receive(:process_datum).with(:ing)
85
+ instance.should_receive(:process_datum).with(:ing, :test=)
83
86
  instance.test = :ing
84
- instance.should_receive(:process_datum).with([1,2])
87
+ instance.should_receive(:process_datum).with([1,2], :array=)
85
88
  instance.array = [1,2]
86
89
  end
87
90
  end
@@ -122,7 +122,7 @@ describe TicketEvolution::Connection do
122
122
  end
123
123
 
124
124
  context "with logger object is set" do
125
- use_vcr_cassette "core/connection", :record => :all
125
+ use_vcr_cassette "core/connection", :record => :new_episodes
126
126
 
127
127
  let(:target) { StringIO.new }
128
128
  let(:logger) { Logger.new(target) }
@@ -16,13 +16,13 @@ shared_examples_for "a ticket_evolution endpoint class" do
16
16
  :test => :one,
17
17
  :testing => "two",
18
18
  :number => 3,
19
- :hash => {}
19
+ :hsh => {}
20
20
  })
21
21
  instance.parent.should == connection
22
22
  instance.test.should == :one
23
23
  instance.testing.should == "two"
24
24
  instance.number.should == 3
25
- instance.hash.should == {}
25
+ instance.hsh.should == {}
26
26
  end
27
27
 
28
28
  context "with a parent k/v pair" do
@@ -37,8 +37,16 @@ shared_examples_for "a ticket_evolution endpoint class" do
37
37
 
38
38
  context "that does inherit from TicketEvolution::Base" do
39
39
  context "and is a TicketEvolution::Connection object" do
40
+ let(:instance) { klass.new({:parent => connection}) }
41
+
40
42
  it "should not raise" do
41
- expect { klass.new({:parent => connection}) }.to_not raise_error
43
+ expect { instance }.to_not raise_error
44
+ end
45
+
46
+ it "should be capable of being marshaled" do
47
+ expect {
48
+ Marshal.dump(instance)
49
+ }.to_not raise_error
42
50
  end
43
51
  end
44
52
 
@@ -35,18 +35,18 @@ shared_examples_for "a deleted endpoint" do
35
35
  end
36
36
  end
37
37
 
38
- context "#build_for_deleted" do
38
+ context "default response handler" do
39
39
  let(:response) { Fake.list_response }
40
40
 
41
41
  it "invokes Collection#build_from_response" do
42
42
  TicketEvolution::Collection.
43
43
  should_receive(:build_from_response).
44
44
  with(response, klass.name.demodulize.underscore, instance.singular_class)
45
- instance.build_for_deleted(response)
45
+ instance.collection_handler(response)
46
46
  end
47
47
 
48
48
  it "returns a collection" do
49
- instance.build_for_deleted(response).should be_a TicketEvolution::Collection
49
+ instance.collection_handler(response).should be_a TicketEvolution::Collection
50
50
  end
51
51
  end
52
52
  end
@@ -35,18 +35,18 @@ shared_examples_for "a list endpoint" do
35
35
  end
36
36
  end
37
37
 
38
- context "#build_for_list" do
38
+ context "default response handler" do
39
39
  let(:response) { Fake.list_response }
40
40
 
41
41
  it "invokes Collection#build_from_response" do
42
42
  TicketEvolution::Collection.
43
43
  should_receive(:build_from_response).
44
44
  with(response, klass.name.demodulize.underscore, instance.singular_class)
45
- instance.build_for_list(response)
45
+ instance.collection_handler(response)
46
46
  end
47
47
 
48
48
  it "returns a collection" do
49
- instance.build_for_list(response).should be_a TicketEvolution::Collection
49
+ instance.collection_handler(response).should be_a TicketEvolution::Collection
50
50
  end
51
51
  end
52
52
  end
@@ -35,18 +35,18 @@ shared_examples_for "a search endpoint" do
35
35
  end
36
36
  end
37
37
 
38
- context "#build_for_search" do
38
+ context "default response handler" do
39
39
  let(:response) { Fake.list_response }
40
40
 
41
41
  it "invokes Collection#build_from_response" do
42
42
  TicketEvolution::Collection.
43
43
  should_receive(:build_from_response).
44
44
  with(response, klass.name.demodulize.underscore, instance.singular_class)
45
- instance.build_for_search(response)
45
+ instance.collection_handler(response)
46
46
  end
47
47
 
48
48
  it "returns a collection" do
49
- instance.build_for_search(response).should be_a TicketEvolution::Collection
49
+ instance.collection_handler(response).should be_a TicketEvolution::Collection
50
50
  end
51
51
  end
52
52
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ticketevolution-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-28 00:00:00.000000000Z
12
+ date: 2012-04-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70187908360220 !ruby/object:Gem::Requirement
16
+ requirement: &70114881071020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70187908360220
24
+ version_requirements: *70114881071020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &70187908358760 !ruby/object:Gem::Requirement
27
+ requirement: &70114881069720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.7.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70187908358760
35
+ version_requirements: *70114881069720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yajl-ruby
38
- requirement: &70187908355960 !ruby/object:Gem::Requirement
38
+ requirement: &70114881066980 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.7.7
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70187908355960
46
+ version_requirements: *70114881066980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: multi_json
49
- requirement: &70187908354740 !ruby/object:Gem::Requirement
49
+ requirement: &70114881065660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.0.4
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70187908354740
57
+ version_requirements: *70114881065660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &70187908353580 !ruby/object:Gem::Requirement
60
+ requirement: &70114881064320 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.4.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70187908353580
68
+ version_requirements: *70114881064320
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70187908352260 !ruby/object:Gem::Requirement
71
+ requirement: &70114881062980 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 2.7.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70187908352260
79
+ version_requirements: *70114881062980
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: vcr
82
- requirement: &70187908350880 !ruby/object:Gem::Requirement
82
+ requirement: &70114881061620 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - <
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '2'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70187908350880
90
+ version_requirements: *70114881061620
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &70187908350240 !ruby/object:Gem::Requirement
93
+ requirement: &70114881061000 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: 1.8.0
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70187908350240
104
+ version_requirements: *70114881061000
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: awesome_print
107
- requirement: &70187908349240 !ruby/object:Gem::Requirement
107
+ requirement: &70114881060120 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,10 +112,10 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70187908349240
115
+ version_requirements: *70114881060120
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: rake
118
- requirement: &70187908348260 !ruby/object:Gem::Requirement
118
+ requirement: &70114881059000 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ! '>='
@@ -123,7 +123,7 @@ dependencies:
123
123
  version: '0'
124
124
  type: :development
125
125
  prerelease: false
126
- version_requirements: *70187908348260
126
+ version_requirements: *70114881059000
127
127
  description: Provides Ruby wrappers for the Ticket Evolution API (http://developer.ticketevolution.com).
128
128
  Ticket Evolution is the industry leader in software for the Ticket Broker industry.
129
129
  email:
@@ -227,6 +227,7 @@ files:
227
227
  - spec/fixtures/net/endpoints/categories.yml
228
228
  - spec/fixtures/net/endpoints/clients.yml
229
229
  - spec/fixtures/net/endpoints/clients/create.yml
230
+ - spec/fixtures/net/endpoints/clients/list.yml
230
231
  - spec/fixtures/net/endpoints/clients/update_fail.yml
231
232
  - spec/fixtures/net/endpoints/clients/update_success.yml
232
233
  - spec/fixtures/net/endpoints/company/destroy_error.yml
@@ -322,7 +323,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
322
323
  version: '0'
323
324
  segments:
324
325
  - 0
325
- hash: 937722356540209047
326
+ hash: -2909427560002696490
326
327
  required_rubygems_version: !ruby/object:Gem::Requirement
327
328
  none: false
328
329
  requirements:
@@ -343,6 +344,7 @@ test_files:
343
344
  - spec/fixtures/net/endpoints/categories.yml
344
345
  - spec/fixtures/net/endpoints/clients.yml
345
346
  - spec/fixtures/net/endpoints/clients/create.yml
347
+ - spec/fixtures/net/endpoints/clients/list.yml
346
348
  - spec/fixtures/net/endpoints/clients/update_fail.yml
347
349
  - spec/fixtures/net/endpoints/clients/update_success.yml
348
350
  - spec/fixtures/net/endpoints/company/destroy_error.yml