google4r-checkout 1.0.6.1 → 1.1.beta1

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 (30) hide show
  1. data/lib/google4r/checkout/commands.rb +17 -4
  2. data/lib/google4r/checkout/notifications.rb +14 -13
  3. data/lib/google4r/checkout/shared.rb +25 -10
  4. data/lib/google4r/checkout/xml_generation.rb +24 -4
  5. data/test/unit/add_merchant_order_number_command_test.rb +1 -6
  6. data/test/unit/add_tracking_data_command_test.rb +2 -9
  7. data/test/unit/archive_order_command_test.rb +1 -4
  8. data/test/unit/authorize_order_command_test.rb +1 -4
  9. data/test/unit/backorder_items_command_test.rb +1 -15
  10. data/test/unit/cancel_items_command_test.rb +3 -16
  11. data/test/unit/cancel_order_command_test.rb +4 -13
  12. data/test/unit/charge_order_command_test.rb +3 -11
  13. data/test/unit/checkout_command_xml_generator_test.rb +18 -20
  14. data/test/unit/deliver_order_command_test.rb +1 -6
  15. data/test/unit/flat_rate_shipping_test.rb +3 -2
  16. data/test/unit/merchant_calculated_shipping_test.rb +2 -1
  17. data/test/unit/merchant_calculation_callback_test.rb +1 -1
  18. data/test/unit/merchant_calculation_result_test.rb +7 -7
  19. data/test/unit/merchant_calculation_results_test.rb +27 -2
  20. data/test/unit/order_report_command_test.rb +6 -8
  21. data/test/unit/pickup_shipping_test.rb +1 -1
  22. data/test/unit/refund_order_command_test.rb +8 -15
  23. data/test/unit/reset_items_shipping_information_command_test.rb +1 -15
  24. data/test/unit/return_items_command_test.rb +1 -15
  25. data/test/unit/risk_information_notification_test.rb +1 -1
  26. data/test/unit/send_buyer_message_command_test.rb +2 -7
  27. data/test/unit/ship_items_command_test.rb +12 -32
  28. data/test/unit/tax_table_test.rb +6 -0
  29. data/test/unit/unarchive_order_command_test.rb +1 -4
  30. metadata +15 -14
@@ -110,6 +110,15 @@ module Google4R #:nodoc:
110
110
  https.cert_store = self.class.x509_store
111
111
  https.verify_mode = OpenSSL::SSL::VERIFY_PEER
112
112
  https.verify_depth = 5
113
+ https.verify_callback = Proc.new do |ok, ctx|
114
+ domain = ctx.chain.first.subject.to_a.select { |part| part.first == "CN" }.first[1]
115
+
116
+ domain == if frontend.configuration[:use_sandbox]
117
+ "sandbox.google.com"
118
+ else
119
+ "checkout.google.com"
120
+ end
121
+ end
113
122
 
114
123
  # Send the request to Google.
115
124
  result = https.request(request, self.to_xml)
@@ -588,15 +597,19 @@ module Google4R #:nodoc:
588
597
  end
589
598
 
590
599
  def financial_state=(financial_state)
600
+ financial_state_name = financial_state.to_s
601
+
591
602
  raise 'Invalid financial state %s' % financial_state unless
592
- FinancialState.constants.include?(financial_state)
593
- @financial_state = financial_state
603
+ FinancialState.constants.any? { |state_name| state_name.to_s == financial_state_name }
604
+ @financial_state = financial_state_name
594
605
  end
595
606
 
596
607
  def fulfillment_state=(fulfillment_state)
608
+ fulfillment_state_name = fulfillment_state.to_s
609
+
597
610
  raise 'Invalid fulfillment state %s' % fulfillment_state unless
598
- FulfillmentState.constants.include?(fulfillment_state)
599
- @fulfillment_state = fulfillment_state
611
+ FulfillmentState.constants.any? { |state_name| state_name.to_s == fulfillment_state_name }
612
+ @fulfillment_state = fulfillment_state_name
600
613
  end
601
614
 
602
615
  def to_xml
@@ -29,6 +29,7 @@
29
29
  # handling code.
30
30
 
31
31
  require 'rexml/document'
32
+ require 'bigdecimal'
32
33
 
33
34
  module Google4R #:nodoc:
34
35
  module Checkout #:nodoc:
@@ -230,7 +231,7 @@ module Google4R #:nodoc:
230
231
  result.order_adjustment = OrderAdjustment.create_from_element(element.elements['order-adjustment'])
231
232
  result.shopping_cart = ShoppingCart.create_from_element(element.elements['shopping-cart'], result)
232
233
 
233
- amount = (element.elements['order-total'].text.to_f*100).to_i
234
+ amount = (BigDecimal.new(element.elements['order-total'].text)*100).to_i
234
235
  currency = element.elements['order-total'].attributes['currency']
235
236
  result.order_total = Money.new(amount, currency)
236
237
 
@@ -311,11 +312,11 @@ module Google4R #:nodoc:
311
312
  charge.google_order_number = element.elements['google-order-number'].text
312
313
 
313
314
  currency = element.elements['latest-charge-amount'].attributes['currency']
314
- amount = (element.elements['latest-charge-amount'].text.to_f*100).to_i
315
+ amount = (BigDecimal.new(element.elements['latest-charge-amount'].text)*100).to_i
315
316
  charge.latest_charge_amount = Money.new(amount, currency)
316
317
 
317
318
  currency = element.elements['total-charge-amount'].attributes['currency']
318
- amount = (element.elements['total-charge-amount'].text.to_f*100).to_i
319
+ amount = (BigDecimal.new(element.elements['total-charge-amount'].text)*100).to_i
319
320
  charge.total_charge_amount = Money.new(amount, currency)
320
321
 
321
322
  charge.timestamp = Time.parse(element.elements['timestamp'].text)
@@ -347,11 +348,11 @@ module Google4R #:nodoc:
347
348
  refund.google_order_number = element.elements['google-order-number'].text
348
349
 
349
350
  currency = element.elements['latest-refund-amount'].attributes['currency']
350
- amount = (element.elements['latest-refund-amount'].text.to_f*100).to_i
351
+ amount = (BigDecimal.new(element.elements['latest-refund-amount'].text)*100).to_i
351
352
  refund.latest_refund_amount = Money.new(amount, currency)
352
353
 
353
354
  currency = element.elements['total-refund-amount'].attributes['currency']
354
- amount = (element.elements['total-refund-amount'].text.to_f*100).to_i
355
+ amount = (BigDecimal.new(element.elements['total-refund-amount'].text)*100).to_i
355
356
  refund.total_refund_amount = Money.new(amount, currency)
356
357
 
357
358
  refund.timestamp = Time.parse(element.elements['timestamp'].text)
@@ -384,11 +385,11 @@ module Google4R #:nodoc:
384
385
  chargeback.google_order_number = element.elements['google-order-number'].text
385
386
 
386
387
  currency = element.elements['latest-chargeback-amount'].attributes['currency']
387
- amount = (element.elements['latest-chargeback-amount'].text.to_f*100).to_i
388
+ amount = (BigDecimal.new(element.elements['latest-chargeback-amount'].text)*100).to_i
388
389
  chargeback.latest_chargeback_amount = Money.new(amount, currency)
389
390
 
390
391
  currency = element.elements['total-chargeback-amount'].attributes['currency']
391
- amount = (element.elements['total-chargeback-amount'].text.to_f*100).to_i
392
+ amount = (BigDecimal.new(element.elements['total-chargeback-amount'].text)*100).to_i
392
393
  chargeback.total_chargeback_amount = Money.new(amount, currency)
393
394
 
394
395
  chargeback.timestamp = Time.parse(element.elements['timestamp'].text)
@@ -427,7 +428,7 @@ module Google4R #:nodoc:
427
428
  authorization.google_order_number = element.elements['google-order-number'].text
428
429
 
429
430
  currency = element.elements['authorization-amount'].attributes['currency']
430
- amount = (element.elements['authorization-amount'].text.to_f*100).to_i
431
+ amount = (BigDecimal.new(element.elements['authorization-amount'].text)*100).to_i
431
432
  authorization.authorization_amount = Money.new(amount, currency)
432
433
 
433
434
  authorization.authorization_expiration_date = Time.parse(element.elements['authorization-expiration-date'].text)
@@ -592,11 +593,11 @@ module Google4R #:nodoc:
592
593
 
593
594
  result.code = element.elements['code'].text
594
595
 
595
- amount = (element.elements['calculated-amount'].text.to_f*100).to_i rescue nil
596
+ amount = (BigDecimal.new(element.elements['calculated-amount'].text)*100).to_i rescue nil
596
597
  currency = element.elements['calculated-amount'].attributes['currency'] rescue nil
597
598
  result.calculated_amount = Money.new(amount, currency) unless amount.nil?
598
599
 
599
- amount = (element.elements['applied-amount'].text.to_f*100).to_i
600
+ amount = (BigDecimal.new(element.elements['applied-amount'].text)*100).to_i
600
601
  currency = element.elements['applied-amount'].attributes['currency']
601
602
  result.applied_amount = Money.new(amount, currency)
602
603
 
@@ -642,7 +643,7 @@ module Google4R #:nodoc:
642
643
 
643
644
  result.name = element.elements['shipping-name'].text
644
645
 
645
- amount = (element.elements['shipping-cost'].text.to_f*100).to_i
646
+ amount = (BigDecimal.new(element.elements['shipping-cost'].text)*100).to_i
646
647
  currency = element.elements['shipping-cost'].attributes['currency']
647
648
  result.cost = Money.new(amount, currency)
648
649
 
@@ -674,7 +675,7 @@ module Google4R #:nodoc:
674
675
  def self.create_from_element(element)
675
676
  result = OrderAdjustment.new
676
677
 
677
- amount = (element.elements['total-tax'].text.to_f*100).to_i rescue nil
678
+ amount = (BigDecimal.new(element.elements['total-tax'].text)*100).to_i rescue nil
678
679
  currency = element.elements['total-tax'].attributes['currency'] rescue nil
679
680
  result.total_tax = Money.new(amount, currency) unless amount.nil?
680
681
 
@@ -686,7 +687,7 @@ module Google4R #:nodoc:
686
687
 
687
688
  result.merchant_calculation_successful = (element.elements['merchant-calculation-successful'].text.downcase == 'true') rescue nil
688
689
 
689
- amount = (element.elements['adjustment-total'].text.to_f*100).to_i rescue nil
690
+ amount = (BigDecimal.new(element.elements['adjustment-total'].text)*100).to_i rescue nil
690
691
  currency = element.elements['adjustment-total'].attributes['currency'] rescue nil
691
692
  result.adjustment_total = Money.new(amount, currency) unless amount.nil?
692
693
 
@@ -27,6 +27,8 @@
27
27
  # This file contains the classes and modules that are shared by the notification
28
28
  # handling and parsing as well as the command generating code.
29
29
 
30
+ require 'bigdecimal'
31
+
30
32
  #--
31
33
  # TODO: Make the optional attributes return defaults that make sense, i.e. Money.new(0)?
32
34
  #++
@@ -317,7 +319,7 @@ module Google4R #:nodoc:
317
319
  result.tax_table = shopping_cart.owner.tax_tables.find {|table| table.name == table_selector }
318
320
  end
319
321
 
320
- unit_price = (element.elements['unit-price'].text.to_f * 100).to_i
322
+ unit_price = (BigDecimal.new(element.elements['unit-price'].text) * 100).to_i
321
323
  unit_price_currency = element.elements['unit-price'].attributes['currency']
322
324
  result.unit_price = Money.new(unit_price, unit_price_currency)
323
325
 
@@ -523,7 +525,7 @@ module Google4R #:nodoc:
523
525
  result.subscription = subscription
524
526
  result.times = element.attributes['times'].to_i rescue nil
525
527
 
526
- maximum_charge = (element.elements['maximum-charge'].text.to_f * 100).to_i
528
+ maximum_charge = (BigDecimal.new(element.elements['maximum-charge'].text) * 100).to_i
527
529
  maximum_charge_currency = element.elements['maximum-charge'].attributes['currency']
528
530
  result.maximum_charge = Money.new(maximum_charge, maximum_charge_currency)
529
531
 
@@ -589,10 +591,14 @@ module Google4R #:nodoc:
589
591
  # Boolean, true iff the table's standalone attribute is to be set to "true".
590
592
  attr_reader :standalone
591
593
 
594
+ # indicates whether tax for the order is calculated using a special process. default "false"
595
+ attr_accessor :merchant_calculated
596
+
592
597
  def initialize(standalone)
593
598
  @rules = Array.new
594
599
 
595
600
  @standalone = standalone
601
+ @merchant_calculated = false
596
602
  end
597
603
 
598
604
  # Use this method to add a new TaxRule to the table. If you use a block with
@@ -855,6 +861,9 @@ module Google4R #:nodoc:
855
861
 
856
862
  # A class that represents the "flat_rate" shipping method.
857
863
  class FlatRateShipping < ShippingMethod
864
+ # (boolean, optional, default true)
865
+ attr_accessor :shipping_restrictions_allow_us_po_box
866
+
858
867
  def initialize
859
868
  super
860
869
  end
@@ -871,6 +880,12 @@ module Google4R #:nodoc:
871
880
  # #create_excluded_area to add to this area but do not change it directly.
872
881
  attr_reader :address_filters_excluded_areas
873
882
 
883
+ # (boolean, optional, default true)
884
+ attr_accessor :address_filters_allow_us_po_box
885
+
886
+ # (boolean, optional, default true)
887
+ attr_accessor :shipping_restrictions_allow_us_po_box
888
+
874
889
  def initialize
875
890
  super
876
891
  @address_filters_allowed_areas = Array.new
@@ -889,7 +904,7 @@ module Google4R #:nodoc:
889
904
  # === Example
890
905
  #
891
906
  # method = FlatRateShipping.new
892
- # method.create_allowed_area(UsCountryArea) do |area|
907
+ # method.create_address_filters_allowed_area(UsCountryArea) do |area|
893
908
  # area.area = UsCountryArea::ALL
894
909
  # end
895
910
  def create_address_filters_allowed_area(clazz, &block)
@@ -908,11 +923,11 @@ module Google4R #:nodoc:
908
923
  # === Example
909
924
  #
910
925
  # method = FlatRateShipping.new
911
- # method.create_allowed_area(UsCountryArea) do |area|
926
+ # method.create_address_filters_excluded_area(UsCountryArea) do |area|
912
927
  # area.area = UsCountryArea::ALL
913
928
  # end
914
- def create_address_filters_allowed_area(clazz, &block)
915
- return create_area(:address_filters, :allowed_areas, clazz, &block)
929
+ def create_address_filters_excluded_area(clazz, &block)
930
+ return create_area(:address_filters, :excluded_areas, clazz, &block)
916
931
  end
917
932
  end
918
933
 
@@ -1015,7 +1030,7 @@ module Google4R #:nodoc:
1015
1030
  def self.create_from_element(this_shipping, element)
1016
1031
  result = CarrierCalculatedShippingOption.new(this_shipping)
1017
1032
  result.shipping_company = element.elements['shipping-company'].text
1018
- price = (element.elements['price'].text.to_f * 100).to_i
1033
+ price = (BigDecimal.new(element.elements['price'].text) * 100).to_i
1019
1034
  price_currency = element.elements['price'].attributes['currency']
1020
1035
  result.price = Money.new(price, price_currency)
1021
1036
  result.shipping_type = element.elements['shipping-type']
@@ -1091,7 +1106,7 @@ module Google4R #:nodoc:
1091
1106
 
1092
1107
  # Creates a new Unit from the given REXML::Element instance.
1093
1108
  def self.create_from_element(element)
1094
- result = self.new(element.attributes['value'].to_f)
1109
+ result = self.new(BigDecimal.new(element.attributes['value'].to_s))
1095
1110
  return result
1096
1111
  end
1097
1112
  end
@@ -1104,7 +1119,7 @@ module Google4R #:nodoc:
1104
1119
 
1105
1120
  def initialize(value, unit=INCH)
1106
1121
  @unit = unit
1107
- @value = value.to_f
1122
+ @value = BigDecimal.new(value.to_s)
1108
1123
  end
1109
1124
  end
1110
1125
 
@@ -1115,7 +1130,7 @@ module Google4R #:nodoc:
1115
1130
 
1116
1131
  def initialize(value, unit=LB)
1117
1132
  @unit = unit
1118
- @value = value.to_f
1133
+ @value = BigDecimal.new(value.to_s)
1119
1134
  end
1120
1135
  end
1121
1136
 
@@ -90,7 +90,7 @@ module Google4R #:nodoc:
90
90
  super
91
91
  self.process_command(@command)
92
92
  io = StringIO.new
93
- @document.write(io, 0) # TODO: Maybe replace 0 by -1 so no spaces are inserted?
93
+ @document.write(io, -1)
94
94
  return io.string
95
95
  end
96
96
 
@@ -99,7 +99,7 @@ module Google4R #:nodoc:
99
99
  end
100
100
 
101
101
  protected
102
-
102
+
103
103
  # Base method to generate root tag of a command
104
104
  def process_command(command)
105
105
  tag_name = self.tag_name_for_command(command.class)
@@ -204,10 +204,16 @@ module Google4R #:nodoc:
204
204
  # and that all others are alternate tax rules
205
205
  def process_tax_tables(tax_tables, parent)
206
206
  tax_tables_element = parent.add_element('tax-tables')
207
-
207
+
208
208
  # assumes that the first tax table is the default
209
209
  default_table = tax_tables.first
210
210
 
211
+ if default_table.merchant_calculated
212
+ tax_tables_element.add_attribute('merchant-calculated', 'true')
213
+ else
214
+ tax_tables_element.add_attribute('merchant-calculated', 'false')
215
+ end
216
+
211
217
  default_table_element = tax_tables_element.add_element('default-tax-table')
212
218
  rules_element = default_table_element.add_element('tax-rules')
213
219
 
@@ -401,6 +407,13 @@ module Google4R #:nodoc:
401
407
  shipping.shipping_restrictions_allowed_areas.length > 0 then
402
408
  shipping_restrictions_tag = element.add_element('shipping-restrictions')
403
409
 
410
+ allow_us_po_box = shipping_restrictions_tag.add_element('allow-us-po-box')
411
+ if shipping.shipping_restrictions_allow_us_po_box
412
+ allow_us_po_box.text = 'true'
413
+ else
414
+ allow_us_po_box.text = 'false'
415
+ end
416
+
404
417
  if shipping.shipping_restrictions_allowed_areas.length > 0 then
405
418
  allowed_tag = shipping_restrictions_tag.add_element('allowed-areas')
406
419
 
@@ -423,6 +436,13 @@ module Google4R #:nodoc:
423
436
  shipping.address_filters_allowed_areas.length > 0 then
424
437
  address_filters_tag = element.add_element('address-filters')
425
438
 
439
+ allow_us_po_box = address_filters_tag.add_element('allow-us-po-box')
440
+ if shipping.address_filters_allow_us_po_box
441
+ allow_us_po_box.text = 'true'
442
+ else
443
+ allow_us_po_box.text = 'false'
444
+ end
445
+
426
446
  if shipping.address_filters_allowed_areas.length > 0 then
427
447
  allowed_tag = address_filters_tag.add_element('allowed-areas')
428
448
 
@@ -771,7 +791,7 @@ module Google4R #:nodoc:
771
791
  super
772
792
  process_results(@merchant_calculation_results.merchant_calculation_results)
773
793
  io = StringIO.new
774
- @document.write(io, 0) # TODO: Maybe replace 0 by -1 so no spaces are inserted?
794
+ @document.write(io, -1)
775
795
  return io.string
776
796
  end
777
797
 
@@ -41,11 +41,6 @@ class Google4R::Checkout::AddMerchantOrderNumberCommandTest < Test::Unit::TestCa
41
41
 
42
42
  @command.google_order_number = '841171949013218'
43
43
  @command.merchant_order_number = 'P6502-53-7861SBJD'
44
-
45
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
46
- <add-merchant-order-number xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
47
- <merchant-order-number>P6502-53-7861SBJD</merchant-order-number>
48
- </add-merchant-order-number>}
49
44
  end
50
45
 
51
46
  def test_behaves_correctly
@@ -55,7 +50,7 @@ class Google4R::Checkout::AddMerchantOrderNumberCommandTest < Test::Unit::TestCa
55
50
  end
56
51
 
57
52
  def test_xml
58
- assert_strings_equal(@sample_xml, @command.to_xml)
53
+ assert_command_element_text_equals(@command.merchant_order_number, "> merchant-order-number", @command)
59
54
  end
60
55
 
61
56
  def test_accessors
@@ -42,14 +42,6 @@ class Google4R::Checkout::AddTrackingDataCommandTest < Test::Unit::TestCase
42
42
  @command.google_order_number = '841171949013218'
43
43
  @command.carrier = 'UPS'
44
44
  @command.tracking_number = 'Z9842W69871281267'
45
-
46
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
47
- <add-tracking-data xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
48
- <tracking-data>
49
- <carrier>UPS</carrier>
50
- <tracking-number>Z9842W69871281267</tracking-number>
51
- </tracking-data>
52
- </add-tracking-data>}
53
45
  end
54
46
 
55
47
  def test_behaves_correctly
@@ -59,7 +51,8 @@ class Google4R::Checkout::AddTrackingDataCommandTest < Test::Unit::TestCase
59
51
  end
60
52
 
61
53
  def test_xml
62
- assert_strings_equal(@sample_xml, @command.to_xml)
54
+ assert_command_element_text_equals(@command.carrier, "> tracking-data > carrier", @command)
55
+ assert_command_element_text_equals(@command.tracking_number, "> tracking-data > tracking-number", @command)
63
56
  end
64
57
 
65
58
  def test_accessors
@@ -40,9 +40,6 @@ class Google4R::Checkout::ArchiveOrderCommandTest < Test::Unit::TestCase
40
40
  @command = @frontend.create_archive_order_command
41
41
 
42
42
  @command.google_order_number = '841171949013218'
43
-
44
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
45
- <archive-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'/>}
46
43
  end
47
44
 
48
45
  def test_behaves_correctly
@@ -52,7 +49,7 @@ class Google4R::Checkout::ArchiveOrderCommandTest < Test::Unit::TestCase
52
49
  end
53
50
 
54
51
  def test_xml
55
- assert_strings_equal(@sample_xml, @command.to_xml)
52
+ assert_element_exists(command_selector(@command), @command.to_xml)
56
53
  end
57
54
 
58
55
  def test_accessors
@@ -40,9 +40,6 @@ class Google4R::Checkout::AuthorizeOrderCommandTest < Test::Unit::TestCase
40
40
  @command = @frontend.create_authorize_order_command
41
41
 
42
42
  @command.google_order_number = '841171949013218'
43
-
44
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
45
- <authorize-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'/>}
46
43
  end
47
44
 
48
45
  def test_behaves_correctly
@@ -52,7 +49,7 @@ class Google4R::Checkout::AuthorizeOrderCommandTest < Test::Unit::TestCase
52
49
  end
53
50
 
54
51
  def test_xml
55
- assert_strings_equal(@sample_xml, @command.to_xml)
52
+ assert_element_exists(command_selector(@command), @command.to_xml)
56
53
  end
57
54
 
58
55
  def test_accessors
@@ -44,20 +44,6 @@ class Google4R::Checkout::BackorderItemsCommandTest < Test::Unit::TestCase
44
44
  @item_info1 = ItemInfo.new('A1')
45
45
  @item_info2 = ItemInfo.new('B2')
46
46
  @command.item_info_arr = [@item_info1, @item_info2]
47
-
48
-
49
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
50
- <backorder-items xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
51
- <item-ids>
52
- <item-id>
53
- <merchant-item-id>A1</merchant-item-id>
54
- </item-id>
55
- <item-id>
56
- <merchant-item-id>B2</merchant-item-id>
57
- </item-id>
58
- </item-ids>
59
- <send-email>true</send-email>
60
- </backorder-items>}
61
47
  end
62
48
 
63
49
  def test_behaves_correctly
@@ -68,7 +54,7 @@ class Google4R::Checkout::BackorderItemsCommandTest < Test::Unit::TestCase
68
54
  end
69
55
 
70
56
  def test_xml_send_email
71
- assert_strings_equal(@sample_xml, @command.to_xml)
57
+ assert_command_element_text_equals("true", "> send-email", @command)
72
58
  end
73
59
 
74
60
  def test_accessors
@@ -46,21 +46,6 @@ class Google4R::Checkout::CancelItemsCommandTest < Test::Unit::TestCase
46
46
  @command.item_info_arr = [@item_info1, @item_info2]
47
47
  @command.reason = 'This item is no longer manufactured.'
48
48
  @command.comment = 'Suggested replacement is model XBR2700.'
49
-
50
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
51
- <cancel-items xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
52
- <item-ids>
53
- <item-id>
54
- <merchant-item-id>A1</merchant-item-id>
55
- </item-id>
56
- <item-id>
57
- <merchant-item-id>B2</merchant-item-id>
58
- </item-id>
59
- </item-ids>
60
- <send-email>true</send-email>
61
- <reason>This item is no longer manufactured.</reason>
62
- <comment>Suggested replacement is model XBR2700.</comment>
63
- </cancel-items>}
64
49
  end
65
50
 
66
51
  def test_behaves_correctly
@@ -72,7 +57,9 @@ class Google4R::Checkout::CancelItemsCommandTest < Test::Unit::TestCase
72
57
  end
73
58
 
74
59
  def test_xml_send_email
75
- assert_strings_equal(@sample_xml, @command.to_xml)
60
+ assert_command_element_text_equals("true", "> send-email", @command)
61
+ assert_command_element_text_equals(@command.reason, "> reason", @command)
62
+ assert_command_element_text_equals(@command.comment, "> comment", @command)
76
63
  end
77
64
 
78
65
  def test_accessors
@@ -42,17 +42,6 @@ class Google4R::Checkout::CancelOrderCommandTest < Test::Unit::TestCase
42
42
  @command.google_order_number = '841171949013218'
43
43
  @command.reason = 'Buyer cancelled the order'
44
44
  @command.comment = 'Buyer ordered another item'
45
-
46
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
47
- <cancel-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
48
- <reason>Buyer cancelled the order</reason>
49
- <comment>Buyer ordered another item</comment>
50
- </cancel-order>}
51
-
52
- @sample_xml_no_comment=%Q{<?xml version='1.0' encoding='UTF-8'?>
53
- <cancel-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
54
- <reason>Buyer cancelled the order</reason>
55
- </cancel-order>}
56
45
  end
57
46
 
58
47
  def test_behaves_correctly
@@ -68,12 +57,14 @@ class Google4R::Checkout::CancelOrderCommandTest < Test::Unit::TestCase
68
57
  end
69
58
 
70
59
  def test_xml
71
- assert_strings_equal @sample_xml, @command.to_xml
60
+ assert_command_element_text_equals(@command.reason, "> reason", @command)
61
+ assert_command_element_text_equals(@command.comment, "> comment", @command)
72
62
  end
73
63
 
74
64
  def test_xml_when_comment_not_used
75
65
  @command.comment = nil
76
- assert_strings_equal @sample_xml_no_comment, @command.to_xml
66
+ assert_command_element_text_equals(@command.reason, "> reason", @command)
67
+ assert_no_command_element_exists("> comment", @command)
77
68
  end
78
69
 
79
70
  def test_to_xml_does_not_raise_exception
@@ -40,14 +40,6 @@ class Google4R::Checkout::ChargeOrderCommandTest < Test::Unit::TestCase
40
40
  @command = @frontend.create_charge_order_command
41
41
  @command.google_order_number = '1234-5678-ABCD-1234'
42
42
  @command.amount = Money.new(1000, 'GBP')
43
-
44
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
45
- <charge-order xmlns='http://checkout.google.com/schema/2' google-order-number='1234-5678-ABCD-1234'>
46
- <amount currency='GBP'>10.00</amount>
47
- </charge-order>}
48
-
49
- @sample_no_amount=%Q{<?xml version='1.0' encoding='UTF-8'?>
50
- <charge-order xmlns='http://checkout.google.com/schema/2' google-order-number='1234-5678-ABCD-1234'/>}
51
43
  end
52
44
 
53
45
  def test_behaves_correctly
@@ -56,9 +48,9 @@ class Google4R::Checkout::ChargeOrderCommandTest < Test::Unit::TestCase
56
48
  end
57
49
  end
58
50
 
59
- def test_xml_with_amount
51
+ def test_xml_without_amount
60
52
  @command.amount = nil
61
- assert_strings_equal(@sample_no_amount, @command.to_xml)
53
+ assert_no_command_element_exists("amount", @command)
62
54
  end
63
55
 
64
56
  def test_accessors
@@ -67,7 +59,7 @@ class Google4R::Checkout::ChargeOrderCommandTest < Test::Unit::TestCase
67
59
  end
68
60
 
69
61
  def test_xml_generation
70
- assert_strings_equal(@sample_xml, @command.to_xml)
62
+ assert_command_element_text_equals("10.00", "> amount[currency=GBP]", @command)
71
63
  end
72
64
 
73
65
  def test_to_xml_does_not_raise_exception
@@ -38,6 +38,9 @@ require 'open3' rescue require 'win32/open3'
38
38
 
39
39
  require 'rexml/document'
40
40
 
41
+ require 'net/http'
42
+ require 'net/https'
43
+
41
44
  # Test for the class UsZipArea.
42
45
  #
43
46
  # TODO: Make the tests querying Google Checkout's diagnose service and the XSD validation optional.
@@ -156,7 +159,6 @@ class Google4R::Checkout::CheckoutCommandXmlGeneratorTest < Test::Unit::TestCase
156
159
 
157
160
  xml_str = @generator.generate
158
161
  assert_xml_validates_against_xml_schema(@schema_path, xml_str)
159
- assert_string_equals_file_contents(@expected_path, xml_str)
160
162
  assert_google_checkout_diagnose_returns_no_warnings(xml_str)
161
163
  end
162
164
 
@@ -170,25 +172,26 @@ class Google4R::Checkout::CheckoutCommandXmlGeneratorTest < Test::Unit::TestCase
170
172
  protected
171
173
 
172
174
  def assert_google_checkout_diagnose_returns_no_warnings(xml_str)
173
- tmpfile = Tempfile.new('xml_output')
174
- tmpfile << xml_str
175
- tmpfile.flush
176
-
177
175
  url = "https://%s:%s@sandbox.google.com/checkout/cws/v2/Merchant/%s/request/diagnose" %
178
176
  [ FRONTEND_CONFIGURATION[:merchant_id], FRONTEND_CONFIGURATION[:merchant_key],
179
177
  FRONTEND_CONFIGURATION[:merchant_id] ]
180
178
 
181
- stdin, stdout, stderr = Open3.popen3("curl -d @#{tmpfile.path} #{url}")
182
- outstr = stdout.read
183
- errstr = stderr.read
184
-
185
- assert (outstr != ''), 'curl command not available'
186
-
187
- # Check that there is no <warnings> tag in the XML.
188
- xml_document = REXML::Document.new(outstr)
189
- assert 0, xml_document.root.elements.to_a('//warnings').size
179
+ http = Net::HTTP.new('sandbox.google.com', 443)
180
+ http.use_ssl = true
181
+
182
+ http.start do
183
+ req = Net::HTTP::Post.new("/checkout/cws/v2/Merchant/%s/request/diagnose" %
184
+ [ FRONTEND_CONFIGURATION[:merchant_id] ])
185
+ req.basic_auth(FRONTEND_CONFIGURATION[:merchant_id], FRONTEND_CONFIGURATION[:merchant_key])
186
+ req.body = xml_str
187
+
188
+ res = http.request(req)
189
+ assert res.kind_of?(Net::HTTPSuccess), res.inspect
190
190
 
191
- tmpfile.close!
191
+ # Check that there is no <warnings> tag in the XML.
192
+ xml_document = REXML::Document.new(res.body)
193
+ assert 0, xml_document.root.elements.to_a('//warnings').size
194
+ end
192
195
  end
193
196
 
194
197
  def assert_xml_validates_against_xml_schema(schema_path, xml_str)
@@ -210,9 +213,4 @@ class Google4R::Checkout::CheckoutCommandXmlGeneratorTest < Test::Unit::TestCase
210
213
 
211
214
  tmpfile.close!
212
215
  end
213
-
214
- def assert_string_equals_file_contents(expected_path, xml_str)
215
- file_contents = File.open(expected_path, 'r') { |f| f.read }
216
- assert_strings_equal file_contents, xml_str
217
- end
218
216
  end
@@ -41,11 +41,6 @@ class Google4R::Checkout::DeliverOrderCommandTest < Test::Unit::TestCase
41
41
 
42
42
  @command.google_order_number = '841171949013218'
43
43
  @command.send_email = true
44
-
45
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
46
- <deliver-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
47
- <send-email>true</send-email>
48
- </deliver-order>}
49
44
  end
50
45
 
51
46
  def test_behaves_correctly
@@ -55,7 +50,7 @@ class Google4R::Checkout::DeliverOrderCommandTest < Test::Unit::TestCase
55
50
  end
56
51
 
57
52
  def test_xml_send_email
58
- assert_strings_equal(@sample_xml, @command.to_xml)
53
+ assert_command_element_text_equals("true", "> send-email", @command)
59
54
  end
60
55
 
61
56
  def test_accessors
@@ -43,7 +43,8 @@ class Google4R::Checkout::FlatRateShippingMethodTest < Test::Unit::TestCase
43
43
  def test_flat_rate_shipping_method_behaves_correctly
44
44
  [ :name, :name=, :price, :price=,
45
45
  :shipping_restrictions_allowed_areas, :shipping_restrictions_excluded_areas,
46
- :create_allowed_area, :create_excluded_area, :create_area
46
+ :create_allowed_area, :create_excluded_area, :create_area,
47
+ :shipping_restrictions_allow_us_po_box
47
48
  ].each do |symbol|
48
49
  assert_respond_to @shipping, symbol
49
50
  end
@@ -63,7 +64,7 @@ class Google4R::Checkout::FlatRateShippingMethodTest < Test::Unit::TestCase
63
64
  @shipping.price = Money.new(100, "EUR")
64
65
  assert_kind_of Money, @shipping.price
65
66
  assert_equal 100, @shipping.price.cents
66
- assert_equal "EUR", @shipping.price.currency
67
+ assert_equal "EUR", @shipping.price.currency.iso_code
67
68
  end
68
69
 
69
70
  def test_flat_rate_shipping_method_price_is_validated
@@ -43,6 +43,7 @@ class Google4R::Checkout::MerchantCalculatedShippingTest < Test::Unit::TestCase
43
43
  [ :name, :name=, :price, :price=,
44
44
  :shipping_restrictions_allowed_areas, :shipping_restrictions_excluded_areas,
45
45
  :address_filters_allowed_areas, :address_filters_excluded_areas,
46
+ :address_filters_allow_us_po_box, :shipping_restrictions_allow_us_po_box,
46
47
  :create_allowed_area, :create_excluded_area, :create_area
47
48
  ].each do |symbol|
48
49
  assert_respond_to @shipping, symbol
@@ -65,7 +66,7 @@ class Google4R::Checkout::MerchantCalculatedShippingTest < Test::Unit::TestCase
65
66
  @shipping.price = Money.new(100, "EUR")
66
67
  assert_kind_of Money, @shipping.price
67
68
  assert_equal 100, @shipping.price.cents
68
- assert_equal "EUR", @shipping.price.currency
69
+ assert_equal "EUR", @shipping.price.currency.iso_code
69
70
  end
70
71
 
71
72
  def test_merchant_calculated_shipping_price_is_validated
@@ -120,7 +120,7 @@ class Google4R::Checkout::MerchantCalculationCallbackTest < Test::Unit::TestCase
120
120
  expect.with { |element, owner| element.name == 'shopping-cart' and owner.kind_of?(MerchantCalculationCallback) }
121
121
 
122
122
  expect = AnonymousAddress.stubs(:create_from_element)
123
- expect.times(1).returns(:anonymous_address, :anonymous_address2)
123
+ expect.times(2).returns(:anonymous_address, :anonymous_address2)
124
124
  expect.with { |element| element.name == 'anonymous-address' }
125
125
 
126
126
  # Create the new notification.
@@ -37,14 +37,8 @@ class Google4R::Checkout::MerchantCalculationResultTest < Test::Unit::TestCase
37
37
 
38
38
  def setup
39
39
  # Build up some Mocha expectations.
40
- expect = CouponResult.stubs(:new)
41
- expect.times(1).returns(:coupon_result)
42
-
43
- expect = GiftCertificateResult.stubs(:new)
44
- expect.times(1).returns(:gift_certificate_result)
45
-
46
40
  expect = Money.stubs(:new)
47
- expect.times(1).returns(:shipping_rate, :total_tax)
41
+ expect.times(2).returns(:shipping_rate, :total_tax)
48
42
 
49
43
  @result = MerchantCalculationResult.new('UPS Ground', '1234567890', Money.new(1000, 'USD'), true, Money.new(2000, 'USD'))
50
44
  end
@@ -63,6 +57,12 @@ class Google4R::Checkout::MerchantCalculationResultTest < Test::Unit::TestCase
63
57
  end
64
58
 
65
59
  def test_create_merchant_code_result_works_correctly
60
+ expect = CouponResult.stubs(:new)
61
+ expect.times(1).returns(:coupon_result)
62
+
63
+ expect = GiftCertificateResult.stubs(:new)
64
+ expect.times(1).returns(:gift_certificate_result)
65
+
66
66
  # Create the new CouponResult and GiftCertificationResult instances.
67
67
  @result.create_merchant_code_result(CouponResult)
68
68
  @result.create_merchant_code_result(GiftCertificateResult)
@@ -172,7 +172,32 @@ class Google4R::Checkout::MerchantCalculationResultsTest < Test::Unit::TestCase
172
172
  result.create_merchant_code_result(@gift_certificate_result)
173
173
  end
174
174
 
175
- # perform the assertions
176
- assert_strings_equal @xml_str, @results.to_xml
175
+ xml = @results.to_xml
176
+ @results.merchant_calculation_results.each do |result|
177
+ selector = "merchant-calculation-results > results"
178
+ selector << " > result[address-id='#{result.address_id}'][shipping-name='#{result.shipping_name}']"
179
+
180
+ assert_element_text_equals(result.shipping_rate.to_s,
181
+ "#{selector} > shipping-rate[currency='#{result.shipping_rate.currency.iso_code}']", xml)
182
+ assert_element_text_equals(result.shippable ? "true" : "false", "#{selector} > shippable", xml)
183
+
184
+ selector << " > merchant-code-results"
185
+
186
+ cr_selector = "#{selector} > coupon-result"
187
+ cr = result.merchant_code_results.select { |r| r.kind_of? CouponResult }.first
188
+ assert_element_text_equals(cr.valid ? "true" : "false", "#{cr_selector} > valid", xml)
189
+ assert_element_text_equals(cr.code, "#{cr_selector} > code", xml)
190
+ assert_element_text_equals(cr.calculated_amount.to_s,
191
+ "#{cr_selector} > calculated-amount[currency='#{cr.calculated_amount.currency.iso_code}']", xml)
192
+ assert_element_text_equals(cr.message, "#{cr_selector} > message", xml)
193
+
194
+ gc_selector = "#{selector} > gift-certificate-result"
195
+ gc = result.merchant_code_results.select { |r| r.kind_of? GiftCertificateResult }.first
196
+ assert_element_text_equals(gc.valid ? "true" : "false", "#{gc_selector} > valid", xml)
197
+ assert_element_text_equals(gc.code, "#{gc_selector} > code", xml)
198
+ assert_element_text_equals(gc.calculated_amount.to_s,
199
+ "#{gc_selector} > calculated-amount[currency='#{gc.calculated_amount.currency.iso_code}']", xml)
200
+ assert_element_text_equals(gc.message, "#{gc_selector} > message", xml)
201
+ end
177
202
  end
178
203
  end
@@ -43,13 +43,6 @@ class Google4R::Checkout::OrderReportCommandTest < Test::Unit::TestCase
43
43
  @command.financial_state = 'CHARGED'
44
44
  @command.fulfillment_state = 'NEW'
45
45
  @command.date_time_zone = 'America/New_York'
46
-
47
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
48
- <order-list-request end-date='2007-09-30T23:59:59' start-date='2007-09-01T00:00:00' xmlns='http://checkout.google.com/schema/2'>
49
- <financial-state>CHARGED</financial-state>
50
- <fulfillment-state>NEW</fulfillment-state>
51
- <date-time-zone>America/New_York</date-time-zone>
52
- </order-list-request>}
53
46
  end
54
47
 
55
48
  def test_behaves_correctly
@@ -62,7 +55,12 @@ class Google4R::Checkout::OrderReportCommandTest < Test::Unit::TestCase
62
55
  end
63
56
 
64
57
  def test_to_xml
65
- assert_strings_equal(@sample_xml, @command.to_xml)
58
+ selector = "order-list-request[start-date='#{@command.start_date}'][end-date='#{@command.end_date}']"
59
+ xml = @command.to_xml
60
+
61
+ assert_element_text_equals(@command.financial_state, "#{selector} > financial-state", xml)
62
+ assert_element_text_equals(@command.fulfillment_state, "#{selector} > fulfillment-state", xml)
63
+ assert_element_text_equals(@command.date_time_zone, "#{selector} > date-time-zone", xml)
66
64
  end
67
65
 
68
66
  def test_accessors
@@ -57,7 +57,7 @@ class Google4R::Checkout::PickupShippingMethodTest < Test::Unit::TestCase
57
57
  @shipping.price = Money.new(100, "EUR")
58
58
  assert_kind_of Money, @shipping.price
59
59
  assert_equal 100, @shipping.price.cents
60
- assert_equal "EUR", @shipping.price.currency
60
+ assert_equal "EUR", @shipping.price.currency.iso_code
61
61
  end
62
62
 
63
63
  def test_pickup_shipping_method_price_is_validated
@@ -42,18 +42,6 @@ class Google4R::Checkout::RefundOrderCommandTest < Test::Unit::TestCase
42
42
  @command.amount = Money.new(1000, 'USD')
43
43
  @command.comment = 'Discount for inconvenience; ship replacement item'
44
44
  @command.reason = 'Damaged Merchandise'
45
-
46
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
47
- <refund-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
48
- <amount currency='USD'>10.00</amount>
49
- <comment>Discount for inconvenience; ship replacement item</comment>
50
- <reason>Damaged Merchandise</reason>
51
- </refund-order>}
52
-
53
- @sample_reason_only=%Q{<?xml version='1.0' encoding='UTF-8'?>
54
- <refund-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
55
- <reason>Damaged Merchandise</reason>
56
- </refund-order>}
57
45
  end
58
46
 
59
47
  def test_behaves_correctly
@@ -62,10 +50,13 @@ class Google4R::Checkout::RefundOrderCommandTest < Test::Unit::TestCase
62
50
  end
63
51
  end
64
52
 
65
- def test_xml_with_amount
53
+ def test_xml_without_amount
66
54
  @command.amount = nil
67
55
  @command.comment = nil
68
- assert_strings_equal(@sample_reason_only, @command.to_xml)
56
+
57
+ assert_command_element_text_equals(@command.reason, "> reason", @command)
58
+ assert_no_command_element_exists("amount", @command)
59
+ assert_no_command_element_exists("comment", @command)
69
60
  end
70
61
 
71
62
  def test_accessors
@@ -76,7 +67,9 @@ class Google4R::Checkout::RefundOrderCommandTest < Test::Unit::TestCase
76
67
  end
77
68
 
78
69
  def test_xml_generation
79
- assert_strings_equal(@sample_xml, @command.to_xml)
70
+ assert_command_element_text_equals(@command.reason, "> reason", @command)
71
+ assert_command_element_text_equals(@command.amount, "> amount[currency='USD']", @command)
72
+ assert_command_element_text_equals(@command.comment, "> comment", @command)
80
73
  end
81
74
 
82
75
  def test_to_xml_does_not_raise_exception
@@ -44,20 +44,6 @@ class Google4R::Checkout::ResetItemsShippingInformationCommandTest < Test::Unit:
44
44
  @item_info1 = ItemInfo.new('A1')
45
45
  @item_info2 = ItemInfo.new('B2')
46
46
  @command.item_info_arr = [@item_info1, @item_info2]
47
-
48
-
49
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
50
- <reset-items-shipping-information xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
51
- <item-ids>
52
- <item-id>
53
- <merchant-item-id>A1</merchant-item-id>
54
- </item-id>
55
- <item-id>
56
- <merchant-item-id>B2</merchant-item-id>
57
- </item-id>
58
- </item-ids>
59
- <send-email>true</send-email>
60
- </reset-items-shipping-information>}
61
47
  end
62
48
 
63
49
  def test_behaves_correctly
@@ -68,7 +54,7 @@ class Google4R::Checkout::ResetItemsShippingInformationCommandTest < Test::Unit:
68
54
  end
69
55
 
70
56
  def test_xml_send_email
71
- assert_strings_equal(@sample_xml, @command.to_xml)
57
+ assert_command_element_text_equals("true", "> send-email", @command)
72
58
  end
73
59
 
74
60
  def test_accessors
@@ -44,20 +44,6 @@ class Google4R::Checkout::ReturnItemsCommandTest < Test::Unit::TestCase
44
44
  @item_info1 = ItemInfo.new('A1')
45
45
  @item_info2 = ItemInfo.new('B2')
46
46
  @command.item_info_arr = [@item_info1, @item_info2]
47
-
48
-
49
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
50
- <return-items xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
51
- <item-ids>
52
- <item-id>
53
- <merchant-item-id>A1</merchant-item-id>
54
- </item-id>
55
- <item-id>
56
- <merchant-item-id>B2</merchant-item-id>
57
- </item-id>
58
- </item-ids>
59
- <send-email>true</send-email>
60
- </return-items>}
61
47
  end
62
48
 
63
49
  def test_behaves_correctly
@@ -68,7 +54,7 @@ class Google4R::Checkout::ReturnItemsCommandTest < Test::Unit::TestCase
68
54
  end
69
55
 
70
56
  def test_xml_send_email
71
- assert_strings_equal(@sample_xml, @command.to_xml)
57
+ assert_command_element_text_equals("true", "> send-email", @command)
72
58
  end
73
59
 
74
60
  def test_accessors
@@ -46,7 +46,7 @@ class Google4R::Checkout::RiskInformationNotificationTest < Test::Unit::TestCase
46
46
  <google-order-number>1564645586934214</google-order-number>
47
47
  <risk-information>
48
48
  <billing-address>
49
- <!-- Not to be tested here but in Address --
49
+ <!-- Not to be tested here but in Address -->
50
50
  <!--
51
51
  <contact-name>Mr Contact Smith</contact-name>
52
52
  <company-name>ACME Products</company-name>
@@ -42,12 +42,6 @@ class Google4R::Checkout::SendBuyerMessageCommandTest < Test::Unit::TestCase
42
42
  @command.google_order_number = '841171949013218'
43
43
  @command.message = 'Due to high volume, your order will ship next week. Thank you for your patience.'
44
44
  @command.send_email = true
45
-
46
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
47
- <send-buyer-message xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
48
- <message>Due to high volume, your order will ship next week. Thank you for your patience.</message>
49
- <send-email>true</send-email>
50
- </send-buyer-message>}
51
45
  end
52
46
 
53
47
  def test_behaves_correctly
@@ -57,7 +51,8 @@ class Google4R::Checkout::SendBuyerMessageCommandTest < Test::Unit::TestCase
57
51
  end
58
52
 
59
53
  def test_xml_send_email
60
- assert_strings_equal(@sample_xml, @command.to_xml)
54
+ assert_command_element_text_equals("true", "> send-email", @command)
55
+ assert_command_element_text_equals(@command.message, "> message", @command)
61
56
  end
62
57
 
63
58
  def test_accessors
@@ -46,36 +46,6 @@ class Google4R::Checkout::ShipItemsCommandTest < Test::Unit::TestCase
46
46
  @item_info_2 = ItemInfo.new('A2')
47
47
  @item_info_2.create_tracking_data('FedEx', 12345678)
48
48
  @command.item_info_arr = [@item_info_1, @item_info_2]
49
-
50
-
51
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
52
- <ship-items xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'>
53
- <item-shipping-information-list>
54
- <item-shipping-information>
55
- <item-id>
56
- <merchant-item-id>A1</merchant-item-id>
57
- </item-id>
58
- <tracking-data-list>
59
- <tracking-data>
60
- <carrier>UPS</carrier>
61
- <tracking-number>55555555</tracking-number>
62
- </tracking-data>
63
- </tracking-data-list>
64
- </item-shipping-information>
65
- <item-shipping-information>
66
- <item-id>
67
- <merchant-item-id>A2</merchant-item-id>
68
- </item-id>
69
- <tracking-data-list>
70
- <tracking-data>
71
- <carrier>FedEx</carrier>
72
- <tracking-number>12345678</tracking-number>
73
- </tracking-data>
74
- </tracking-data-list>
75
- </item-shipping-information>
76
- </item-shipping-information-list>
77
- <send-email>true</send-email>
78
- </ship-items>}
79
49
  end
80
50
 
81
51
  def test_behaves_correctly
@@ -85,8 +55,18 @@ class Google4R::Checkout::ShipItemsCommandTest < Test::Unit::TestCase
85
55
  end
86
56
  end
87
57
 
88
- def test_xml_send_email
89
- assert_strings_equal(@sample_xml, @command.to_xml)
58
+ def test_xml_generation
59
+ assert_command_element_text_equals("true", "> send-email", @command)
60
+ @command.item_info_arr.each do |item_info|
61
+ selector = "> item-shipping-information-list > item-shipping-information"
62
+ item_info_elt = find_command_elements(selector, @command).select do |element|
63
+ element.css("item-id > merchant-item-id").first.text == item_info.merchant_item_id
64
+ end.first
65
+
66
+ selector = "tracking-data-list > tracking-data"
67
+ assert_equal item_info.tracking_data_arr.first.carrier, item_info_elt.css("#{selector} > carrier").first.text
68
+ assert_equal item_info.tracking_data_arr.first.tracking_number, item_info_elt.css("#{selector} > tracking-number").first.text
69
+ end
90
70
  end
91
71
 
92
72
  def test_accessors
@@ -44,17 +44,23 @@ class Google4R::Checkout::TaxTableTest < Test::Unit::TestCase
44
44
  assert_respond_to @table, :name
45
45
  assert_respond_to @table, :name=
46
46
  assert_respond_to @table, :standalone
47
+ assert_respond_to @table, :merchant_calculated
48
+ assert_respond_to @table, :merchant_calculated=
47
49
  end
48
50
 
49
51
  def test_initialized_correctly
50
52
  assert_nil @table.name
51
53
  assert_equal [], @table.rules
52
54
  assert_equal false, @table.standalone
55
+ assert_equal false, @table.merchant_calculated
53
56
  end
54
57
 
55
58
  def test_accessors_work_correctly
56
59
  @table.name = "name"
57
60
  assert_equal "name", @table.name
61
+
62
+ @table.merchant_calculated = true
63
+ assert_equal true, @table.merchant_calculated
58
64
  end
59
65
 
60
66
  def test_create_rule_works_correctly_with_block
@@ -40,9 +40,6 @@ class Google4R::Checkout::UnarchiveOrderCommandTest < Test::Unit::TestCase
40
40
  @command = @frontend.create_unarchive_order_command
41
41
 
42
42
  @command.google_order_number = '841171949013218'
43
-
44
- @sample_xml=%Q{<?xml version='1.0' encoding='UTF-8'?>
45
- <unarchive-order xmlns='http://checkout.google.com/schema/2' google-order-number='841171949013218'/>}
46
43
  end
47
44
 
48
45
  def test_behaves_correctly
@@ -52,7 +49,7 @@ class Google4R::Checkout::UnarchiveOrderCommandTest < Test::Unit::TestCase
52
49
  end
53
50
 
54
51
  def test_xml
55
- assert_strings_equal(@sample_xml, @command.to_xml)
52
+ assert_element_exists(command_selector(@command), @command.to_xml)
56
53
  end
57
54
 
58
55
  def test_accessors
metadata CHANGED
@@ -1,21 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google4r-checkout
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ prerelease: true
5
5
  segments:
6
6
  - 1
7
- - 0
8
- - 6
9
7
  - 1
10
- version: 1.0.6.1
8
+ - beta1
9
+ version: 1.1.beta1
11
10
  platform: ruby
12
11
  authors:
13
12
  - Tony Chan
14
- autorequire: ""
13
+ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-04-20 00:00:00 -04:00
17
+ date: 2010-04-21 00:00:00 -04:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -23,13 +22,13 @@ dependencies:
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
24
  requirements:
26
- - - ">="
25
+ - - ~>
27
26
  - !ruby/object:Gem::Version
28
27
  segments:
29
- - 1
30
- - 7
31
- - 1
32
- version: 1.7.1
28
+ - 2
29
+ - 3
30
+ - 0
31
+ version: 2.3.0
33
32
  type: :runtime
34
33
  version_requirements: *id001
35
34
  description: Ruby library to access the Google Checkout service and implement notification handlers.
@@ -75,11 +74,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
74
  version: 1.8.4
76
75
  required_rubygems_version: !ruby/object:Gem::Requirement
77
76
  requirements:
78
- - - ">="
77
+ - - ">"
79
78
  - !ruby/object:Gem::Version
80
79
  segments:
81
- - 0
82
- version: "0"
80
+ - 1
81
+ - 3
82
+ - 1
83
+ version: 1.3.1
83
84
  requirements: []
84
85
 
85
86
  rubyforge_project: