diff --git a/.gitignore b/.gitignore index 528d180..a20bfce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea coverage/* test/client/coverage/* test/coverage/* diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..eaf2731 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: ruby +rvm: + - 2.0.0 \ No newline at end of file diff --git a/Gemfile b/Gemfile index ffe0b1c..1181f98 100644 --- a/Gemfile +++ b/Gemfile @@ -7,6 +7,7 @@ source "http://rubygems.org" gem 'awesome_print' gem 'yard' gem 'bluecloth' + gem 'test-unit' # Specify your gem's dependencies in stamps.gemspec gemspec diff --git a/README.md b/README.md index fd037c8..1061863 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Stamps +Stamps [![Build Status](https://travis-ci.org/mattsears/stamps.svg?branch=master)](https://travis-ci.org/mattsears/stamps) ========== Stamps is Stamps.com backed library for creating postage labels, diff --git a/lib/stamps/mapping.rb b/lib/stamps/mapping.rb index 08f48f0..debe495 100644 --- a/lib/stamps/mapping.rb +++ b/lib/stamps/mapping.rb @@ -84,13 +84,15 @@ class Rate < Hashie::Trash # Maps :rate to AddOns map def add_ons=(addons) self[:AddOns] = AddOnsArray.new(:add_on_v4 => addons[:add_on_v4], - :add_on_v5 => addons[:add_on_v5]) + :add_on_v5 => addons[:add_on_v5], + :add_on_v6 => addons[:add_on_v6]) end end class AddOnsArray < Hashie::Trash property :AddOnV4, :from => :add_on_v4 property :AddOnV5, :from => :add_on_v5 + property :AddOnV6, :from => :add_on_v6 def add_on_v4=(vals) return unless vals @@ -101,6 +103,11 @@ def add_on_v5=(vals) return unless vals self[:AddOnV5] = vals.map{ |value| AddOn.new(value).to_hash } end + + def add_on_v6=(vals) + return unless vals + self[:AddOnV6] = vals.map{ |value| AddOn.new(value).to_hash } + end end class AddOn < Hashie::Trash diff --git a/test/mapping_test.rb b/test/mapping_test.rb index 65c8180..5b92820 100644 --- a/test/mapping_test.rb +++ b/test/mapping_test.rb @@ -63,6 +63,17 @@ class MappingTest < Test::Unit::TestCase assert_equal @rate.to_hash['AddOns'], { "AddOnV5" => @expected } end end + + context 'a rate with add_on_v6 add-ons' do + setup do + @params[:add_ons] = { add_on_v6: @add_ons} + @rate = Stamps::Mapping::Rate.new(@params) + end + + should 'map add_ons to AddOnsV6' do + assert_equal @rate.to_hash['AddOns'], { "AddOnV6" => @expected } + end + end end end