bws 0.2.1.pre

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.
Files changed (66) hide show
  1. data/.document +5 -0
  2. data/Gemfile +17 -0
  3. data/Gemfile.lock +36 -0
  4. data/LICENSE +20 -0
  5. data/README.rdoc +116 -0
  6. data/Rakefile +56 -0
  7. data/VERSION +1 -0
  8. data/bws.gemspec +133 -0
  9. data/lib/bws.rb +13 -0
  10. data/lib/bws/acknowledge_order.rb +11 -0
  11. data/lib/bws/active_isbn_report.rb +27 -0
  12. data/lib/bws/checkout.rb +30 -0
  13. data/lib/bws/client.rb +807 -0
  14. data/lib/bws/create_shipment.rb +11 -0
  15. data/lib/bws/fillable_orders.rb +15 -0
  16. data/lib/bws/inventory.rb +58 -0
  17. data/lib/bws/order.rb +10 -0
  18. data/lib/bws/order_events.rb +28 -0
  19. data/lib/bws/orders.rb +14 -0
  20. data/lib/bws/reject_line_item.rb +11 -0
  21. data/lib/bws/response.rb +8 -0
  22. data/lib/bws/unacknowledged_orders.rb +23 -0
  23. data/test/fixtures/acknowledge_success.xml +11 -0
  24. data/test/fixtures/active_isbn_report_with_one_isbn_request_body.xml +13 -0
  25. data/test/fixtures/active_isbn_report_with_one_isbn_success.xml +38 -0
  26. data/test/fixtures/active_isbn_report_with_two_isbns_request_body.xml +16 -0
  27. data/test/fixtures/active_isbn_report_with_two_isbns_success.xml +57 -0
  28. data/test/fixtures/cancel_line_item_success.xml +11 -0
  29. data/test/fixtures/create_order_request_body.xml +70 -0
  30. data/test/fixtures/create_order_response_success.xml +14 -0
  31. data/test/fixtures/create_shipment_success.xml +11 -0
  32. data/test/fixtures/fillable_success.xml +127 -0
  33. data/test/fixtures/inventory_by_isbn_success.xml +36 -0
  34. data/test/fixtures/inventory_success.xml +54 -0
  35. data/test/fixtures/order_events_by_order_success.xml +68 -0
  36. data/test/fixtures/order_events_success.xml +65 -0
  37. data/test/fixtures/order_success.xml +37 -0
  38. data/test/fixtures/orders_show_success.xml +37 -0
  39. data/test/fixtures/price_order_request_body.xml +46 -0
  40. data/test/fixtures/price_order_response_success.xml +63 -0
  41. data/test/fixtures/single_post_create_order_request_body.xml +62 -0
  42. data/test/fixtures/single_post_create_order_response_success.xml +13 -0
  43. data/test/fixtures/unacknowledged_success.xml +122 -0
  44. data/test/fixtures/unacknowledged_success_0_orders.xml +12 -0
  45. data/test/fixtures/unacknowledged_success_1_order.xml +37 -0
  46. data/test/fixtures/validate_credit_card_request_body.xml +39 -0
  47. data/test/fixtures/validate_credit_card_response_success.xml +14 -0
  48. data/test/helper.rb +23 -0
  49. data/test/integration/test_bws_active_isbn_report.rb +28 -0
  50. data/test/integration/test_bws_retrieve_inventory.rb +31 -0
  51. data/test/unit/test_bws_acknowledge_order.rb +24 -0
  52. data/test/unit/test_bws_active_isbn_report.rb +45 -0
  53. data/test/unit/test_bws_checkout.rb +117 -0
  54. data/test/unit/test_bws_client.rb +370 -0
  55. data/test/unit/test_bws_create_shipment.rb +26 -0
  56. data/test/unit/test_bws_fillable_orders.rb +41 -0
  57. data/test/unit/test_bws_order.rb +25 -0
  58. data/test/unit/test_bws_reject_line_item.rb +26 -0
  59. data/test/unit/test_bws_response.rb +7 -0
  60. data/test/unit/test_bws_retrieve_inventory.rb +42 -0
  61. data/test/unit/test_bws_retrieve_inventory_by_isbn.rb +25 -0
  62. data/test/unit/test_bws_retrieve_order_events.rb +42 -0
  63. data/test/unit/test_bws_retrieve_order_events_by_order.rb +37 -0
  64. data/test/unit/test_bws_unacknowledged_orders.rb +74 -0
  65. data/test/unit/test_retrieve_orders_show.rb +27 -0
  66. metadata +293 -0
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+
3
+ class TestBwsAcknowledgeOrder < Test::Unit::TestCase
4
+ def setup
5
+ FakeWeb.allow_net_connect = false
6
+ end
7
+
8
+ context "acknowledge success" do
9
+ setup do
10
+ @key = 'my_api_key'
11
+ @url_prefix = 'https://bws.bookrenter.com/v1'
12
+ @client = BWS::Client.new(@key)
13
+ @url = "/distributor_orders/BR-1234/acknowledge.xml"
14
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'acknowledge_success.xml')
15
+ @response = @client.acknowledge_order({'order' => 'data', 'public_id' => 'BR-1234', 'distributor_line_items' => {'distributor_line_item' => {'public_id' => 'some-line-item-public-id'}}})
16
+ end
17
+
18
+ context ".result" do
19
+ should "be true" do
20
+ assert_equal true, @response.result
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,45 @@
1
+ require 'helper'
2
+
3
+ class TestBwsActiveIsbnReport < Test::Unit::TestCase
4
+ def setup
5
+ FakeWeb.allow_net_connect = false
6
+ end
7
+
8
+ context "active isbn report success" do
9
+ setup do
10
+ @key = 'my_api_key'
11
+ @url_prefix = 'https://bws.bookrenter.com/v1'
12
+ @client = BWS::Client.new(@key)
13
+ @url = "/reports/active_isbn_report.xml"
14
+ end
15
+
16
+ context "active_isbn_report with one isbn" do
17
+ setup do
18
+ @active_isbn_report_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "active_isbn_report_with_one_isbn_request_body.xml"))
19
+ @active_isbn_report_hash = Hash.from_xml(@active_isbn_report_request_body_xml)["reports_active_isbn_report"]
20
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'active_isbn_report_with_one_isbn_success.xml')
21
+ end
22
+
23
+ should "title not nil" do
24
+ @response = @client.retrieve_active_isbn_report @active_isbn_report_hash
25
+ assert_equal 1, @response.active_isbns.size
26
+ assert_equal "Managerial Accounting", @response.active_isbns.first['title']
27
+ end
28
+ end
29
+
30
+ context "active_isbn_report with two isbns" do
31
+ setup do
32
+ @active_isbn_report_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "active_isbn_report_with_two_isbns_request_body.xml"))
33
+ @active_isbn_report_hash = Hash.from_xml(@active_isbn_report_request_body_xml)["reports_active_isbn_report"]
34
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'active_isbn_report_with_two_isbns_success.xml')
35
+ end
36
+
37
+ should "title not nil" do
38
+ @response = @client.retrieve_active_isbn_report @active_isbn_report_hash
39
+ assert_equal 2, @response.active_isbns.size
40
+ assert_equal "Managerial Accounting", @response.active_isbns.first['title']
41
+ assert_equal "Managerial Accounting II", @response.active_isbns.last['title']
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,117 @@
1
+ require 'helper'
2
+
3
+ class TestBwsCheckout < Test::Unit::TestCase
4
+ def setup
5
+ FakeWeb.allow_net_connect = false
6
+ end
7
+
8
+ context "checkout price order success" do
9
+ setup do
10
+ @key = 'my_api_key'
11
+ @url_prefix = 'https://bws.bookrenter.com/v1'
12
+ @client = BWS::Client.new(@key)
13
+ @price_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "price_order_request_body.xml"))
14
+ @checkout_price_order_hash = Hash.from_xml(@price_order_request_body_xml)['checkout_price_order']
15
+ @url = "/checkout/price_order.xml"
16
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'price_order_response_success.xml')
17
+ end
18
+
19
+ context ".price_order" do
20
+ should "checkout_verification_code not nil" do
21
+ @response = @client.checkout_price_order @checkout_price_order_hash
22
+ assert_not_nil @response.price_order['checkout_verification_code']
23
+ end
24
+
25
+ should "customer_verification_code not nil" do
26
+ @response = @client.checkout_price_order @checkout_price_order_hash
27
+ assert_not_nil @response.price_order['customer']['customer_verification_code']
28
+ end
29
+
30
+ should "product_list_verification_code not nil" do
31
+ @response = @client.checkout_price_order @checkout_price_order_hash
32
+ assert_not_nil @response.price_order['product_list']['product_list_verification_code']
33
+ end
34
+
35
+ should "billing_address_verification_code not nil" do
36
+ @response = @client.checkout_price_order @checkout_price_order_hash
37
+ assert_not_nil @response.price_order['billing_address']['billing_address_verification_code']
38
+ end
39
+
40
+ should "shipping_address_verification_code not nil" do
41
+ @response = @client.checkout_price_order @checkout_price_order_hash
42
+ assert_not_nil @response.price_order['shipping_address']['shipping_address_verification_code']
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ context "checkout validate credit card success" do
49
+ setup do
50
+ @key = 'my_api_key'
51
+ @url_prefix = 'https://bws.bookrenter.com/v1'
52
+ @client = BWS::Client.new(@key)
53
+ @validate_credit_card_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "validate_credit_card_request_body.xml"))
54
+ @checkout_validate_credit_card_hash = Hash.from_xml(@validate_credit_card_request_body_xml)['checkout_validate_credit_card']
55
+ @url = "/checkout/validate_credit_card.xml"
56
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'validate_credit_card_response_success.xml')
57
+ end
58
+
59
+ context ".validate_credit_card" do
60
+ should "checkout_verification_code not nil" do
61
+ @response = @client.checkout_validate_credit_card @checkout_validate_credit_card_hash
62
+ assert_not_nil @response.validate_credit_card['checkout_verification_code']
63
+ end
64
+
65
+ should "credit_card_verification_code not nil" do
66
+ @response = @client.checkout_validate_credit_card @checkout_validate_credit_card_hash
67
+ assert_not_nil @response.validate_credit_card['credit_card']['credit_card_verification_code']
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ context "checkout create order success" do
74
+ setup do
75
+ @key = 'my_api_key'
76
+ @url_prefix = 'https://bws.bookrenter.com/v1'
77
+ @client = BWS::Client.new(@key)
78
+ @create_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "create_order_request_body.xml"))
79
+ @checkout_create_order_hash = Hash.from_xml(@create_order_request_body_xml)['checkout_create_order']
80
+ @url = "/checkout/create_order.xml"
81
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'create_order_response_success.xml')
82
+ end
83
+
84
+ context ".create_order" do
85
+ should "checkout_verification_code not nil" do
86
+ @response = @client.checkout_create_order @checkout_create_order_hash
87
+ assert_not_nil @response.create_order['checkout_verification_code']
88
+ end
89
+
90
+ should "public_id not nil" do
91
+ @response = @client.checkout_create_order @checkout_create_order_hash
92
+ assert_not_nil @response.create_order['order']['public_id']
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ context "checkout single post create order success" do
99
+ setup do
100
+ @key = 'my_api_key'
101
+ @url_prefix = 'https://bws.bookrenter.com/v1'
102
+ @client = BWS::Client.new(@key)
103
+ @single_post_create_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "single_post_create_order_request_body.xml"))
104
+ @checkout_single_post_create_order_hash = Hash.from_xml(@single_post_create_order_request_body_xml)['checkout_single_post_create_order']
105
+ @url = "/checkout/single_post_create_order.xml"
106
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'single_post_create_order_response_success.xml')
107
+ end
108
+
109
+ context ".single_post_create_order" do
110
+ should "public_id not nil" do
111
+ @response = @client.checkout_single_post_create_order @checkout_single_post_create_order_hash
112
+ assert_not_nil @response.single_post_create_order['order']['public_id']
113
+ end
114
+ end
115
+
116
+ end
117
+ end
@@ -0,0 +1,370 @@
1
+ require 'helper'
2
+ require 'active_support/core_ext'
3
+
4
+ class TestBwsClient < Test::Unit::TestCase
5
+ def setup
6
+ FakeWeb.allow_net_connect = false
7
+ end
8
+
9
+ context "initializing" do
10
+ should "accept and store an API KEY" do
11
+ client = BWS::Client.new('my_api_key')
12
+ assert_equal BWS::Client, client.class
13
+ assert_equal client.api_key, 'my_api_key'
14
+ end
15
+
16
+ should "accept an use an optional passed in base_uri" do
17
+ client = BWS::Client.new('my_api_key', 'http://some_uri.com')
18
+ assert_equal client.base_uri, 'http://some_uri.com'
19
+ BWS::Client.expects(:get).with('http://some_uri.com/distributor_orders/unacknowledged.xml?page=1&api_key=my_api_key', :timeout => 5)
20
+ client.unacknowledged_orders
21
+ end
22
+
23
+ should "raise an error if no API KEY is passed in" do
24
+ assert_raise(BWS::Client::MissingApiKey) { BWS::Client.new() }
25
+ end
26
+ end
27
+
28
+ context "with a working client" do
29
+ setup do
30
+ @key = 'my_api_key'
31
+ @url_prefix = 'https://bws.bookrenter.com/v1'
32
+ @client = BWS::Client.new(@key)
33
+ end
34
+
35
+ context "requesting unacknowledged orders" do
36
+ setup do
37
+ @url = "/distributor_orders/unacknowledged.xml?page=1"
38
+ fake_get("#{@url_prefix}#{@url}&api_key=#{@key}", 'unacknowledged_success.xml')
39
+ end
40
+
41
+ should "load the API page" do
42
+ @client.expects(:get).with(@url)
43
+ @client.unacknowledged_orders
44
+ end
45
+
46
+ should "return a BWS::UnacknowledgedOrders object" do
47
+ assert_equal BWS::UnacknowledgedOrders, @client.unacknowledged_orders.class
48
+ end
49
+
50
+ should "load subsequent pages" do
51
+ @client.expects(:get).with(@url.gsub!('page=1', 'page=3'))
52
+ @client.unacknowledged_orders(3)
53
+ end
54
+ end
55
+
56
+ context "requesting fillable orders" do
57
+ setup do
58
+ @url = "/distributor_orders/fillable.xml?page=1"
59
+ fake_get("#{@url_prefix}#{@url}&api_key=#{@key}", 'fillable_success.xml')
60
+ end
61
+
62
+ should "load the API page" do
63
+ @client.expects(:get).with(@url)
64
+ @client.fillable_orders
65
+ end
66
+
67
+ should "return a BWS::FillableOrders object" do
68
+ assert_equal BWS::FillableOrders, @client.fillable_orders.class
69
+ end
70
+
71
+ should "load subsequent pages" do
72
+ @client.expects(:get).with(@url.gsub!('page=1', 'page=3'))
73
+ @client.fillable_orders(3)
74
+ end
75
+ end
76
+
77
+ context "requesting an order" do
78
+ setup do
79
+ @order_id = 'test_order_id'
80
+ @url = "/distributor_orders/#{@order_id}.xml"
81
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'order_success.xml')
82
+ end
83
+
84
+ should "load the API page" do
85
+ @client.expects(:get).with(@url)
86
+ @client.order(@order_id)
87
+ end
88
+
89
+ should "raise an error if there is no order_id passed in" do
90
+ assert_raise(BWS::Client::BadParams) { @client.order }
91
+ end
92
+
93
+ should "return a BWS::Order object" do
94
+ assert_equal BWS::Order, @client.order(@order_id).class
95
+ end
96
+ end
97
+
98
+ context "acknowledging an order" do
99
+ setup do
100
+ @order_id = 'test_order_id'
101
+ @order_hash = {'order' => 'data', 'public_id' => @order_id, 'distributor_line_items' => {'distributor_line_item' => {'public_id' => 'some-line-item-public-id', 'status' => 'accepted'}}}
102
+ @url = "/distributor_orders/#{@order_id}/acknowledge.xml"
103
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'acknowledge_success.xml')
104
+ end
105
+
106
+ should "raise an error if there is no hash passed in" do
107
+ assert_raise(BWS::Client::BadParams) { @client.acknowledge_order }
108
+ end
109
+
110
+ should "post to the order acknowledge page" do
111
+ @client.expects(:post).with(@url, '<envelope><body><distributor_orders_acknowledge><distributor_order><public_id>test_order_id</public_id><distributor_line_items><distributor_line_item><public_id>some-line-item-public-id</public_id><status>accepted</status></distributor_line_item></distributor_line_items></distributor_order></distributor_orders_acknowledge></body></envelope>')
112
+ @client.acknowledge_order(@order_hash)
113
+ end
114
+
115
+ should "return a BWS::AcknowledgeOrder object" do
116
+ assert_equal BWS::AcknowledgeOrder, @client.acknowledge_order(@order_hash).class
117
+ end
118
+ end
119
+
120
+ context "creating a shipment" do
121
+ setup do
122
+ @order_id = 'test_order_id'
123
+ @order_hash = {'order' => 'data', 'public_id' => @order_id, 'distributor_line_items' => []}
124
+ @url = "/distributor_orders/#{@order_id}/distributor_outbound_shipments.xml"
125
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'create_shipment_success.xml')
126
+ end
127
+
128
+ should "raise an error if there is no hash passed in" do
129
+ assert_raise(BWS::Client::BadParams) { @client.create_shipment }
130
+ end
131
+
132
+ should "post to the order acknowledge page" do
133
+ @client.expects(:post).with(@url, '<envelope><body><distributor_outbound_shipments_create><distributor_outbound_shipment><shipping_method></shipping_method><carrier></carrier><distributor_line_items></distributor_line_items></distributor_outbound_shipment></distributor_outbound_shipments_create></body></envelope>')
134
+ @client.create_shipment(@order_hash)
135
+ end
136
+
137
+ should "return a BWS::CreateShipment object" do
138
+ assert_equal BWS::CreateShipment, @client.create_shipment(@order_hash).class
139
+ end
140
+ end
141
+
142
+ context "cancelling a line item" do
143
+ setup do
144
+ @order_id = 'test_order_id'
145
+ @order_hash = {'order' => 'data', 'public_id' => @order_id}
146
+ @url = "/distributor_line_items/#{@order_id}/reject.xml"
147
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'cancel_line_item_success.xml')
148
+ end
149
+
150
+ should "raise an error if there is no hash passed in" do
151
+ assert_raise(BWS::Client::BadParams) { @client.reject_line_item }
152
+ end
153
+
154
+ should "post to the order acknowledge page" do
155
+ @client.expects(:post).with(@url, '<envelope><body><distributor_line_items_reject><distributor_line_item><public_id>test_order_id</public_id><status>rejected</status><reject_reason></reject_reason></distributor_line_item></distributor_line_items_reject></body></envelope>')
156
+ @client.reject_line_item(@order_hash)
157
+ end
158
+
159
+ should "return a BWS::RejectLineItem object" do
160
+ assert_equal BWS::RejectLineItem, @client.reject_line_item(@order_hash).class
161
+ end
162
+ end
163
+
164
+ #
165
+ # This context concentrates on the inventory portion of the API
166
+ #
167
+ context "Acquiring Inventory" do
168
+ setup do
169
+ @url = "/inventory_books.xml"
170
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'inventory_success.xml')
171
+ end
172
+
173
+ should "Should return an BWS::Inventory object" do
174
+ assert_equal BWS::Inventory, @client.retrieve_inventory.class
175
+ end
176
+
177
+ end
178
+
179
+ context "Acquiring Inventory By ISBN" do
180
+ setup do
181
+ @isbn = "9780007138210"
182
+ @url = "/inventory_books/#{@isbn}.xml"
183
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'inventory_by_isbn_success.xml')
184
+ end
185
+
186
+ should "Should return an BWS::Inventory object" do
187
+ assert_equal BWS::Inventory, @client.retrieve_inventory_by_isbn(@isbn, nil).class
188
+ end
189
+
190
+ end
191
+
192
+ #
193
+ # This context concentrates on the order_events portion of the API
194
+ #
195
+ context "Acquiring OrderEvents" do
196
+ setup do
197
+ @url = "/order_events.xml"
198
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'order_events_success.xml')
199
+ end
200
+
201
+ should "Should return an BWS::OrderEvents object" do
202
+ assert_equal BWS::OrderEvents, @client.retrieve_order_events.class
203
+ end
204
+
205
+ end
206
+
207
+ context "Acquiring OrderEvents By Order" do
208
+ setup do
209
+ @br_order_id = 'BR-A07824046'
210
+ @url = "/order_events/#{@br_order_id}.xml"
211
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'order_events_by_order_success.xml')
212
+ end
213
+
214
+ should "Should return an BWS::OrderEvents object" do
215
+ assert_equal BWS::OrderEvents, @client.retrieve_order_events_by_order(nil, @br_order_id).class
216
+ end
217
+
218
+ end
219
+
220
+ #
221
+ # This context concentrates on the checkout price order portion of the API
222
+ #
223
+ context "checkout price order" do
224
+ setup do
225
+ @price_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "price_order_request_body.xml"))
226
+ @checkout_price_order_hash = Hash.from_xml(@price_order_request_body_xml)['checkout_price_order']
227
+ @url = "/checkout/price_order.xml"
228
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'price_order_response_success.xml')
229
+ end
230
+
231
+ should "raise an error if there is no hash passed in" do
232
+ assert_raise(BWS::Client::BadParams) { @client.checkout_price_order }
233
+ end
234
+
235
+ should "post to the checkout_price_order" do
236
+ @client.checkout_price_order(@checkout_price_order_hash)
237
+ end
238
+
239
+ should "return a BWS::Checkout object" do
240
+ assert_equal BWS::Checkout, @client.checkout_price_order(@checkout_price_order_hash).class
241
+ end
242
+ end
243
+
244
+ #
245
+ # This context concentrates on the checkout validate credit card portion of the API
246
+ #
247
+ context "checkout validate credit card " do
248
+ setup do
249
+ @validate_credit_card_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "validate_credit_card_request_body.xml"))
250
+ @checkout_validate_credit_card_hash = Hash.from_xml(@validate_credit_card_request_body_xml)['checkout_validate_credit_card']
251
+ @url = "/checkout/validate_credit_card.xml"
252
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'validate_credit_card_response_success.xml')
253
+ end
254
+
255
+ should "raise an error if there is no hash passed in" do
256
+ assert_raise(BWS::Client::BadParams) { @client.checkout_validate_credit_card }
257
+ end
258
+
259
+ should "post to the checkout_validate_credit_card" do
260
+ @client.checkout_validate_credit_card(@checkout_validate_credit_card_hash)
261
+ end
262
+
263
+ should "return a BWS::Checkout object" do
264
+ assert_equal BWS::Checkout, @client.checkout_validate_credit_card(@checkout_validate_credit_card_hash).class
265
+ end
266
+ end
267
+
268
+ #
269
+ # This context concentrates on the checkout create order portion of the API
270
+ #
271
+ context "checkout create order" do
272
+ setup do
273
+ @create_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "create_order_request_body.xml"))
274
+ @checkout_create_order_hash = Hash.from_xml(@create_order_request_body_xml)['checkout_create_order']
275
+ @url = "/checkout/create_order.xml"
276
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'create_order_response_success.xml')
277
+ end
278
+
279
+ should "raise an error if there is no hash passed in" do
280
+ assert_raise(BWS::Client::BadParams) { @client.checkout_create_order }
281
+ end
282
+
283
+ should "post to the checkout_create_order" do
284
+ @client.checkout_create_order(@checkout_create_order_hash)
285
+ end
286
+
287
+ should "return a BWS::Checkout object" do
288
+ assert_equal BWS::Checkout, @client.checkout_create_order(@checkout_create_order_hash).class
289
+ end
290
+ end
291
+
292
+ #
293
+ # This context concentrates on the checkout create order portion of the API
294
+ #
295
+ context "checkout single post create order" do
296
+ setup do
297
+ @single_post_create_order_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "single_post_create_order_request_body.xml"))
298
+ @checkout_single_post_create_order_hash = Hash.from_xml(@single_post_create_order_request_body_xml)['checkout_single_post_create_order']
299
+ @url = "/checkout/single_post_create_order.xml"
300
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'single_post_create_order_response_success.xml')
301
+ end
302
+
303
+ should "raise an error if there is no hash passed in" do
304
+ assert_raise(BWS::Client::BadParams) { @client.checkout_single_post_create_order }
305
+ end
306
+
307
+ should "post to the checkout_single_post_create_order" do
308
+ @client.checkout_single_post_create_order(@checkout_single_post_create_order_hash)
309
+ end
310
+
311
+ should "return a BWS::Checkout object" do
312
+ assert_equal BWS::Checkout, @client.checkout_single_post_create_order(@checkout_single_post_create_order_hash).class
313
+ end
314
+ end
315
+
316
+ #
317
+ # This context concentrates on the orders portion of the API
318
+ #
319
+ context "Acquiring Orders by public_id" do
320
+ setup do
321
+ @public_id = "public_id"
322
+ @url = "/orders/#{@public_id}.xml"
323
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'orders_show_success.xml')
324
+ end
325
+
326
+ should "Should return an BWS::Orders object" do
327
+ assert_equal BWS::Orders, @client.retrieve_orders_show(@public_id).class
328
+ end
329
+
330
+ end
331
+
332
+ context "Acquiring Orders By external_order_id" do
333
+ setup do
334
+ @external_order_id = "external_order_id"
335
+ @url = "/orders/#{@external_order_id}.xml"
336
+ fake_get("#{@url_prefix}#{@url}?api_key=#{@key}", 'orders_show_success.xml')
337
+ end
338
+
339
+ should "Should return an BWS::Orders object" do
340
+ assert_equal BWS::Orders, @client.retrieve_orders_show(@external_order_id).class
341
+ end
342
+
343
+ end
344
+
345
+ #
346
+ # This context concentrates on the active isbn report portion of the API
347
+ #
348
+ context "active isbn report" do
349
+ setup do
350
+ @active_isbn_report_request_body_xml = File.read(File.join(File.dirname(__FILE__), '../fixtures', "active_isbn_report_with_one_isbn_request_body.xml"))
351
+ @active_isbn_report_hash = Hash.from_xml(@active_isbn_report_request_body_xml)["reports_active_isbn_report"]
352
+ @url = "/reports/active_isbn_report.xml"
353
+ fake_post("#{@url_prefix}#{@url}?api_key=#{@key}", 'active_isbn_report_with_one_isbn_success.xml')
354
+ end
355
+
356
+ should "raise an error if there is no hash passed in" do
357
+ assert_raise(BWS::Client::BadParams) { @client.retrieve_active_isbn_report }
358
+ end
359
+
360
+ should "post to active_isbn_report" do
361
+ @client.retrieve_active_isbn_report(@active_isbn_report_hash)
362
+ end
363
+
364
+ should "return a BWS::Checkout object" do
365
+ assert_equal BWS::ActiveIsbnReport, @client.retrieve_active_isbn_report(@active_isbn_report_hash).class
366
+ end
367
+ end
368
+
369
+ end
370
+ end