global_collect 0.1.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.
Files changed (90) hide show
  1. data/COPYING +11 -0
  2. data/README.markdown +109 -0
  3. data/Rakefile +34 -0
  4. data/VERSION +1 -0
  5. data/examples/cancel_payment.rb +14 -0
  6. data/examples/convert_amount.rb +14 -0
  7. data/examples/get_order_status.rb +15 -0
  8. data/examples/insert_order_with_payment.rb +37 -0
  9. data/examples/process_challenged.rb +13 -0
  10. data/examples/set_payment.rb +23 -0
  11. data/examples/test_connection.rb +13 -0
  12. data/global_collect.gemspec +170 -0
  13. data/lib/global_collect/api_client.rb +71 -0
  14. data/lib/global_collect/builders/do_refund/credit_card_payment.rb +12 -0
  15. data/lib/global_collect/builders/do_refund/payment.rb +39 -0
  16. data/lib/global_collect/builders/insert_order_with_payment/credit_card_online_payment.rb +38 -0
  17. data/lib/global_collect/builders/insert_order_with_payment/hosted_credit_card_online_payment.rb +4 -0
  18. data/lib/global_collect/builders/insert_order_with_payment/order.rb +75 -0
  19. data/lib/global_collect/builders/insert_order_with_payment/payment.rb +25 -0
  20. data/lib/global_collect/builders/set_payment/payment.rb +23 -0
  21. data/lib/global_collect/const/payment_product.rb +38 -0
  22. data/lib/global_collect/const/payment_status.rb +90 -0
  23. data/lib/global_collect/field_validator.rb +47 -0
  24. data/lib/global_collect/request_models/base.rb +37 -0
  25. data/lib/global_collect/request_models/do_refund/credit_card_payment.rb +12 -0
  26. data/lib/global_collect/request_models/do_refund/payment.rb +39 -0
  27. data/lib/global_collect/request_models/insert_order_with_payment/credit_card_online_payment.rb +44 -0
  28. data/lib/global_collect/request_models/insert_order_with_payment/hosted_credit_card_online_payment.rb +19 -0
  29. data/lib/global_collect/request_models/insert_order_with_payment/order.rb +67 -0
  30. data/lib/global_collect/request_models/insert_order_with_payment/payment.rb +17 -0
  31. data/lib/global_collect/request_models/set_payment/payment.rb +17 -0
  32. data/lib/global_collect/requests/base.rb +43 -0
  33. data/lib/global_collect/requests/cancel_payment.rb +22 -0
  34. data/lib/global_collect/requests/composite.rb +23 -0
  35. data/lib/global_collect/requests/convert_amount.rb +29 -0
  36. data/lib/global_collect/requests/do_refund.rb +8 -0
  37. data/lib/global_collect/requests/get_order_status.rb +24 -0
  38. data/lib/global_collect/requests/insert_order_with_payment.rb +10 -0
  39. data/lib/global_collect/requests/process_challenged.rb +22 -0
  40. data/lib/global_collect/requests/set_payment.rb +9 -0
  41. data/lib/global_collect/requests/simple.rb +39 -0
  42. data/lib/global_collect/requests/test_connection.rb +8 -0
  43. data/lib/global_collect/responses/base.rb +73 -0
  44. data/lib/global_collect/responses/convert_amount/response_methods.rb +8 -0
  45. data/lib/global_collect/responses/do_refund/response_methods.rb +24 -0
  46. data/lib/global_collect/responses/get_order_status/v1_response_methods.rb +49 -0
  47. data/lib/global_collect/responses/get_order_status/v2_response_methods.rb +67 -0
  48. data/lib/global_collect/responses/insert_order_with_payment/credit_card_online_payment_response_methods.rb +31 -0
  49. data/lib/global_collect/responses/insert_order_with_payment/hosted_merchant_link_payment_response_methods.rb +16 -0
  50. data/lib/global_collect/responses/success_row.rb +15 -0
  51. data/lib/global_collect.rb +81 -0
  52. data/spec/api_client_spec.rb +93 -0
  53. data/spec/builders/do_refund/credit_card_payment_spec.rb +32 -0
  54. data/spec/builders/do_refund/payment_spec.rb +51 -0
  55. data/spec/builders/insert_order_with_payment/credit_card_online_payment_spec.rb +59 -0
  56. data/spec/builders/insert_order_with_payment/hosted_credit_card_online_payment_spec.rb +59 -0
  57. data/spec/builders/insert_order_with_payment/order_spec.rb +88 -0
  58. data/spec/builders/insert_order_with_payment/payment_spec.rb +37 -0
  59. data/spec/builders/set_payment/payment_spec.rb +35 -0
  60. data/spec/field_validator_spec.rb +79 -0
  61. data/spec/global_collect_spec.rb +43 -0
  62. data/spec/request_models/base_spec.rb +31 -0
  63. data/spec/request_models/insert_order_with_payment/credit_card_online_payment_spec.rb +11 -0
  64. data/spec/request_models/insert_order_with_payment/hosted_credit_card_online_payment_spec.rb +38 -0
  65. data/spec/requests/base_spec.rb +40 -0
  66. data/spec/requests/composite_spec.rb +48 -0
  67. data/spec/requests/convert_amount.rb +34 -0
  68. data/spec/requests/insert_order_with_payment_spec.rb +60 -0
  69. data/spec/requests/simple_spec.rb +37 -0
  70. data/spec/responses/base_spec.rb +59 -0
  71. data/spec/responses/convert_amount/response_methods_spec.rb +13 -0
  72. data/spec/responses/do_refund/response_methods_spec.rb +15 -0
  73. data/spec/responses/get_order_status/v1_response_methods_spec.rb +28 -0
  74. data/spec/responses/get_order_status/v2_response_methods_spec.rb +28 -0
  75. data/spec/responses/insert_order_with_payment/credit_card_online_payment_response_methods_spec.rb +13 -0
  76. data/spec/responses/insert_order_with_payment/hosted_merchant_link_payment_response_methods_spec.rb +13 -0
  77. data/spec/responses/succcess_row_spec.rb +26 -0
  78. data/spec/spec_helper.rb +130 -0
  79. data/spec/support/challenged_iowp_response.xml +51 -0
  80. data/spec/support/successful_convert_amount_response.xml +29 -0
  81. data/spec/support/successful_do_refund_response.xml +36 -0
  82. data/spec/support/successful_get_order_status_v1_response.xml +72 -0
  83. data/spec/support/successful_get_order_status_v2_response.xml +50 -0
  84. data/spec/support/successful_hosted_iowp_response.xml +60 -0
  85. data/spec/support/successful_iowp_response.xml +49 -0
  86. data/spec/support/successful_process_challenged_response.xml +26 -0
  87. data/spec/support/unsuccessful_do_refund_response.xml +29 -0
  88. data/spec/support/unsuccessful_iowp_response.xml +42 -0
  89. data/spec/support/unsuccessful_process_challenged_response.xml +30 -0
  90. metadata +213 -0
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'the GC module' do
4
+ before(:each) do
5
+ GlobalCollect.instance_variable_set(:@wire_logger, nil)
6
+ end
7
+ after(:each) do
8
+ GlobalCollect.instance_variable_set(:@wire_logger, nil)
9
+ end
10
+
11
+ it "should default to version 1.0" do
12
+ GlobalCollect.default_api_version.should == "1.0"
13
+ end
14
+ it "should error on an invalid environment" do
15
+ GlobalCollect.environment = :foo
16
+ lambda { GlobalCollect.merchant_link_client }.should raise_error(ArgumentError)
17
+ end
18
+ it "should error on an invalid auth scheme" do
19
+ GlobalCollect.authentication_scheme = :foo
20
+ lambda { GlobalCollect.merchant_link_client }.should raise_error(ArgumentError)
21
+ end
22
+ it "should return a merchant link client" do
23
+ GlobalCollect.authentication_scheme = :ip_check
24
+ GlobalCollect.environment = :test
25
+ GlobalCollect.merchant_link_client.should_not be_nil
26
+ end
27
+ it "should write to a log file, if provided" do
28
+ begin
29
+ GlobalCollect.wire_log_file = File.join(File.dirname(__FILE__), "support", "test_log.log")
30
+ GlobalCollect.wire_logger.debug("foo")
31
+ log = File.open(GlobalCollect.wire_log_file, "r").read.strip.should include('foo')
32
+ ensure
33
+ FileUtils.rm_f(GlobalCollect.wire_log_file)
34
+ end
35
+ end
36
+
37
+ it "should write to your logger if provided" do
38
+ logger = mock(:logger)
39
+ logger.should_receive(:debug).with("foo")
40
+ GlobalCollect.wire_logger = logger
41
+ GlobalCollect.wire_logger.debug("foo")
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+ class TestRequestModel < GlobalCollect::RequestModels::Base
3
+ def fields; {"PLACEHOLDER" => ["AN12", "R"]}; end
4
+ end
5
+
6
+ describe "the base model" do
7
+ it "should validate cleanly on good attributes" do
8
+ base = TestRequestModel.new("PLACEHOLDER" => "FOOBAR")
9
+ base.validate.should be_true
10
+ end
11
+
12
+ it "should not validate on empty attributes" do
13
+ base = TestRequestModel.new({})
14
+ base.validate.should be_false
15
+ end
16
+
17
+ it "should not validate on bad attributes" do
18
+ base = TestRequestModel.new("PLACEHOLDER" => "FOOBARFOOBARFOOBAR")
19
+ base.validate.should be_false
20
+ end
21
+
22
+ it "should not allow a bad key to be set" do
23
+ base = TestRequestModel.new("PLACEHOLDER" => "FOOBAR")
24
+ lambda { base["FOO"] = "BAR" }.should raise_error(ArgumentError)
25
+ end
26
+
27
+ it "should not allow a bad key to be read" do
28
+ base = TestRequestModel.new("PLACEHOLDER" => "FOOBAR")
29
+ lambda { base["FOO"] }.should raise_error(ArgumentError)
30
+ end
31
+ end
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe "the credit card online payment model" do
4
+ it "should return the proper suggested mixins" do
5
+ model = GlobalCollect::RequestModels::InsertOrderWithPayment::CreditCardOnlinePayment.new({})
6
+ model.suggested_response_mixins.should == [
7
+ GlobalCollect::Responses::SuccessRow,
8
+ GlobalCollect::Responses::InsertOrderWithPayment::CreditCardOnlinePaymentResponseMethods
9
+ ]
10
+ end
11
+ end
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe "the hosted credit card online payment model" do
4
+ it "should set HOSTEDINDICATOR to '1' when not provided" do
5
+ model = GlobalCollect::RequestModels::InsertOrderWithPayment::HostedCreditCardOnlinePayment.new(
6
+ "PAYMENTPRODUCTID" => "1",
7
+ "AMOUNT" => "1",
8
+ "CURRENCYCODE" => "USD",
9
+ "LANGUAGECODE" => "en",
10
+ "COUNTRYCODE" => "US"
11
+ )
12
+ model["HOSTEDINDICATOR"].should == "1"
13
+ end
14
+
15
+ it "should set HOSTEDINDICATOR to '1' when it is set to something invalid" do
16
+ model = GlobalCollect::RequestModels::InsertOrderWithPayment::HostedCreditCardOnlinePayment.new(
17
+ "PAYMENTPRODUCTID" => "1",
18
+ "AMOUNT" => "1",
19
+ "CURRENCYCODE" => "USD",
20
+ "LANGUAGECODE" => "en",
21
+ "COUNTRYCODE" => "US",
22
+ "HOSTEDINDICATOR" => "2123123213"
23
+ )
24
+ model["HOSTEDINDICATOR"].should == "1"
25
+ end
26
+
27
+ it "should set HOSTEDINDICATOR to '1' when it is set to the wrong thing" do
28
+ model = GlobalCollect::RequestModels::InsertOrderWithPayment::HostedCreditCardOnlinePayment.new(
29
+ "PAYMENTPRODUCTID" => "1",
30
+ "AMOUNT" => "1",
31
+ "CURRENCYCODE" => "USD",
32
+ "LANGUAGECODE" => "en",
33
+ "COUNTRYCODE" => "US",
34
+ "HOSTEDINDICATOR" => "0"
35
+ )
36
+ model["HOSTEDINDICATOR"].should == "1"
37
+ end
38
+ end
@@ -0,0 +1,40 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe "the base request" do
4
+ before(:all) do
5
+ GlobalCollect.merchant_id = 666
6
+ GlobalCollect.authentication_scheme = :ip_check
7
+ GlobalCollect.ip_address = '0.0.0.0'
8
+ GlobalCollect::default_api_version = "2.0"
9
+ end
10
+
11
+ it "should have the correct wrapping xml elements" do
12
+ request = GlobalCollect::Requests::Base.new("FOO_ACTION")
13
+ xml = request.to_xml do |params_node|
14
+ end
15
+ xml.should have_xpath("/XML/REQUEST")
16
+ end
17
+
18
+ it "should render the action" do
19
+ request = GlobalCollect::Requests::Base.new("FOO_ACTION")
20
+ xml = request.to_xml do |params_node|; end
21
+ xml.should match_xpath("/XML/REQUEST/ACTION", "FOO_ACTION")
22
+ end
23
+
24
+ it "should render contents" do
25
+ request = GlobalCollect::Requests::Base.new("FOO_ACTION")
26
+ xml = request.to_xml do |params_node|
27
+ params_node.tag!("FOO_NODE")
28
+ end
29
+ xml.should have_xpath("/XML/REQUEST/PARAMS/FOO_NODE")
30
+ end
31
+
32
+ it "should have the correct meta fields" do
33
+ request = GlobalCollect::Requests::Base.new("FOO_ACTION")
34
+
35
+ xml = request.to_xml do |params_node|; end
36
+ xml.should match_xpath("/XML/REQUEST/META/IPADDRESS", "0.0.0.0")
37
+ xml.should match_xpath("/XML/REQUEST/META/VERSION", "2.0")
38
+ xml.should match_xpath("/XML/REQUEST/META/MERCHANTID", "666")
39
+ end
40
+ end
@@ -0,0 +1,48 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ class TestModel
4
+ attr_reader :validate
5
+ def initialize(valid);@validate=valid;end
6
+ def suggested_response_mixins;[];end
7
+ def errors; {}; end
8
+ end
9
+ class TestModelBuilder
10
+ def initialize(model);end
11
+ def build(node)
12
+ node.tag!("FOO_NODE")
13
+ end
14
+ end
15
+
16
+ module MixinTest
17
+ end
18
+ class TestMixinModel < TestModel
19
+ def suggested_response_mixins
20
+ [MixinTest, MixinTest]
21
+ end
22
+ end
23
+
24
+ describe "the composite request" do
25
+ it "should build properly from model-builder pairs" do
26
+ pair = [TestModel.new(true), TestModelBuilder]
27
+ request = GlobalCollect::Requests::Composite.new("FOO_ACTION", [pair])
28
+ xml = request.to_xml
29
+ xml.should have_xpath("/XML/REQUEST/PARAMS/FOO_NODE")
30
+ end
31
+
32
+ it "should fail on an invalid model" do
33
+ pair = [TestModel.new(false), TestModelBuilder]
34
+ request = GlobalCollect::Requests::Composite.new("FOO_ACTION", [pair])
35
+ lambda { request.to_xml }.should raise_error(Exception, /Invalid model/)
36
+ end
37
+
38
+ it "should fail on unpaired models and builders" do
39
+ pair = [TestModel.new(false)]
40
+ lambda { GlobalCollect::Requests::Composite.new("FOO_ACTION", [pair]) }.should raise_error(ArgumentError, /pairs/)
41
+ end
42
+
43
+ it "should not suggest duplicate mixins" do
44
+ pair = [TestMixinModel.new(true), TestModelBuilder]
45
+ request = GlobalCollect::Requests::Composite.new("FOO_ACTION", [pair])
46
+ request.suggested_response_mixins.size.should == 1
47
+ end
48
+ end
@@ -0,0 +1,34 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe "the convert amount request" do
4
+ before(:each) do
5
+ @request = GlobalCollect::Requests::ConvertAmount.new(
6
+ "100",
7
+ "USD",
8
+ "GBP"
9
+ )
10
+ end
11
+ it "should build the right action" do
12
+ xml = @request.to_xml
13
+ xml.should match_xpath("/XML/REQUEST/ACTION", "CONVERT_AMOUNT")
14
+ end
15
+
16
+ it "should build basic fields" do
17
+ xml = @request.to_xml
18
+ xml.should match_xpath("/XML/REQUEST/PARAMS/GENERAL/AMOUNT", "100")
19
+ xml.should match_xpath("/XML/REQUEST/PARAMS/GENERAL/SOURCECURRENCYCODE", "USD")
20
+ xml.should match_xpath("/XML/REQUEST/PARAMS/GENERAL/TARGETCURRENCYCODE", "GBP")
21
+ end
22
+
23
+ it "should wrap the fields" do
24
+ xml = @request.to_xml
25
+ xml.should have_xpath("/XML/REQUEST/PARAMS/GENERAL")
26
+ end
27
+
28
+ it "should suggest the correct mixins" do
29
+ @request.suggested_response_mixins.should == [
30
+ GlobalCollect::Responses::SuccessRow,
31
+ GlobalCollect::Responses::ConvertAmount::ResponseMethods
32
+ ]
33
+ end
34
+ end
@@ -0,0 +1,60 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+ class AirlineDataBuilder
3
+ def initialize(data);end
4
+ def build(node)
5
+ node.tag!("AIRLINEDATA") do |airline_node|
6
+ airline_node.tag!("FOO")
7
+ end
8
+ end
9
+ end
10
+ class AirlineDataModel
11
+ def validate;true;end
12
+ def suggested_response_mixins;[];end
13
+ end
14
+ describe "the insert order with payment request" do
15
+ before(:each) do
16
+ @order = GlobalCollect::RequestModels::InsertOrderWithPayment::Order.new(
17
+ "ORDERID" => "1234567890",
18
+ "AMOUNT" => "1234",
19
+ "CURRENCYCODE" => "USD",
20
+ "LANGUAGECODE" => "en",
21
+ "COUNTRYCODE" => "US",
22
+ "MERCHANTREFERENCE" => "ASDASDASD"
23
+ )
24
+ @payment = GlobalCollect::RequestModels::InsertOrderWithPayment::Payment.new(
25
+ "PAYMENTPRODUCTID" => "1",
26
+ "AMOUNT" => "1234",
27
+ "CURRENCYCODE" => "USD",
28
+ "LANGUAGECODE" => "en",
29
+ "COUNTRYCODE" => "US"
30
+ )
31
+ @request = GlobalCollect::Requests::InsertOrderWithPayment.new(
32
+ [ @order, GlobalCollect::Builders::InsertOrderWithPayment::Order ],
33
+ [ @payment, GlobalCollect::Builders::InsertOrderWithPayment::Payment ]
34
+ )
35
+ end
36
+ it "should have the correct action" do
37
+ xml = @request.to_xml
38
+ xml.should match_xpath("/XML/REQUEST/ACTION", "INSERT_ORDERWITHPAYMENT")
39
+ end
40
+
41
+ it "should have a payment node" do
42
+ xml = @request.to_xml
43
+ xml.should have_xpath("/XML/REQUEST/PARAMS/PAYMENT")
44
+ end
45
+
46
+ it "should have an order node" do
47
+ xml = @request.to_xml
48
+ xml.should have_xpath("/XML/REQUEST/PARAMS/ORDER")
49
+ end
50
+
51
+ it "should allow extra builders, like AIRLINEDATA" do
52
+ @request = GlobalCollect::Requests::InsertOrderWithPayment.new(
53
+ [ @order, GlobalCollect::Builders::InsertOrderWithPayment::Order ],
54
+ [ @payment, GlobalCollect::Builders::InsertOrderWithPayment::Payment ],
55
+ [ AirlineDataModel.new, AirlineDataBuilder ]
56
+ )
57
+ xml = @request.to_xml
58
+ xml.should have_xpath("/XML/REQUEST/PARAMS/AIRLINEDATA/FOO")
59
+ end
60
+ end
@@ -0,0 +1,37 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ class SimpleTestRequest < GlobalCollect::Requests::Simple
4
+ def fields
5
+ {
6
+ "FOO" => ["N10", "R"]
7
+ }
8
+ end
9
+ end
10
+
11
+ class WrappedSimpleTestRequest < SimpleTestRequest
12
+ def wrapper;"PARAPPA";end
13
+ end
14
+ describe "the simple request" do
15
+ it "should build the right action" do
16
+ request = SimpleTestRequest.new("WHAM",{"FOO" => "123"})
17
+ xml = request.to_xml
18
+ xml.should match_xpath("/XML/REQUEST/ACTION", "WHAM")
19
+ end
20
+
21
+ it "should build basic fields" do
22
+ request = SimpleTestRequest.new("WHAM",{"FOO" => "123"})
23
+ xml = request.to_xml
24
+ xml.should match_xpath("/XML/REQUEST/PARAMS/FOO", "123")
25
+ end
26
+
27
+ it "should wrap the fields" do
28
+ request = WrappedSimpleTestRequest.new("WHAM",{"FOO" => "123"})
29
+ xml = request.to_xml
30
+ xml.should match_xpath("/XML/REQUEST/PARAMS/PARAPPA/FOO", "123")
31
+ end
32
+
33
+ it "should validate fields" do
34
+ request = SimpleTestRequest.new("WHAM",{"FOO" => "abc"})
35
+ lambda { request.to_xml }.should raise_error(Exception, /Invalid field 'FOO'/)
36
+ end
37
+ end
@@ -0,0 +1,59 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe "the base response" do
4
+ describe "on a successful response" do
5
+ before(:each) do
6
+ @response = load_canned_response('successful_iowp_response.xml')
7
+ end
8
+
9
+ it "should identify success" do
10
+ @response.success?.should == true
11
+ end
12
+
13
+ it "should identify meta fields correctly" do
14
+ @response.request_id.should == "3000852"
15
+ @response.response_datetime.should == Time.parse("Fri Apr 09 02:03:09 -0700 2010")
16
+ end
17
+
18
+ it "should give you the raw hash to access" do
19
+ @response.hash.should_not be_blank
20
+ end
21
+
22
+ it "should not provide the errors" do
23
+ @response.errors.should be_empty
24
+ end
25
+
26
+ it "should provide the raw and parsed response" do
27
+ @response.response_hash.should be_a(Hash)
28
+ xml = @response.raw_response
29
+ xml.should have_xpath("/XML/REQUEST/META")
30
+ end
31
+ end
32
+
33
+ describe "on an unsuccessful response" do
34
+ before(:each) do
35
+ @response = load_canned_response('unsuccessful_iowp_response.xml')
36
+ end
37
+
38
+ it "should identify success" do
39
+ @response.success?.should == false
40
+ end
41
+
42
+ it "should identify meta fields correctly" do
43
+ @response.request_id.should == "3000854"
44
+ @response.response_datetime.should == Time.parse("Fri Apr 09 02:03:28 -0700 2010")
45
+ end
46
+
47
+ it "should provide the errors" do
48
+ @response.errors.should_not be_empty
49
+ @response.errors.first.code.should_not be_blank
50
+ @response.errors.first.message.should_not be_blank
51
+ end
52
+
53
+ it "should provide the raw and parsed response" do
54
+ @response.response_hash.should be_a(Hash)
55
+ xml = @response.raw_response
56
+ xml.should have_xpath("/XML/REQUEST/META")
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,13 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe "the convert amount response methods" do
4
+ before(:each) do
5
+ @response = load_canned_response('successful_convert_amount_response.xml')
6
+ @response.extend(GlobalCollect::Responses::SuccessRow)
7
+ @response.extend(GlobalCollect::Responses::ConvertAmount::ResponseMethods)
8
+ end
9
+
10
+ it "should see the methods" do
11
+ @response.converted_amount.should == "1174"
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe "the do refund response methods" do
4
+ before(:each) do
5
+ @response = load_canned_response('successful_do_refund_response.xml')
6
+ @response.extend(GlobalCollect::Responses::SuccessRow)
7
+ @response.extend(GlobalCollect::Responses::DoRefund::ResponseMethods)
8
+ end
9
+
10
+ it "should see the methods" do
11
+ @response.status_id.should == "800"
12
+ @response.payment_status.should_not be_nil
13
+ @response.payment_status.code.should be(800)
14
+ end
15
+ end