mws-rb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/.gitignore +1 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +73 -0
  4. data/Guardfile +8 -0
  5. data/LICENSE +20 -0
  6. data/README.markdown +90 -0
  7. data/Rakefile +1 -0
  8. data/lib/mws-rb.rb +50 -0
  9. data/lib/mws-rb/api/base.rb +48 -0
  10. data/lib/mws-rb/api/feeds.rb +29 -0
  11. data/lib/mws-rb/api/feeds/envelope.rb +61 -0
  12. data/lib/mws-rb/api/feeds/xsd/AdditionalProductInformation.xsd +23 -0
  13. data/lib/mws-rb/api/feeds/xsd/Amazon.xsd +94 -0
  14. data/lib/mws-rb/api/feeds/xsd/Arts.xsd +144 -0
  15. data/lib/mws-rb/api/feeds/xsd/AutoAccessory.xsd +1714 -0
  16. data/lib/mws-rb/api/feeds/xsd/Baby.xsd +206 -0
  17. data/lib/mws-rb/api/feeds/xsd/Beauty.xsd +170 -0
  18. data/lib/mws-rb/api/feeds/xsd/Books.xsd +135 -0
  19. data/lib/mws-rb/api/feeds/xsd/CE.xsd +2878 -0
  20. data/lib/mws-rb/api/feeds/xsd/CameraPhoto.xsd +2612 -0
  21. data/lib/mws-rb/api/feeds/xsd/ClothingAccessories.xsd +128 -0
  22. data/lib/mws-rb/api/feeds/xsd/Computers.xsd +2347 -0
  23. data/lib/mws-rb/api/feeds/xsd/EUCompliance.xsd +24 -0
  24. data/lib/mws-rb/api/feeds/xsd/EntertainmentCollectibles.xsd +99 -0
  25. data/lib/mws-rb/api/feeds/xsd/FBA.xsd +28 -0
  26. data/lib/mws-rb/api/feeds/xsd/FoodAndBeverages.xsd +1000 -0
  27. data/lib/mws-rb/api/feeds/xsd/FoodServiceAndJanSan.xsd +216 -0
  28. data/lib/mws-rb/api/feeds/xsd/FulfillmentCenter.xsd +57 -0
  29. data/lib/mws-rb/api/feeds/xsd/GiftCards.xsd +97 -0
  30. data/lib/mws-rb/api/feeds/xsd/Gourmet.xsd +85 -0
  31. data/lib/mws-rb/api/feeds/xsd/Health.xsd +335 -0
  32. data/lib/mws-rb/api/feeds/xsd/Home.xsd +1362 -0
  33. data/lib/mws-rb/api/feeds/xsd/HomeImprovement.xsd +1065 -0
  34. data/lib/mws-rb/api/feeds/xsd/Industrial.xsd +315 -0
  35. data/lib/mws-rb/api/feeds/xsd/Inventory.xsd +49 -0
  36. data/lib/mws-rb/api/feeds/xsd/Jewelry.xsd +916 -0
  37. data/lib/mws-rb/api/feeds/xsd/LabSupplies.xsd +178 -0
  38. data/lib/mws-rb/api/feeds/xsd/LargeAppliances.xsd +646 -0
  39. data/lib/mws-rb/api/feeds/xsd/Lighting.xsd +243 -0
  40. data/lib/mws-rb/api/feeds/xsd/Listings.xsd +32 -0
  41. data/lib/mws-rb/api/feeds/xsd/Luggage.xsd +93 -0
  42. data/lib/mws-rb/api/feeds/xsd/MechanicalFasteners.xsd +172 -0
  43. data/lib/mws-rb/api/feeds/xsd/Miscellaneous.xsd +157 -0
  44. data/lib/mws-rb/api/feeds/xsd/Motorcycles.xsd +348 -0
  45. data/lib/mws-rb/api/feeds/xsd/Music.xsd +251 -0
  46. data/lib/mws-rb/api/feeds/xsd/MusicalInstruments.xsd +853 -0
  47. data/lib/mws-rb/api/feeds/xsd/Office.xsd +586 -0
  48. data/lib/mws-rb/api/feeds/xsd/OrderAcknowledgement.xsd +55 -0
  49. data/lib/mws-rb/api/feeds/xsd/OrderAdjustment.xsd +175 -0
  50. data/lib/mws-rb/api/feeds/xsd/OrderFulfillment.xsd +57 -0
  51. data/lib/mws-rb/api/feeds/xsd/Override.xsd +48 -0
  52. data/lib/mws-rb/api/feeds/xsd/PetSupplies.xsd +197 -0
  53. data/lib/mws-rb/api/feeds/xsd/PowerTransmission.xsd +87 -0
  54. data/lib/mws-rb/api/feeds/xsd/Price.xsd +59 -0
  55. data/lib/mws-rb/api/feeds/xsd/ProcessingReport.xsd +87 -0
  56. data/lib/mws-rb/api/feeds/xsd/Product.xsd +399 -0
  57. data/lib/mws-rb/api/feeds/xsd/ProductClothing.xsd +285 -0
  58. data/lib/mws-rb/api/feeds/xsd/ProductImage.xsd +39 -0
  59. data/lib/mws-rb/api/feeds/xsd/RawMaterials.xsd +125 -0
  60. data/lib/mws-rb/api/feeds/xsd/Relationship.xsd +47 -0
  61. data/lib/mws-rb/api/feeds/xsd/SWVG.xsd +345 -0
  62. data/lib/mws-rb/api/feeds/xsd/SettlementReport.xsd +158 -0
  63. data/lib/mws-rb/api/feeds/xsd/Shoes.xsd +213 -0
  64. data/lib/mws-rb/api/feeds/xsd/Sports.xsd +772 -0
  65. data/lib/mws-rb/api/feeds/xsd/SportsMemorabilia.xsd +55 -0
  66. data/lib/mws-rb/api/feeds/xsd/TiresAndWheels.xsd +159 -0
  67. data/lib/mws-rb/api/feeds/xsd/Tools.xsd +82 -0
  68. data/lib/mws-rb/api/feeds/xsd/Toys.xsd +272 -0
  69. data/lib/mws-rb/api/feeds/xsd/ToysBaby.xsd +335 -0
  70. data/lib/mws-rb/api/feeds/xsd/Video.xsd +406 -0
  71. data/lib/mws-rb/api/feeds/xsd/WineAndAlcohol.xsd +181 -0
  72. data/lib/mws-rb/api/feeds/xsd/Wireless.xsd +128 -0
  73. data/lib/mws-rb/api/feeds/xsd/amzn-base.xsd +4350 -0
  74. data/lib/mws-rb/api/feeds/xsd/amzn-envelope.xsd +98 -0
  75. data/lib/mws-rb/api/feeds/xsd/amzn-header.xsd +45 -0
  76. data/lib/mws-rb/api/fulfillment_inbound_shipment.rb +15 -0
  77. data/lib/mws-rb/api/fulfillment_inventory.rb +13 -0
  78. data/lib/mws-rb/api/fulfillment_outbound_shipment.rb +11 -0
  79. data/lib/mws-rb/api/orders.rb +15 -0
  80. data/lib/mws-rb/api/products.rb +18 -0
  81. data/lib/mws-rb/api/recommendations.rb +13 -0
  82. data/lib/mws-rb/api/reports.rb +16 -0
  83. data/lib/mws-rb/api/sellers.rb +14 -0
  84. data/lib/mws-rb/connection.rb +53 -0
  85. data/lib/mws-rb/query.rb +94 -0
  86. data/lib/mws-rb/version.rb +3 -0
  87. data/mws-rb.gemspec +28 -0
  88. data/spec/mws-rb/api/base_spec.rb +51 -0
  89. data/spec/mws-rb/api/feeds/envelope_spec.rb +29 -0
  90. data/spec/mws-rb/api/feeds_spec.rb +23 -0
  91. data/spec/mws-rb/api/fulfillment_inbound_shipment_spec.rb +23 -0
  92. data/spec/mws-rb/api/fulfillment_inventory_spec.rb +23 -0
  93. data/spec/mws-rb/api/fulfillment_outbound_shipment_spec.rb +23 -0
  94. data/spec/mws-rb/api/orders_spec.rb +24 -0
  95. data/spec/mws-rb/api/products_spec.rb +24 -0
  96. data/spec/mws-rb/api/recommendations_spec.rb +24 -0
  97. data/spec/mws-rb/api/reports_spec.rb +24 -0
  98. data/spec/mws-rb/api/sellers_spec.rb +28 -0
  99. data/spec/mws-rb/connection_spec.rb +58 -0
  100. data/spec/mws-rb/mws_spec.rb +11 -0
  101. data/spec/mws-rb/query_spec.rb +110 -0
  102. data/spec/spec_helper.rb +7 -0
  103. metadata +260 -0
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Base do
4
+ let(:connection) {MWS::Connection.new({
5
+ aws_access_key_id: "access key",
6
+ aws_secret_access_key: "secret key",
7
+ seller_id: "seller id"
8
+ })}
9
+
10
+ let(:base) {MWS::API::Base.new(connection)}
11
+
12
+ it "hould receive a connection object" do
13
+ base.connection.should eq(connection)
14
+ end
15
+
16
+ it "should respond to .call" do
17
+ base.should respond_to(:call)
18
+ end
19
+
20
+ it "should respond to :uri and :version and :verb" do
21
+ base.should respond_to(:uri)
22
+ base.should respond_to(:version)
23
+ base.should respond_to(:verb)
24
+ end
25
+
26
+ it "should set :verb to :get as default" do
27
+ base.verb.should eq(:get)
28
+ end
29
+
30
+ describe "method_missing to call actions" do
31
+ class TestApi < MWS::API::Base
32
+ Actions = [:test_action]
33
+ def initialize(connection)
34
+ @uri = "/Products/2011-10-01"
35
+ @version = "2011-10-01"
36
+ super(connection)
37
+ end
38
+ end
39
+
40
+ let(:test_api) {TestApi.new(connection)}
41
+ before(:each) {HTTParty.stub(:get).and_return({})}
42
+
43
+ it "should not raise exception if Actions contain the action name" do
44
+ expect {test_api.test_action}.to_not raise_error
45
+ end
46
+
47
+ it "should raise exception if Actions do not contain the action name" do
48
+ expect {test_api.action_not_found}.to raise_error
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Feeds::Envelope do
4
+ it "should validate the envelope" do
5
+ expect {
6
+ MWS::API::Feeds::Envelope.new(message_type: "InvalidMessageType", message:{"InvalidItem" => "Invalid"})
7
+ }.to raise_error
8
+ end
9
+
10
+ it "should skip validation when param skip_schema_validation is true" do
11
+ expect {
12
+ MWS::API::Feeds::Envelope.new(message_type: "InvalidMessageType", message:{"InvalidItem" => "Invalid"}, skip_schema_validation: true)
13
+ }.to_not raise_error
14
+ end
15
+
16
+ it "should remove array items" do
17
+ envelope = MWS::API::Feeds::Envelope.new(
18
+ message_type: "InvalidMessageType",
19
+ message:{
20
+ "Items" => [{item_1: "1"}, {item_2: "2"}],
21
+ "Inventories" => [{inventory_1: "1"}]
22
+ },
23
+ skip_schema_validation: true)
24
+
25
+ envelope.to_s.include?("Items").should == false
26
+ envelope.to_s.include?("Inventories").should == false
27
+ envelope.to_s.include?("array").should == false
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Feeds do
4
+ let(:connection) {MWS::Connection.new({
5
+ aws_access_key_id: "access key",
6
+ aws_secret_access_key: "secret key",
7
+ seller_id: "seller id"
8
+ })}
9
+
10
+ let(:feeds) {MWS::API::Feeds.new(connection)}
11
+
12
+ it "should inheritance from MWS::API::Base" do
13
+ MWS::API::Feeds.superclass.should eq(MWS::API::Base)
14
+ end
15
+
16
+ it "should set the right :uri" do
17
+ feeds.uri.should eq("/")
18
+ end
19
+
20
+ it "should set the right :version" do
21
+ feeds.version.should eq("2009-01-01")
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::FulfillmentInboundShipment do
4
+ let(:connection) {MWS::Connection.new({
5
+ aws_access_key_id: "access key",
6
+ aws_secret_access_key: "secret key",
7
+ seller_id: "seller id"
8
+ })}
9
+
10
+ let(:fulfillment_inbound_shipment) {MWS::API::FulfillmentInboundShipment.new(connection)}
11
+
12
+ it "should inheritance from MWS::API::Base" do
13
+ MWS::API::Feeds.superclass.should eq(MWS::API::Base)
14
+ end
15
+
16
+ it "should set the right :uri" do
17
+ fulfillment_inbound_shipment.uri.should eq("/FulfillmentInboundShipment/2010-10-01")
18
+ end
19
+
20
+ it "should set the right :version" do
21
+ fulfillment_inbound_shipment.version.should eq("2010-10-01")
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::FulfillmentInventory do
4
+ let(:connection) {MWS::Connection.new({
5
+ aws_access_key_id: "access key",
6
+ aws_secret_access_key: "secret key",
7
+ seller_id: "seller id"
8
+ })}
9
+
10
+ let(:fulfillment_inventory) {MWS::API::FulfillmentInventory.new(connection)}
11
+
12
+ it "should inheritance from MWS::API::Base" do
13
+ MWS::API::FulfillmentInventory.superclass.should eq(MWS::API::Base)
14
+ end
15
+
16
+ it "should set the right :uri" do
17
+ fulfillment_inventory.uri.should eq("/FulfillmentInventory/2010-10-01")
18
+ end
19
+
20
+ it "should set the right :version" do
21
+ fulfillment_inventory.version.should eq("2010-10-01")
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::FulfillmentOutboundShipment do
4
+ let(:connection) {MWS::Connection.new({
5
+ aws_access_key_id: "access key",
6
+ aws_secret_access_key: "secret key",
7
+ seller_id: "seller id"
8
+ })}
9
+
10
+ let(:fulfillment_outbound_shipment) {MWS::API::FulfillmentOutboundShipment.new(connection)}
11
+
12
+ it "should inheritance from MWS::API::Base" do
13
+ MWS::API::FulfillmentOutboundShipment.superclass.should eq(MWS::API::Base)
14
+ end
15
+
16
+ it "should set the right :uri" do
17
+ fulfillment_outbound_shipment.uri.should eq("/FulfillmentOutboundShipment/2010-10-01")
18
+ end
19
+
20
+ it "should set the right :version" do
21
+ fulfillment_outbound_shipment.version.should eq("2010-10-01")
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Orders do
4
+
5
+ let(:connection) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ let(:orders) {MWS::API::Orders.new(connection)}
12
+
13
+ it "should inheritance from MWS::API::Base" do
14
+ MWS::API::Orders.superclass.should eq(MWS::API::Base)
15
+ end
16
+
17
+ it "should set the right :uri" do
18
+ orders.uri.should eq("/Orders/2011-01-01")
19
+ end
20
+
21
+ it "should set the right :version" do
22
+ orders.version.should eq("2011-01-01")
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Products do
4
+
5
+ let(:connection) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ let(:orders) {MWS::API::Products.new(connection)}
12
+
13
+ it "should inheritance from MWS::API::Base" do
14
+ MWS::API::Products.superclass.should eq(MWS::API::Base)
15
+ end
16
+
17
+ it "should set the right :uri" do
18
+ orders.uri.should eq("/Products/2011-10-01")
19
+ end
20
+
21
+ it "should set the right :version" do
22
+ orders.version.should eq("2011-10-01")
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Recommendations do
4
+
5
+ let(:connection) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ let(:recommendations) {MWS::API::Recommendations.new(connection)}
12
+
13
+ it "should inheritance from MWS::API::Base" do
14
+ MWS::API::Recommendations.superclass.should eq(MWS::API::Base)
15
+ end
16
+
17
+ it "should set the right :uri" do
18
+ recommendations.uri.should eq("/Recommendations/2013-04-01")
19
+ end
20
+
21
+ it "should set the right :version" do
22
+ recommendations.version.should eq("2013-04-01")
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Reports do
4
+
5
+ let(:connection) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ let(:reports) {MWS::API::Reports.new(connection)}
12
+
13
+ it "should inheritance from MWS::API::Base" do
14
+ MWS::API::Reports.superclass.should eq(MWS::API::Base)
15
+ end
16
+
17
+ it "should set the right :uri" do
18
+ reports.uri.should eq("/")
19
+ end
20
+
21
+ it "should set the right :version" do
22
+ reports.version.should eq("2009-01-01")
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::API::Sellers do
4
+
5
+ let(:connection) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ let(:sellers) {MWS::API::Sellers.new(connection)}
12
+
13
+ it "should inheritance from MWS::API::Base" do
14
+ MWS::API::Sellers.superclass.should eq(MWS::API::Base)
15
+ end
16
+
17
+ it "should set the right :uri" do
18
+ sellers.uri.should eq("/Sellers/2011-07-01")
19
+ end
20
+
21
+ it "should set the right :version" do
22
+ sellers.version.should eq("2011-07-01")
23
+ end
24
+
25
+ it "should set the right :version" do
26
+ sellers.verb.should eq(:post)
27
+ end
28
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::Connection do
4
+
5
+ let(:subject) {MWS::Connection.new({
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ })}
10
+
11
+ it "should have a default host" do
12
+ subject.host.should eq("mws.amazonservices.com")
13
+ end
14
+
15
+ describe "call the right apis" do
16
+ it "should return Feeds when calling .feeds" do
17
+ subject.feeds.instance_of?(MWS::API::Feeds).should == true
18
+ end
19
+
20
+ it "should return FulfillmentInboundShipment when calling .fulfillment_inbound_shipment" do
21
+ subject.fulfillment_inbound_shipment.instance_of?(MWS::API::FulfillmentInboundShipment).should == true
22
+ end
23
+
24
+ it "should return FulfillmentInventory when calling .fulfillment_inventory" do
25
+ subject.fulfillment_inventory.instance_of?(MWS::API::FulfillmentInventory).should == true
26
+ end
27
+
28
+ it "should return FulfillmentOutboundShipment when calling .fulfillment_outbound_shipment" do
29
+ subject.fulfillment_outbound_shipment.instance_of?(MWS::API::FulfillmentOutboundShipment).should == true
30
+ end
31
+
32
+ it "should return Orders when calling .orders" do
33
+ subject.orders.instance_of?(MWS::API::Orders).should == true
34
+ end
35
+
36
+ it "should return Products when calling .products" do
37
+ subject.products.instance_of?(MWS::API::Products).should == true
38
+ end
39
+
40
+ it "should return Recommendations when calling .recommendations" do
41
+ subject.recommendations.instance_of?(MWS::API::Recommendations).should == true
42
+ end
43
+
44
+ it "should return Reports when calling .reports" do
45
+ subject.reports.instance_of?(MWS::API::Reports).should == true
46
+ end
47
+
48
+ it "should return Sellers when calling .sellers" do
49
+ subject.sellers.instance_of?(MWS::API::Sellers).should == true
50
+ end
51
+ end
52
+
53
+ describe "Validations" do
54
+ it "should raise argument error if key, secret or seller_id is not provided" do
55
+ expect {MWS::Connection.new}.to raise_error(ArgumentError)
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS do
4
+ it "should return a connection on initializer" do
5
+ subject.new(
6
+ aws_access_key_id: "access key",
7
+ aws_secret_access_key: "secret key",
8
+ seller_id: "seller id"
9
+ ).class.should eq(MWS::Connection)
10
+ end
11
+ end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+
3
+ describe MWS::Query do
4
+ let(:query_params) {{
5
+ verb: "GET",
6
+ uri: "/",
7
+ host: "mws-eu.amazonservices.com",
8
+ aws_access_key_id: "key",
9
+ aws_secret_access_key: "secret",
10
+ action: "ListOrders",
11
+ seller_id: "Seller ID",
12
+ version: "2010-01-01",
13
+ timestamp: "2013-01-01T00:00:00-02:00"
14
+ }}
15
+
16
+ let(:query) {MWS::Query.new(query_params)}
17
+
18
+ describe "Initialization" do
19
+ it "should create a MWS::Query object" do
20
+ subject.class.should eq(MWS::Query)
21
+ end
22
+
23
+ it "should have some default params" do
24
+ subject.uri.should eq("/")
25
+ subject.verb.should eq("GET")
26
+ subject.signature_method.should eq("HmacSHA256")
27
+ subject.signature_version.should eq(2)
28
+ subject.timestamp.class.should eq(Time)
29
+ end
30
+ end
31
+
32
+ describe "Build query" do
33
+ it "should build a simple query" do
34
+ generated_query = "AWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
35
+ query.build_query.should eq(generated_query)
36
+ end
37
+
38
+ it "should build a query with a signature" do
39
+ query.build_query("signature").include?("Signature=signature").should eq true
40
+ end
41
+
42
+ it "should be a query with custom params" do
43
+ builded_query = MWS::Query.new(query_params.merge(params: {custom_param: "custom"})).build_query
44
+ builded_query.should include("CustomParam=custom")
45
+ end
46
+ end
47
+
48
+ describe "canonical string" do
49
+ it "should generate a canonical string" do
50
+ canonical = "GET\nmws-eu.amazonservices.com\n/\nAWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
51
+ query.canonical.should eq(canonical)
52
+ end
53
+ end
54
+
55
+ describe "signature" do
56
+ it "should generate a valid signature" do
57
+ query.signature.should eq("7XZO1dSv7BHElkee33Rt7L5PNFiBET13pg3pOWKeoo0=")
58
+ end
59
+ end
60
+
61
+ describe "request_uri" do
62
+ it "should generate a valid request uri" do
63
+ request_uri = "https://mws-eu.amazonservices.com/?AWSAccessKeyId=key&Action=ListOrders&SellerId=Seller+ID&Signature=7XZO1dSv7BHElkee33Rt7L5PNFiBET13pg3pOWKeoo0%3D&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-01-01T00%3A00%3A00-02%3A00&Version=2010-01-01"
64
+ query.request_uri.should eq(request_uri)
65
+ end
66
+ end
67
+
68
+ describe MWS::Query::Helpers do
69
+ subject {MWS::Query::Helpers}
70
+
71
+ describe "escape_date_time_params(params={})" do
72
+ let(:time) {Time.new(2013, 01, 01)}
73
+
74
+ it "should escape a simple hash" do
75
+ subject.escape_date_time_params(time: time).should eq({time: time.iso8601})
76
+ end
77
+
78
+ it "should escape a nested hash" do
79
+ subject.escape_date_time_params(time: {time: time}).should eq({time: {time: time.iso8601}})
80
+ end
81
+ end
82
+
83
+ describe "camelize_keys(parmas={})" do
84
+ it "should camelize a simple hash" do
85
+ subject.camelize_keys(new_key: "value").should eq("NewKey" => "value")
86
+ end
87
+
88
+ it "should camelize a nested hash" do
89
+ subject.camelize_keys(key: {key: "value"}).should eq("Key" => {"Key" => "value"})
90
+ end
91
+ end
92
+
93
+ describe "make_structured_lists" do
94
+ it "should return a new structured list" do
95
+ structured_list = subject.make_structured_lists(ids_list: {label: "Id.id", values: [1,2]})
96
+ structured_list.should eq("Id.id.1" => 1, "Id.id.2" => 2)
97
+ end
98
+
99
+ it "should return the same hash if there's no list params" do
100
+ structured_list = subject.make_structured_lists(test: "test")
101
+ structured_list.should eq(test: "test")
102
+ end
103
+
104
+ it "should return a hash with structured lists and normal values" do
105
+ structured_list = subject.make_structured_lists(test: "test", id_list: {label: "Id.id", values: [1]})
106
+ structured_list.should eq(test: "test", "Id.id.1" => 1)
107
+ end
108
+ end
109
+ end
110
+ end