diff --git a/lib/usps/request/package/base.rb b/lib/usps/request/package/base.rb index ebb5acc..8c4d13c 100644 --- a/lib/usps/request/package/base.rb +++ b/lib/usps/request/package/base.rb @@ -6,7 +6,7 @@ class Base attr_accessor :size attr_accessor :width, :length, :height, :girth - @@required = [:id, :pounds, :ounces, :size] + @required = [:id, :pounds, :ounces, :size] def initialize(fields) fields.each { |name, value| send("#{name}=", value) } @@ -19,13 +19,17 @@ def initialize(fields) end end - @@required.each do |field| + self.class.required_properties.each do |field| error "#{field} is required" unless send(field) end end protected + def self.required_properties + @required + (defined?(super) ? super : []) + end + def error(message) raise ArgumentError.new message end diff --git a/lib/usps/request/package/domestic_package.rb b/lib/usps/request/package/domestic_package.rb index 40291b3..183820b 100644 --- a/lib/usps/request/package/domestic_package.rb +++ b/lib/usps/request/package/domestic_package.rb @@ -6,7 +6,7 @@ class DomesticPackage < Base attr_accessor :value attr_accessor :amount_to_collect - @@required += [:service, :origin_zip, :destination_zip] + @required = [:service, :origin_zip, :destination_zip] def initialize(fields = {}) if fields[:service] == 'FIRST CLASS' and !fields[:first_class_mail_type] diff --git a/lib/usps/request/package/international_package.rb b/lib/usps/request/package/international_package.rb index 633394e..81105b7 100644 --- a/lib/usps/request/package/international_package.rb +++ b/lib/usps/request/package/international_package.rb @@ -2,7 +2,7 @@ module USPS::Request::Package class InternationalPackage < Base attr_accessor :country, :mail_type - @@required += [:country, :mail_type] + @required = [:country, :mail_type] def initialize(fields = {}) super diff --git a/spec/response/international_shipping_rates_lookup_spec.rb b/spec/response/international_shipping_rates_lookup_spec.rb index d82eb49..bb665ec 100644 --- a/spec/response/international_shipping_rates_lookup_spec.rb +++ b/spec/response/international_shipping_rates_lookup_spec.rb @@ -17,7 +17,7 @@ package.services[1].tap do |express| express.id.should == '1' - express.rate.should == '103.00' + express.rate.should == '73.45' express.description.should =~ /Express Mail/ end end