require 'spec_helper' describe Killbill::BraintreeBlue::BraintreeBluePaymentMethod do before :all do Killbill::BraintreeBlue::BraintreeBluePaymentMethod.delete_all end it 'should search all fields' do kb_tenant_id = '77-88-99-00' do_search('foo', kb_tenant_id).size.should == 0 pm = Killbill::BraintreeBlue::BraintreeBluePaymentMethod.create :kb_account_id => '11-22-33-44', :kb_payment_method_id => '55-66-77-88', :kb_tenant_id => kb_tenant_id, :braintree_customer_id => '123xka', :token => '38102343', :cc_first_name => 'ccFirstName', :cc_last_name => 'ccLastName', :cc_type => 'ccType', :cc_exp_month => 10, :cc_exp_year => 11, :cc_last_4 => 1234, :address1 => 'address1', :address2 => 'address2', :city => 'city', :state => 'state', :zip => 'zip', :country => 'country' do_search('foo', kb_tenant_id).size.should == 0 do_search(pm.token, kb_tenant_id).size.should == 1 do_search('ccType', kb_tenant_id).size.should == 1 # Exact match only for cc_last_4 do_search('123', kb_tenant_id).size.should == 0 do_search('1234', kb_tenant_id).size.should == 1 # Test partial match do_search('address', kb_tenant_id).size.should == 1 do_search('Name', kb_tenant_id).size.should == 1 pm2 = Killbill::BraintreeBlue::BraintreeBluePaymentMethod.create :kb_account_id => '22-33-44-55', :kb_payment_method_id => '66-77-88-99', :kb_tenant_id => kb_tenant_id, :braintree_customer_id => '123xka', :token => '49384029302', :cc_first_name => 'ccFirstName', :cc_last_name => 'ccLastName', :cc_type => 'ccType', :cc_exp_month => 10, :cc_exp_year => 11, :cc_last_4 => 1234, :address1 => 'address1', :address2 => 'address2', :city => 'city', :state => 'state', :zip => 'zip', :country => 'country' do_search('foo', kb_tenant_id).size.should == 0 do_search(pm.token, kb_tenant_id).size.should == 1 do_search(pm2.token, kb_tenant_id).size.should == 1 do_search('ccType', kb_tenant_id).size.should == 2 # Exact match only for cc_last_4 do_search('123', kb_tenant_id).size.should == 0 do_search('1234', kb_tenant_id).size.should == 2 # Test partial match do_search('cc', kb_tenant_id).size.should == 2 do_search('address', kb_tenant_id).size.should == 2 do_search('Name', kb_tenant_id).size.should == 2 end private def do_search(search_key, kb_tenant_id) pagination = Killbill::BraintreeBlue::BraintreeBluePaymentMethod.search(search_key, kb_tenant_id) pagination.current_offset.should == 0 results = pagination.iterator.to_a pagination.total_nb_records.should == results.size results end end