ticketevolution-ruby 0.5.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/.gitignore +8 -0
- data/.rdebugrc +1 -0
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +7 -0
- data/LICENSE +23 -0
- data/README.markdown +237 -0
- data/Rakefile +124 -0
- data/examples/events.rb +64 -0
- data/lib/docs/endpoints.markdown +47 -0
- data/lib/docs/installation.markdown +5 -0
- data/lib/docs/introduction.markdown +16 -0
- data/lib/docs/objects.markdown +40 -0
- data/lib/ticket_evolution/account.rb +4 -0
- data/lib/ticket_evolution/accounts.rb +6 -0
- data/lib/ticket_evolution/address.rb +4 -0
- data/lib/ticket_evolution/brokerage.rb +4 -0
- data/lib/ticket_evolution/brokerages.rb +7 -0
- data/lib/ticket_evolution/categories.rb +7 -0
- data/lib/ticket_evolution/category.rb +4 -0
- data/lib/ticket_evolution/client.rb +4 -0
- data/lib/ticket_evolution/clients/addresses.rb +10 -0
- data/lib/ticket_evolution/clients/credit_cards.rb +8 -0
- data/lib/ticket_evolution/clients/email_addresses.rb +10 -0
- data/lib/ticket_evolution/clients/phone_numbers.rb +10 -0
- data/lib/ticket_evolution/clients.rb +8 -0
- data/lib/ticket_evolution/configuration.rb +4 -0
- data/lib/ticket_evolution/configurations.rb +6 -0
- data/lib/ticket_evolution/core/api_error.rb +11 -0
- data/lib/ticket_evolution/core/base.rb +12 -0
- data/lib/ticket_evolution/core/builder.rb +74 -0
- data/lib/ticket_evolution/core/collection.rb +32 -0
- data/lib/ticket_evolution/core/connection.rb +99 -0
- data/lib/ticket_evolution/core/datum.rb +7 -0
- data/lib/ticket_evolution/core/endpoint/request_handler.rb +46 -0
- data/lib/ticket_evolution/core/endpoint.rb +51 -0
- data/lib/ticket_evolution/core/model.rb +64 -0
- data/lib/ticket_evolution/core/models/samples.rb +8 -0
- data/lib/ticket_evolution/core/samples.rb +6 -0
- data/lib/ticket_evolution/core/singular_class.rb +7 -0
- data/lib/ticket_evolution/core/time.rb +19 -0
- data/lib/ticket_evolution/credit_card.rb +4 -0
- data/lib/ticket_evolution/email_address.rb +4 -0
- data/lib/ticket_evolution/errors/connection_not_found.rb +4 -0
- data/lib/ticket_evolution/errors/endpoint_configuration_error.rb +5 -0
- data/lib/ticket_evolution/errors/invalid_configuration.rb +4 -0
- data/lib/ticket_evolution/errors/method_unavailable_error.rb +4 -0
- data/lib/ticket_evolution/event.rb +4 -0
- data/lib/ticket_evolution/events.rb +7 -0
- data/lib/ticket_evolution/modules/create.rb +18 -0
- data/lib/ticket_evolution/modules/deleted.rb +13 -0
- data/lib/ticket_evolution/modules/list.rb +15 -0
- data/lib/ticket_evolution/modules/search.rb +13 -0
- data/lib/ticket_evolution/modules/show.rb +20 -0
- data/lib/ticket_evolution/modules/update.rb +24 -0
- data/lib/ticket_evolution/office.rb +4 -0
- data/lib/ticket_evolution/offices.rb +7 -0
- data/lib/ticket_evolution/order.rb +15 -0
- data/lib/ticket_evolution/orders.rb +30 -0
- data/lib/ticket_evolution/performer.rb +4 -0
- data/lib/ticket_evolution/performers.rb +8 -0
- data/lib/ticket_evolution/phone_number.rb +4 -0
- data/lib/ticket_evolution/quote.rb +4 -0
- data/lib/ticket_evolution/quotes.rb +7 -0
- data/lib/ticket_evolution/search.rb +22 -0
- data/lib/ticket_evolution/shipment.rb +4 -0
- data/lib/ticket_evolution/shipments.rb +8 -0
- data/lib/ticket_evolution/ticket_group.rb +4 -0
- data/lib/ticket_evolution/ticket_groups.rb +6 -0
- data/lib/ticket_evolution/user.rb +4 -0
- data/lib/ticket_evolution/users.rb +7 -0
- data/lib/ticket_evolution/venue.rb +4 -0
- data/lib/ticket_evolution/venues.rb +8 -0
- data/lib/ticket_evolution/version.rb +3 -0
- data/lib/ticket_evolution.rb +108 -0
- data/spec/fixtures/fake.rb +97 -0
- data/spec/fixtures/net/endpoints/accounts.yml +175 -0
- data/spec/fixtures/net/endpoints/brokerages.yml +257 -0
- data/spec/fixtures/net/endpoints/categories.yml +85 -0
- data/spec/fixtures/net/endpoints/clients.yml +243 -0
- data/spec/fixtures/net/endpoints/search.yml +93 -0
- data/spec/lib/ticket_evolution/account_spec.rb +7 -0
- data/spec/lib/ticket_evolution/accounts_spec.rb +45 -0
- data/spec/lib/ticket_evolution/address_spec.rb +7 -0
- data/spec/lib/ticket_evolution/brokerage_spec.rb +7 -0
- data/spec/lib/ticket_evolution/brokerages_spec.rb +50 -0
- data/spec/lib/ticket_evolution/categories_spec.rb +27 -0
- data/spec/lib/ticket_evolution/category_spec.rb +7 -0
- data/spec/lib/ticket_evolution/client_spec.rb +7 -0
- data/spec/lib/ticket_evolution/clients/addresses_spec.rb +13 -0
- data/spec/lib/ticket_evolution/clients/credit_cards_spec.rb +11 -0
- data/spec/lib/ticket_evolution/clients/email_addresses_spec.rb +13 -0
- data/spec/lib/ticket_evolution/clients/phone_numbers_spec.rb +13 -0
- data/spec/lib/ticket_evolution/clients_spec.rb +37 -0
- data/spec/lib/ticket_evolution/configuration_spec.rb +7 -0
- data/spec/lib/ticket_evolution/configurations_spec.rb +10 -0
- data/spec/lib/ticket_evolution/core/api_error_spec.rb +13 -0
- data/spec/lib/ticket_evolution/core/base_spec.rb +29 -0
- data/spec/lib/ticket_evolution/core/builder_spec.rb +95 -0
- data/spec/lib/ticket_evolution/core/collection_spec.rb +23 -0
- data/spec/lib/ticket_evolution/core/connection_spec.rb +220 -0
- data/spec/lib/ticket_evolution/core/datum_spec.rb +15 -0
- data/spec/lib/ticket_evolution/core/endpoint_spec.rb +12 -0
- data/spec/lib/ticket_evolution/core/model_spec.rb +167 -0
- data/spec/lib/ticket_evolution/core/time_spec.rb +28 -0
- data/spec/lib/ticket_evolution/credit_card_spec.rb +7 -0
- data/spec/lib/ticket_evolution/email_address_spec.rb +7 -0
- data/spec/lib/ticket_evolution/errors/connection_not_found_spec.rb +7 -0
- data/spec/lib/ticket_evolution/errors/endpoint_configuration_error_spec.rb +8 -0
- data/spec/lib/ticket_evolution/errors/invalid_configuration_spec.rb +8 -0
- data/spec/lib/ticket_evolution/errors/method_unavailable_error_spec.rb +7 -0
- data/spec/lib/ticket_evolution/event_spec.rb +7 -0
- data/spec/lib/ticket_evolution/events_spec.rb +11 -0
- data/spec/lib/ticket_evolution/office_spec.rb +7 -0
- data/spec/lib/ticket_evolution/offices_spec.rb +11 -0
- data/spec/lib/ticket_evolution/order_spec.rb +44 -0
- data/spec/lib/ticket_evolution/orders_spec.rb +123 -0
- data/spec/lib/ticket_evolution/performer_spec.rb +7 -0
- data/spec/lib/ticket_evolution/performers_spec.rb +12 -0
- data/spec/lib/ticket_evolution/phone_number_spec.rb +7 -0
- data/spec/lib/ticket_evolution/quote_spec.rb +7 -0
- data/spec/lib/ticket_evolution/quotes_spec.rb +11 -0
- data/spec/lib/ticket_evolution/search_spec.rb +31 -0
- data/spec/lib/ticket_evolution/shipment_spec.rb +7 -0
- data/spec/lib/ticket_evolution/shipments_spec.rb +13 -0
- data/spec/lib/ticket_evolution/ticket_group_spec.rb +7 -0
- data/spec/lib/ticket_evolution/ticket_groups_spec.rb +14 -0
- data/spec/lib/ticket_evolution/user_spec.rb +7 -0
- data/spec/lib/ticket_evolution/users_spec.rb +15 -0
- data/spec/lib/ticket_evolution/venue_spec.rb +7 -0
- data/spec/lib/ticket_evolution/venues_spec.rb +12 -0
- data/spec/lib/ticket_evolution_spec.rb +20 -0
- data/spec/shared_examples/endpoints/class.rb +241 -0
- data/spec/shared_examples/endpoints/create.rb +41 -0
- data/spec/shared_examples/endpoints/deleted.rb +41 -0
- data/spec/shared_examples/endpoints/list.rb +41 -0
- data/spec/shared_examples/endpoints/search.rb +42 -0
- data/spec/shared_examples/endpoints/show.rb +38 -0
- data/spec/shared_examples/endpoints/update.rb +59 -0
- data/spec/shared_examples/errors.rb +5 -0
- data/spec/shared_examples/models.rb +29 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/connection.rb +10 -0
- data/spec/support/vcr.rb +12 -0
- data/ticketevolution-ruby.gemspec +33 -0
- metadata +384 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Endpoint do
|
|
4
|
+
let(:klass) { TicketEvolution::Endpoint }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Endpoint }
|
|
6
|
+
|
|
7
|
+
subject { klass }
|
|
8
|
+
|
|
9
|
+
its(:ancestors) { should include TicketEvolution::Base }
|
|
10
|
+
|
|
11
|
+
it_behaves_like "a ticket_evolution endpoint class"
|
|
12
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Model do
|
|
4
|
+
let(:klass) { TicketEvolution::Model }
|
|
5
|
+
let(:sample_klass) { TicketEvolution::Models::Samples }
|
|
6
|
+
let(:instance) { klass.new({:id => 1, :connection => connection}) }
|
|
7
|
+
let(:connection) { Fake.connection }
|
|
8
|
+
|
|
9
|
+
subject { klass }
|
|
10
|
+
|
|
11
|
+
its(:ancestors) { should include TicketEvolution::Builder }
|
|
12
|
+
|
|
13
|
+
describe "#initialize" do
|
|
14
|
+
context "when it receives an instance of connection" do
|
|
15
|
+
subject { klass.new({:connection => connection}) }
|
|
16
|
+
|
|
17
|
+
it "should not error" do
|
|
18
|
+
expect { subject }.to_not raise_error
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should not respond to #connection" do
|
|
22
|
+
subject.should_not respond_to :connection
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "when it does not receive an instance of connection" do
|
|
27
|
+
it "should raise a ConnectionNotFound error" do
|
|
28
|
+
message = "#{klass.name} must receive a TicketEvolution::Connection object on initialize"
|
|
29
|
+
expect { klass.new }.to raise_error TicketEvolution::ConnectionNotFound, message
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when it detects a scope in the url" do
|
|
34
|
+
let(:instance) { klass.new({:connection => connection, 'url' => '/clients/2/addresses/1'}) }
|
|
35
|
+
let(:scope) { '/clients/2' }
|
|
36
|
+
|
|
37
|
+
it "should set @scope" do
|
|
38
|
+
instance.instance_eval{ @scope }.should == scope
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "when it does not detect a scope in the url" do
|
|
43
|
+
it "should not error" do
|
|
44
|
+
expect { klass.new({:connection => connection}) }.to_not raise_error
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe "#process_datum" do
|
|
50
|
+
context "when dealing with a hash" do
|
|
51
|
+
context "which has a :url key" do
|
|
52
|
+
let(:hash) do
|
|
53
|
+
{
|
|
54
|
+
"url" => "/brokerages/227",
|
|
55
|
+
"name" => "Night To Remember Tickets",
|
|
56
|
+
"id" => "227",
|
|
57
|
+
"abbreviation" => "Night to Remember"
|
|
58
|
+
}
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should create an appropriate builder object" do
|
|
62
|
+
instance.instance_eval { @connection = Fake.connection }
|
|
63
|
+
instance.send(:process_datum, hash).should be_a TicketEvolution::Brokerage
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "which does not have a :url key" do
|
|
68
|
+
it "should instantiate a new TicketEvolution::Datum object" do
|
|
69
|
+
instance.send(:process_datum, {:one => 1}).should be_a TicketEvolution::Datum
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "#plural_class_name" do
|
|
76
|
+
let(:plural_name) { klass.name.demodulize.pluralize.camelize }
|
|
77
|
+
context "when there is a scope" do
|
|
78
|
+
before { instance.instance_eval{ @scope = '/events/1' } }
|
|
79
|
+
|
|
80
|
+
it "should include the scoped endpoint name in the pluralized version of the current class" do
|
|
81
|
+
instance.plural_class_name.should == "TicketEvolution::Events::#{plural_name}"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
context "when there is not a scope" do
|
|
86
|
+
it "should return the pluralized version of the current class" do
|
|
87
|
+
instance.plural_class_name.should == "TicketEvolution::#{plural_name}"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
describe "#plural_class" do
|
|
93
|
+
let(:plural_class_name) { "TicketEvolution::Models" }
|
|
94
|
+
it "call #constantize on the result of #plural_class_name" do
|
|
95
|
+
instance.should_receive(:plural_class_name).and_return(plural_class_name)
|
|
96
|
+
plural_class_name.should_receive(:constantize)
|
|
97
|
+
instance.plural_class
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe "#scope" do
|
|
102
|
+
context "when @scope is set" do
|
|
103
|
+
before { instance.instance_eval{ @scope = '/events/1' } }
|
|
104
|
+
let(:scope_hash) { { :class => "TicketEvolution::Events", :id => 1 } }
|
|
105
|
+
|
|
106
|
+
it "should return and array with class and id specified" do
|
|
107
|
+
instance.scope.should == scope_hash
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
context "when @scope is not set" do
|
|
112
|
+
it "should return nil" do
|
|
113
|
+
instance.scope.should == nil
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe "#attributes" do
|
|
119
|
+
let(:params) { {"one" => 1, "two" => 2} }
|
|
120
|
+
let(:expected) { HashWithIndifferentAccess.new(params) }
|
|
121
|
+
|
|
122
|
+
it "should return the set attributes" do
|
|
123
|
+
klass.new(params.merge(:connection => connection)).attributes.should == expected
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
describe "#attributes=" do
|
|
128
|
+
let(:initial) { {"one" => :one, "three" => 3} }
|
|
129
|
+
let(:params) { {"one" => 1, "two" => 2} }
|
|
130
|
+
let(:expected) { HashWithIndifferentAccess.new(initial.merge(params)) }
|
|
131
|
+
|
|
132
|
+
it "should set the passed attributes" do
|
|
133
|
+
instance = klass.new(initial.merge(:connection => connection))
|
|
134
|
+
instance.attributes = params
|
|
135
|
+
instance.attributes.should == expected
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
describe "#method_missing" do
|
|
140
|
+
context "when the method ends in 's'" do
|
|
141
|
+
it "should attempt to find a class which matches the missing method, scoped to it's plural namespace" do
|
|
142
|
+
instance.plural_class.should_receive(:const_defined?).with(:NoObjects)
|
|
143
|
+
instance.no_objects
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
context "when the method does not end in 's'" do
|
|
148
|
+
it "should fall back on the default functionality" do
|
|
149
|
+
expect { instance.no_object=('') }.to_not raise_error
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
context "when the missing class is found" do
|
|
154
|
+
before { @endpoint = instance.plural_class.new({:id => instance.id, :parent => connection}) }
|
|
155
|
+
|
|
156
|
+
it "should instantiate a new instance of the requested endpoint, passing a new instance of it's endpoint class as parent" do
|
|
157
|
+
instance.plural_class.should_receive(:new).with({
|
|
158
|
+
:connection => connection,
|
|
159
|
+
:id => instance.id
|
|
160
|
+
}).and_return(@endpoint)
|
|
161
|
+
sample_klass.should_receive(:new).with({:parent => @endpoint})
|
|
162
|
+
|
|
163
|
+
instance.samples
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Time do
|
|
4
|
+
let(:klass) { TicketEvolution::Time }
|
|
5
|
+
|
|
6
|
+
subject { klass }
|
|
7
|
+
|
|
8
|
+
its(:ancestors) { should include ::Time }
|
|
9
|
+
|
|
10
|
+
describe "#parse" do
|
|
11
|
+
context "with a valid string" do
|
|
12
|
+
let(:str) { "2011-12-18T17:30:06Z" }
|
|
13
|
+
let(:expected) { klass.gm(2011,12,18,17,30,06) }
|
|
14
|
+
|
|
15
|
+
subject { klass.parse(str) }
|
|
16
|
+
|
|
17
|
+
it { should == expected }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "with an invalid string" do
|
|
21
|
+
let(:str) { "I've got a lovely bunch of coconuts." }
|
|
22
|
+
|
|
23
|
+
subject { klass.parse(str) }
|
|
24
|
+
|
|
25
|
+
it { should == str }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Events do
|
|
4
|
+
let(:klass) { TicketEvolution::Events }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Event }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a deleted endpoint'
|
|
9
|
+
it_behaves_like 'a list endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Offices do
|
|
4
|
+
let(:klass) { TicketEvolution::Offices }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Office }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a search endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Order do
|
|
4
|
+
subject { TicketEvolution::Order }
|
|
5
|
+
let(:klass) { TicketEvolution::Order }
|
|
6
|
+
|
|
7
|
+
it_behaves_like "a ticket_evolution model"
|
|
8
|
+
|
|
9
|
+
describe "custom methods" do
|
|
10
|
+
let(:connection) { Fake.connection }
|
|
11
|
+
let(:instance) { klass.new({:connection => connection, 'id' => 1}) }
|
|
12
|
+
let(:params) { {:test => "1... 2... 3..."} }
|
|
13
|
+
let(:plural_klass) { TicketEvolution::Orders }
|
|
14
|
+
let!(:plural_klass_instance) { plural_klass.new(:parent => connection) }
|
|
15
|
+
|
|
16
|
+
before do
|
|
17
|
+
plural_klass.should_receive(:new).with(:parent => connection).and_return(plural_klass_instance)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe "#accept" do
|
|
21
|
+
it "should pass the request to TicketEvolution::Orders#accept_order" do
|
|
22
|
+
plural_klass_instance.should_receive(:accept_order).with(params).and_return(:dont_care)
|
|
23
|
+
|
|
24
|
+
instance.accept(params)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "#complete" do
|
|
29
|
+
it "should pass the request to TicketEvolution::Orders#complete_order" do
|
|
30
|
+
plural_klass_instance.should_receive(:complete_order).and_return(:dont_care)
|
|
31
|
+
|
|
32
|
+
instance.complete
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
describe "#reject" do
|
|
37
|
+
it "should pass the request to TicketEvolution::Orders#reject_order" do
|
|
38
|
+
plural_klass_instance.should_receive(:reject_order).with(params).and_return(:dont_care)
|
|
39
|
+
|
|
40
|
+
instance.reject(params)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Orders do
|
|
4
|
+
let(:klass) { TicketEvolution::Orders }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Order }
|
|
6
|
+
let(:instance) { klass.new({:parent => Fake.connection}) }
|
|
7
|
+
let(:update_base) { {} }
|
|
8
|
+
|
|
9
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
10
|
+
it_behaves_like 'a create endpoint'
|
|
11
|
+
it_behaves_like 'a list endpoint'
|
|
12
|
+
it_behaves_like 'a show endpoint'
|
|
13
|
+
it_behaves_like 'an update endpoint'
|
|
14
|
+
|
|
15
|
+
it "should respond to create_brokerage_order" do
|
|
16
|
+
instance.should respond_to :create_brokerage_order
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should respond to create_customer_order" do
|
|
20
|
+
instance.should respond_to :create_customer_order
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#accept_order" do
|
|
24
|
+
context "with an id" do
|
|
25
|
+
let(:instance) { klass.new({:parent => Fake.connection, :id => 1}) }
|
|
26
|
+
|
|
27
|
+
context "with params" do
|
|
28
|
+
let(:params) { {:reviewer_id => 1} }
|
|
29
|
+
|
|
30
|
+
it "should pass call request as a POST, passing params" do
|
|
31
|
+
instance.should_receive(:request).with(:POST, "/#{instance.id}/accept", params)
|
|
32
|
+
|
|
33
|
+
instance.accept_order(params)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "without params" do
|
|
38
|
+
it "should pass call request as a POST, passing params" do
|
|
39
|
+
instance.should_receive(:request).with(:POST, "/#{instance.id}/accept", nil)
|
|
40
|
+
|
|
41
|
+
instance.accept_order
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
context "without an id" do
|
|
47
|
+
it "should raise an UnavailableMethodError if there is no id" do
|
|
48
|
+
message = "#{klass.to_s}#accept_order can only be called if there is an id present on this #{klass.to_s} instance"
|
|
49
|
+
expect { instance.accept_order }.to raise_error TicketEvolution::MethodUnavailableError, message
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "#create_fulfillment_order" do
|
|
55
|
+
context "with params" do
|
|
56
|
+
let(:params) { {'some' => {'order' => 'info'}} }
|
|
57
|
+
|
|
58
|
+
it "should pass call request as a POST, passing params" do
|
|
59
|
+
instance.should_receive(:request).with(:POST, "/fulfillments", params)
|
|
60
|
+
|
|
61
|
+
instance.create_fulfillment_order(params)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "without params" do
|
|
66
|
+
it "should pass call request as a POST, passing params" do
|
|
67
|
+
instance.should_receive(:request).with(:POST, "/fulfillments", nil)
|
|
68
|
+
|
|
69
|
+
instance.create_fulfillment_order
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe "#reject_order" do
|
|
75
|
+
context "with an id" do
|
|
76
|
+
let(:instance) { klass.new({:parent => Fake.connection, :id => 1}) }
|
|
77
|
+
|
|
78
|
+
context "with params" do
|
|
79
|
+
let(:params) { {:rejection_reason => "IT'S A TRAP!!", :reviewer_id => 1} }
|
|
80
|
+
|
|
81
|
+
it "should pass call request as a POST, passing params" do
|
|
82
|
+
instance.should_receive(:request).with(:POST, "/#{instance.id}/reject", params)
|
|
83
|
+
|
|
84
|
+
instance.reject_order(params)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "without params" do
|
|
89
|
+
it "should pass call request as a POST, passing params" do
|
|
90
|
+
instance.should_receive(:request).with(:POST, "/#{instance.id}/reject", nil)
|
|
91
|
+
|
|
92
|
+
instance.reject_order
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
context "without an id" do
|
|
98
|
+
it "should raise an UnavailableMethodError if there is no id" do
|
|
99
|
+
message = "#{klass.to_s}#reject_order can only be called if there is an id present on this #{klass.to_s} instance"
|
|
100
|
+
expect { instance.reject_order }.to raise_error TicketEvolution::MethodUnavailableError, message
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe "#complete_order" do
|
|
106
|
+
context "with an id" do
|
|
107
|
+
let(:instance) { klass.new({:parent => Fake.connection, :id => 1}) }
|
|
108
|
+
|
|
109
|
+
it "should pass call request as a POST, passing params" do
|
|
110
|
+
instance.should_receive(:request).with(:POST, "/#{instance.id}/complete", nil)
|
|
111
|
+
|
|
112
|
+
instance.complete_order
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "without an id" do
|
|
117
|
+
it "should raise an UnavailableMethodError if there is no id" do
|
|
118
|
+
message = "#{klass.to_s}#complete_order can only be called if there is an id present on this #{klass.to_s} instance"
|
|
119
|
+
expect { instance.complete_order }.to raise_error TicketEvolution::MethodUnavailableError, message
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Performers do
|
|
4
|
+
let(:klass) { TicketEvolution::Performers }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Performer }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a search endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
it_behaves_like 'a deleted endpoint'
|
|
12
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Quotes do
|
|
4
|
+
let(:klass) { TicketEvolution::Quotes }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Quote }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a search endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Search do
|
|
4
|
+
let(:klass) { TicketEvolution::Search }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Search }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
|
|
9
|
+
context "integration tests" do
|
|
10
|
+
use_vcr_cassette "endpoints/search", :record => :new_episodes
|
|
11
|
+
|
|
12
|
+
it "returns a list of results" do
|
|
13
|
+
search_results = connection.search.list(:q => "rangers", :per_page => 5, :page => 1)
|
|
14
|
+
|
|
15
|
+
search_results.per_page.should == 5
|
|
16
|
+
search_results.current_page.should == 1
|
|
17
|
+
search_results.total_entries.should == 5
|
|
18
|
+
|
|
19
|
+
# Make sure that we have only and Venue and Performers
|
|
20
|
+
venues = search_results.select{|r| r.is_a?(TicketEvolution::Venue)}
|
|
21
|
+
venues.size.should > 0
|
|
22
|
+
|
|
23
|
+
performers = search_results.select{|r| r.is_a?(TicketEvolution::Performer)}
|
|
24
|
+
performers.size.should > 0
|
|
25
|
+
|
|
26
|
+
search_results.each do |result|
|
|
27
|
+
result.should be_a TicketEvolution::Model
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Shipments do
|
|
4
|
+
let(:klass) { TicketEvolution::Shipments }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Shipment }
|
|
6
|
+
let(:update_base) { {} }
|
|
7
|
+
|
|
8
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
9
|
+
it_behaves_like 'a list endpoint'
|
|
10
|
+
it_behaves_like 'a create endpoint'
|
|
11
|
+
it_behaves_like 'an update endpoint'
|
|
12
|
+
it_behaves_like 'a show endpoint'
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::TicketGroups do
|
|
4
|
+
let(:klass) { TicketEvolution::TicketGroups }
|
|
5
|
+
let(:single_klass) { TicketEvolution::TicketGroup }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a show endpoint'
|
|
10
|
+
|
|
11
|
+
it "should have a base path of /ticket_groups" do
|
|
12
|
+
klass.new({:parent => Fake.connection}).base_path.should == '/ticket_groups'
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Users do
|
|
4
|
+
let(:klass) { TicketEvolution::Users }
|
|
5
|
+
let(:single_klass) { TicketEvolution::User }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a search endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
|
|
12
|
+
it "should have a base path of /users" do
|
|
13
|
+
klass.new({:parent => Fake.connection}).base_path.should == '/users'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe TicketEvolution::Venues do
|
|
4
|
+
let(:klass) { TicketEvolution::Venues }
|
|
5
|
+
let(:single_klass) { TicketEvolution::Venue }
|
|
6
|
+
|
|
7
|
+
it_behaves_like 'a ticket_evolution endpoint class'
|
|
8
|
+
it_behaves_like 'a list endpoint'
|
|
9
|
+
it_behaves_like 'a search endpoint'
|
|
10
|
+
it_behaves_like 'a show endpoint'
|
|
11
|
+
it_behaves_like 'a deleted endpoint'
|
|
12
|
+
end
|