diff --git a/lib/fake_braintree/subscription.rb b/lib/fake_braintree/subscription.rb index e58b2dd..31c576e 100644 --- a/lib/fake_braintree/subscription.rb +++ b/lib/fake_braintree/subscription.rb @@ -24,7 +24,7 @@ def subscription_hash subscription_hash = @subscription_hash.dup subscription_hash["id"] ||= subscription_id subscription_hash["transactions"] = [] - subscription_hash["add_ons"] = [] + subscription_hash["add_ons"] = added_add_ons subscription_hash["discounts"] = [] subscription_hash["plan_id"] = @subscription_hash["plan_id"] subscription_hash["next_billing_date"] = braintree_formatted_date(1.month.from_now) @@ -52,5 +52,13 @@ def braintree_formatted_date(date) def subscription_id md5("#{@subscription_hash["payment_method_token"]}#{Time.now.to_f}")[0,6] end + + def added_add_ons + if @subscription_hash["add_ons"] && @subscription_hash["add_ons"]["add"] + @subscription_hash["add_ons"]["add"].map { |add_on| { "id" => add_on["inherited_from_id"] } } + else + [] + end + end end end diff --git a/spec/fake_braintree/subscription_spec.rb b/spec/fake_braintree/subscription_spec.rb index 73ef6c6..0aafd13 100644 --- a/spec/fake_braintree/subscription_spec.rb +++ b/spec/fake_braintree/subscription_spec.rb @@ -37,6 +37,10 @@ describe "Braintree::Subscription.find" do it "can find a created subscription" do + payment_method_token = cc_token + plan_id = "abc123" + subscription_id = + create_subscription(:payment_method_token => payment_method_token, :plan_id => plan_id).subscription.id subscription = Braintree::Subscription.find(subscription_id) subscription.should_not be_nil subscription.payment_method_token.should == payment_method_token @@ -44,13 +48,18 @@ end it "raises a Braintree:NotFoundError when it cannot find a subscription" do + create_subscription expect { Braintree::Subscription.find('abc123') }.to raise_error(Braintree::NotFoundError, /abc123/) end - let(:payment_method_token) { cc_token } - let(:plan_id) { 'my-plan-id' } - let(:subscription_id) { Braintree::Subscription.create(:payment_method_token => payment_method_token, - :plan_id => plan_id).subscription.id } + it "returns add-ons added with the subscription" do + add_on_id = "def456" + subscription_id = create_subscription(:add_ons => { :add => [{ :inherited_from_id => add_on_id }] }).subscription.id + subscription = Braintree::Subscription.find(subscription_id) + add_ons = subscription.add_ons + add_ons.size.should == 1 + add_ons.first.id.should == add_on_id + end end describe "Braintree::Subscription.update" do diff --git a/spec/support/subscription_helpers.rb b/spec/support/subscription_helpers.rb index b5b7899..04177bc 100644 --- a/spec/support/subscription_helpers.rb +++ b/spec/support/subscription_helpers.rb @@ -1,6 +1,6 @@ module SubscriptionHelpers - def create_subscription - Braintree::Subscription.create(:payment_method_token => cc_token, - :plan_id => 'my_plan_id') + def create_subscription(options = {}) + Braintree::Subscription.create({ :payment_method_token => cc_token, + :plan_id => 'my_plan_id' }.merge(options)) end end