Permalink
Browse files

Add Chargify::Coupon.find_all_by_product_family_id

- Add coupon specs to cover some existing functionality
  • Loading branch information...
1 parent f61987a commit 5b8ef664215a8448b5dc37fdcb05e48c3f5461e7 @shayfrendt shayfrendt committed Oct 19, 2011
Showing with 49 additions and 0 deletions.
  1. +4 −0 lib/chargify_api_ares.rb
  2. +35 −0 spec/coupon_spec.rb
  3. +10 −0 spec/factories.rb
View
4 lib/chargify_api_ares.rb
@@ -298,6 +298,10 @@ class PaymentProfile < Base
end
class Coupon < Base
+ def self.find_all_by_product_family_id(product_family_id)
+ Coupon.find(:all, :params => { :product_family_id => product_family_id })
+ end
+
def self.find_by_product_family_id_and_code(product_family_id, code)
Coupon.new get(:lookup, :product_family_id => product_family_id, :code => code)
end
View
35 spec/coupon_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+describe Chargify::Coupon do
+ context '.find_by_product_family_id_and_code' do
+ let(:existing_coupon) { Factory.build(:coupon, :code => '20OFF') }
+
+ before do
+ FakeWeb.register_uri(:get, "#{test_domain}/product_families/10/coupons/lookup.xml?code=#{existing_coupon.code}", :body => existing_coupon.attributes.to_xml)
+ end
+
+ it "finds the correct coupon by product family and code" do
+ Chargify::Coupon.find_by_product_family_id_and_code(10, '20OFF').should == existing_coupon
+ end
+
+ it "is an instance of Chargify::Coupon" do
+ coupon = Chargify::Coupon.find_by_product_family_id_and_code(10, '20OFF')
+ coupon.should be_instance_of(Chargify::Coupon)
+ end
+ end
+
+ context '.find_all_by_product_family_id' do
+ let(:coupon_1) { Factory.build(:coupon, :product_family_id => 5) }
+ let(:coupon_2) { Factory.build(:coupon, :product_family_id => 5) }
+
+ before do
+ FakeWeb.register_uri(:get, "#{test_domain}/product_families/5/coupons.xml", :body => [coupon_1.attributes, coupon_2.attributes].to_xml)
+ end
+
+ it "returns all of the coupons for a product family" do
+ coupons = Chargify::Coupon.find_all_by_product_family_id(5)
+ coupons.count.should == 2
+ coupons.map{|c| c.should be_instance_of(Chargify::Coupon)}
+ end
+ end
+end
View
10 spec/factories.rb
@@ -61,4 +61,14 @@
f.unit_name 'unit'
f.component_type 'quantity_based_component'
end
+
+ factory :coupon, :class => Chargify::Coupon do |f|
+ f.name { '15% off' }
+ f.code { '15OFF' }
+ f.description { '15% off for life' }
+ f.percentage { '14' }
+ f.allow_negative_balance { false }
+ f.recurring { false }
+ f.end_date { 1.month.from_now }
+ end
end

0 comments on commit 5b8ef66

Please sign in to comment.