killbill-client 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/killbill_client.gemspec +2 -2
- data/lib/killbill_client/api/net_http_adapter.rb +25 -23
- data/lib/killbill_client/models/combo_transaction.rb +8 -8
- data/lib/killbill_client/models/resource.rb +3 -1
- data/lib/killbill_client/models/transaction.rb +5 -0
- data/lib/killbill_client/version.rb +1 -1
- data/spec/killbill_client/base_uri_spec.rb +6 -6
- data/spec/killbill_client/encoding_spec.rb +53 -0
- data/spec/killbill_client/model_relation_spec.rb +26 -26
- data/spec/killbill_client/remote/api_spec.rb +2 -2
- data/spec/killbill_client/remote/model_spec.rb +93 -93
- data/spec/killbill_client/resource_spec.rb +61 -4
- data/spec/killbill_client/resources_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -1
- metadata +12 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 1557b30b93a8605ae8e3d36179b24a93b439c839
         | 
| 4 | 
            +
              data.tar.gz: 267910459ce59518aab8abba5b9f62cb1ed773f0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 86c73b8dadf31bb8d0e96fb40e1157ad8971392dd63c3d15d697f7eeef84a29b0497c8ab897f065f181ed38fa1a041f2851156adecdea6c9c763f05981033720
         | 
| 7 | 
            +
              data.tar.gz: c4eaaa21e76392bab84bfd341aa7b5d8761fa1cfabf86a604da08e4cc8fccc311cb8affa0faf9cd5b318f4a5b7428ea545c49b68b731a0c7a0b3a0db7ccaf733
         | 
    
        data/killbill_client.gemspec
    CHANGED
    
    | @@ -41,6 +41,6 @@ Gem::Specification.new do |s| | |
| 41 41 |  | 
| 42 42 | 
             
              s.add_dependency 'json', '>= 1.2.0'
         | 
| 43 43 |  | 
| 44 | 
            -
              s.add_development_dependency 'rake', '>= 10.0.0'
         | 
| 45 | 
            -
              s.add_development_dependency 'rspec', '~>  | 
| 44 | 
            +
              s.add_development_dependency 'rake', '>= 10.0.0', '< 11.0.0'
         | 
| 45 | 
            +
              s.add_development_dependency 'rspec', '~> 3.4'
         | 
| 46 46 | 
             
            end
         | 
| @@ -35,6 +35,30 @@ module KillBillClient | |
| 35 35 | 
             
                        :delete => ::Net::HTTP::Delete
         | 
| 36 36 | 
             
                    }
         | 
| 37 37 |  | 
| 38 | 
            +
                    def encode_params(options = {})
         | 
| 39 | 
            +
                      # Plugin properties are passed in the options but we want to send them as query parameters,
         | 
| 40 | 
            +
                      # so remove with from global hash and insert them under :params
         | 
| 41 | 
            +
                      plugin_properties = options.delete :pluginProperty
         | 
| 42 | 
            +
                      if plugin_properties && plugin_properties.size > 0
         | 
| 43 | 
            +
                        options[:params][:pluginProperty] = plugin_properties.map { |p| "#{CGI.escape p.key}=#{CGI.escape p.value}" }
         | 
| 44 | 
            +
                      end
         | 
| 45 | 
            +
                      return nil unless (options[:params] && !options[:params].empty?)
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                      pairs = options[:params].map { |key, value|
         | 
| 48 | 
            +
                        # If the value is an array, we 'demultiplex' into several
         | 
| 49 | 
            +
                        if value.is_a? Array
         | 
| 50 | 
            +
                          internal_pairs = value.map do |simple_value|
         | 
| 51 | 
            +
                            "#{CGI.escape key.to_s}=#{CGI.escape simple_value.to_s}"
         | 
| 52 | 
            +
                          end
         | 
| 53 | 
            +
                          internal_pairs
         | 
| 54 | 
            +
                        else
         | 
| 55 | 
            +
                          "#{CGI.escape key.to_s}=#{CGI.escape value.to_s}"
         | 
| 56 | 
            +
                        end
         | 
| 57 | 
            +
                      }
         | 
| 58 | 
            +
                      pairs.flatten!
         | 
| 59 | 
            +
                      "?#{pairs.join '&'}"
         | 
| 60 | 
            +
                    end
         | 
| 61 | 
            +
             | 
| 38 62 | 
             
                    def request(method, relative_uri, options = {})
         | 
| 39 63 | 
             
                      head = headers.dup
         | 
| 40 64 | 
             
                      head.update options[:head] if options[:head]
         | 
| @@ -45,29 +69,7 @@ module KillBillClient | |
| 45 69 | 
             
                      # See https://github.com/killbill/killbill/issues/221#issuecomment-151980263
         | 
| 46 70 | 
             
                      base_path = uri.request_uri == '/' ? '' : uri.request_uri
         | 
| 47 71 | 
             
                      uri += (base_path + URI.escape(relative_uri))
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                      # Plugin properties are passed in the options but we want to send them as query parameters,
         | 
| 50 | 
            -
                      # so remove with from global hash and insert them under :params
         | 
| 51 | 
            -
                      plugin_properties = options.delete :pluginProperty
         | 
| 52 | 
            -
                      if plugin_properties && plugin_properties.size > 0
         | 
| 53 | 
            -
                        options[:params][:pluginProperty] = plugin_properties.map { |p| "#{p.key}=#{p.value}" }
         | 
| 54 | 
            -
                      end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      if options[:params] && !options[:params].empty?
         | 
| 57 | 
            -
                        pairs = options[:params].map { |key, value|
         | 
| 58 | 
            -
                          # If the value is an array, we 'demultiplex' into several
         | 
| 59 | 
            -
                          if value.is_a? Array
         | 
| 60 | 
            -
                            internal_pairs = value.map do |simple_value|
         | 
| 61 | 
            -
                              "#{CGI.escape key.to_s}=#{CGI.escape simple_value.to_s}"
         | 
| 62 | 
            -
                            end
         | 
| 63 | 
            -
                            internal_pairs
         | 
| 64 | 
            -
                          else
         | 
| 65 | 
            -
                            "#{CGI.escape key.to_s}=#{CGI.escape value.to_s}"
         | 
| 66 | 
            -
                          end
         | 
| 67 | 
            -
                        }
         | 
| 68 | 
            -
                        pairs.flatten!
         | 
| 69 | 
            -
                        uri += "?#{pairs.join '&'}"
         | 
| 70 | 
            -
                      end
         | 
| 72 | 
            +
                      uri += encode_params(options).to_s
         | 
| 71 73 | 
             
                      request = METHODS[method].new uri.request_uri, head
         | 
| 72 74 |  | 
| 73 75 | 
             
                      # Configure multi-tenancy headers, if enabled
         | 
| @@ -2,27 +2,27 @@ module KillBillClient | |
| 2 2 | 
             
              module Model
         | 
| 3 3 | 
             
                class ComboTransaction < ComboPaymentTransactionAttributes
         | 
| 4 4 |  | 
| 5 | 
            -
                  def auth(user = nil, reason = nil, comment = nil, options = {})
         | 
| 5 | 
            +
                  def auth(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
         | 
| 6 6 | 
             
                    @transaction.transaction_type = 'AUTHORIZE'
         | 
| 7 7 |  | 
| 8 | 
            -
                    combo_payment(user, reason, comment, options)
         | 
| 8 | 
            +
                    combo_payment(user, reason, comment, options, refresh_options)
         | 
| 9 9 | 
             
                  end
         | 
| 10 10 |  | 
| 11 | 
            -
                  def purchase(user = nil, reason = nil, comment = nil, options = {})
         | 
| 11 | 
            +
                  def purchase(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
         | 
| 12 12 | 
             
                    @transaction.transaction_type = 'PURCHASE'
         | 
| 13 13 |  | 
| 14 | 
            -
                    combo_payment(user, reason, comment, options)
         | 
| 14 | 
            +
                    combo_payment(user, reason, comment, options, refresh_options)
         | 
| 15 15 | 
             
                  end
         | 
| 16 16 |  | 
| 17 | 
            -
                  def credit(user = nil, reason = nil, comment = nil, options = {})
         | 
| 17 | 
            +
                  def credit(user = nil, reason = nil, comment = nil, options = {}, refresh_options = nil)
         | 
| 18 18 | 
             
                    @transaction.transaction_type = 'CREDIT'
         | 
| 19 19 |  | 
| 20 | 
            -
                    combo_payment(user, reason, comment, options)
         | 
| 20 | 
            +
                    combo_payment(user, reason, comment, options, refresh_options)
         | 
| 21 21 | 
             
                  end
         | 
| 22 22 |  | 
| 23 23 | 
             
                  private
         | 
| 24 24 |  | 
| 25 | 
            -
                  def combo_payment(user, reason, comment, options)
         | 
| 25 | 
            +
                  def combo_payment(user, reason, comment, options, refresh_options = nil)
         | 
| 26 26 | 
             
                    query_map = {
         | 
| 27 27 | 
             
                    }
         | 
| 28 28 | 
             
                    if options.include? :controlPluginNames
         | 
| @@ -37,7 +37,7 @@ module KillBillClient | |
| 37 37 | 
             
                                                              :reason => reason,
         | 
| 38 38 | 
             
                                                              :comment => comment,
         | 
| 39 39 | 
             
                                                          }.merge(options)
         | 
| 40 | 
            -
                    created_transaction.refresh(options, Payment)
         | 
| 40 | 
            +
                    created_transaction.refresh(refresh_options || options, Payment)
         | 
| 41 41 | 
             
                  end
         | 
| 42 42 | 
             
                end
         | 
| 43 43 | 
             
              end
         | 
| @@ -26,7 +26,9 @@ module KillBillClient | |
| 26 26 | 
             
                  class << self
         | 
| 27 27 |  | 
| 28 28 | 
             
                    def require_multi_tenant_options!(options, msg)
         | 
| 29 | 
            -
                       | 
| 29 | 
            +
                      api_key = options[:api_key] || KillBillClient.api_key
         | 
| 30 | 
            +
                      api_secret = options[:api_secret] || KillBillClient.api_secret
         | 
| 31 | 
            +
                      if api_key.nil? || api_secret.nil?
         | 
| 30 32 | 
             
                        raise ArgumentError, msg
         | 
| 31 33 | 
             
                      end
         | 
| 32 34 | 
             
                    end
         | 
| @@ -2,6 +2,7 @@ module KillBillClient | |
| 2 2 | 
             
              module Model
         | 
| 3 3 | 
             
                class Transaction < PaymentTransactionAttributes
         | 
| 4 4 |  | 
| 5 | 
            +
                  has_many :properties, KillBillClient::Model::PluginPropertyAttributes
         | 
| 5 6 | 
             
                  has_many :audit_logs, KillBillClient::Model::AuditLog
         | 
| 6 7 |  | 
| 7 8 | 
             
                  def auth(account_id, payment_method_id = nil, user = nil, reason = nil, comment = nil, options = {})
         | 
| @@ -40,6 +41,10 @@ module KillBillClient | |
| 40 41 | 
             
                    create_initial_transaction("#{Account::KILLBILL_API_ACCOUNTS_PREFIX}/payments", query_map, payment_method_id, user, reason, comment, options)
         | 
| 41 42 | 
             
                  end
         | 
| 42 43 |  | 
| 44 | 
            +
                  def complete(user = nil, reason = nil, comment = nil, options = {})
         | 
| 45 | 
            +
                    complete_initial_transaction(user, reason, comment, options)
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
             | 
| 43 48 | 
             
                  def complete_auth(user = nil, reason = nil, comment = nil, options = {})
         | 
| 44 49 | 
             
                    @transaction_type = 'AUTHORIZE'
         | 
| 45 50 | 
             
                    complete_initial_transaction(user, reason, comment, options)
         | 
| @@ -4,15 +4,15 @@ describe KillBillClient do | |
| 4 4 |  | 
| 5 5 | 
             
              it 'should be able to parse a url with http' do
         | 
| 6 6 | 
             
                KillBillClient.url = "http://example.com:8080"
         | 
| 7 | 
            -
                KillBillClient::API.base_uri.scheme. | 
| 8 | 
            -
                KillBillClient::API.base_uri.host. | 
| 9 | 
            -
                KillBillClient::API.base_uri.port. | 
| 7 | 
            +
                expect(KillBillClient::API.base_uri.scheme).to eq("http")
         | 
| 8 | 
            +
                expect(KillBillClient::API.base_uri.host).to eq("example.com")
         | 
| 9 | 
            +
                expect(KillBillClient::API.base_uri.port).to eq(8080)
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              it 'should be able to parse a url without http' do
         | 
| 13 13 | 
             
                KillBillClient.url = "example.com:8080"
         | 
| 14 | 
            -
                KillBillClient::API.base_uri.scheme. | 
| 15 | 
            -
                KillBillClient::API.base_uri.host. | 
| 16 | 
            -
                KillBillClient::API.base_uri.port. | 
| 14 | 
            +
                expect(KillBillClient::API.base_uri.scheme).to eq("http")
         | 
| 15 | 
            +
                expect(KillBillClient::API.base_uri.host).to eq("example.com")
         | 
| 16 | 
            +
                expect(KillBillClient::API.base_uri.port).to eq(8080)
         | 
| 17 17 | 
             
              end
         | 
| 18 18 | 
             
            end
         | 
| @@ -0,0 +1,53 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe KillBillClient::API do
         | 
| 4 | 
            +
              let(:expected_query_params) {
         | 
| 5 | 
            +
                [
         | 
| 6 | 
            +
                    'controlPluginName=killbill-example-plugin',
         | 
| 7 | 
            +
                    'pluginProperty=contractId%3Dtest'
         | 
| 8 | 
            +
                ]
         | 
| 9 | 
            +
              }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              it 'should send double-encoded uri' do
         | 
| 12 | 
            +
                contract_property = KillBillClient::Model::PluginPropertyAttributes.new
         | 
| 13 | 
            +
                contract_property.key = 'contractId'
         | 
| 14 | 
            +
                contract_property.value = 'test'
         | 
| 15 | 
            +
                info_property = KillBillClient::Model::PluginPropertyAttributes.new
         | 
| 16 | 
            +
                info_property.key = 'details'
         | 
| 17 | 
            +
                info_property_hash = {
         | 
| 18 | 
            +
                    'eventType' => 'voidEvent',
         | 
| 19 | 
            +
                    'transactionType' => 'void'
         | 
| 20 | 
            +
                }
         | 
| 21 | 
            +
                info_property.value = info_property_hash.to_json
         | 
| 22 | 
            +
                plugin_properties = [contract_property, info_property]
         | 
| 23 | 
            +
                options = {
         | 
| 24 | 
            +
                    :params => {:controlPluginName => 'killbill-example-plugin'},
         | 
| 25 | 
            +
                    :pluginProperty => plugin_properties
         | 
| 26 | 
            +
                }
         | 
| 27 | 
            +
                http_adapter = DummyForHTTPAdapter.new
         | 
| 28 | 
            +
                query_string = http_adapter.send(:encode_params, options)
         | 
| 29 | 
            +
                expect(query_string.chars.first).to eq('?')
         | 
| 30 | 
            +
                query_params = query_string[1..-1].split('&').sort
         | 
| 31 | 
            +
                expect(query_params.size).to eq(3)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                # check the first two query strings
         | 
| 34 | 
            +
                expect(query_params[0..1]).to eq(expected_query_params)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                # decode info_property to check if it is double encoded
         | 
| 37 | 
            +
                info_property_query = CGI.parse(query_params[2])
         | 
| 38 | 
            +
                expect(info_property_query.size).to eq(1)
         | 
| 39 | 
            +
                expect(info_property_query.keys.first).to eq('pluginProperty')
         | 
| 40 | 
            +
                expect(info_property_query['pluginProperty'].size).to eq(1)
         | 
| 41 | 
            +
                output_info_property = info_property_query['pluginProperty'].first.split('=')
         | 
| 42 | 
            +
                expect(output_info_property.size).to eq(2)
         | 
| 43 | 
            +
                expect(output_info_property[0]).to eq(info_property.key)
         | 
| 44 | 
            +
                # should match if we decode it
         | 
| 45 | 
            +
                expect(JSON.parse CGI.unescape(output_info_property[1])).to eq(info_property_hash)
         | 
| 46 | 
            +
                # also ensure the undecoded value is different so that it was indeed encocded twice
         | 
| 47 | 
            +
                expect(output_info_property[1]).not_to eq(CGI.unescape output_info_property[1])
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
            end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            class DummyForHTTPAdapter
         | 
| 52 | 
            +
              include KillBillClient::API::Net::HTTPAdapter
         | 
| 53 | 
            +
            end
         | 
| @@ -2,32 +2,32 @@ require 'spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            describe KillBillClient::Model::Resource do
         | 
| 4 4 | 
             
              class_var_name = '@@attribute_names'
         | 
| 5 | 
            -
             | 
| 5 | 
            +
             | 
| 6 6 | 
             
              it 'should test has_one property' do
         | 
| 7 7 | 
             
                #test account_timeline has one account
         | 
| 8 8 | 
             
                #has_one :account, KillBillClient::Model::Account
         | 
| 9 9 | 
             
                #expected "KillBillClient::Model::AccountTimeline"=>{:account=>{:type=>KillBillClient::Model::Account, :cardinality=>:one}, :payments=>{:type=>KillBillClient::Model::Payment, :cardinality=>:many}, :bundles=>{:type=>KillBillClient::Model::Bundle, :cardinality=>:many}, :invoices=>{:type=>KillBillClient::Model::Invoice, :cardinality=>:many}}
         | 
| 10 10 | 
             
                test_var = KillBillClient::Model::AccountTimeline.class_variable_defined? class_var_name
         | 
| 11 | 
            -
                test_var. | 
| 11 | 
            +
                expect(test_var).not_to be(false)
         | 
| 12 12 |  | 
| 13 13 | 
             
                var = KillBillClient::Model::AccountTimeline.send(:class_variable_get, class_var_name)
         | 
| 14 | 
            -
                var.size. | 
| 15 | 
            -
                var. | 
| 16 | 
            -
                var["KillBillClient::Model::AccountTimeline"]. | 
| 14 | 
            +
                expect(var.size).to be > 0
         | 
| 15 | 
            +
                expect(var).to have_key "KillBillClient::Model::AccountTimeline"
         | 
| 16 | 
            +
                expect(var["KillBillClient::Model::AccountTimeline"]).to have_key :account
         | 
| 17 17 |  | 
| 18 18 | 
             
                attr = var["KillBillClient::Model::AccountTimeline"][:account]
         | 
| 19 19 |  | 
| 20 | 
            -
                attr. | 
| 21 | 
            -
                attr. | 
| 20 | 
            +
                expect(attr).to have_key :type
         | 
| 21 | 
            +
                expect(attr).to have_key :cardinality
         | 
| 22 22 |  | 
| 23 | 
            -
                attr[:type]. | 
| 24 | 
            -
                attr[:cardinality]. | 
| 23 | 
            +
                expect(attr[:type]).to eq(KillBillClient::Model::Account)
         | 
| 24 | 
            +
                expect(attr[:cardinality]).to eq(:one) #has one
         | 
| 25 25 |  | 
| 26 26 | 
             
                #should also be accessible by attr_accessors
         | 
| 27 27 |  | 
| 28 28 | 
             
                methods = KillBillClient::Model::AccountTimeline.instance_methods
         | 
| 29 | 
            -
                methods.map(&:to_sym). | 
| 30 | 
            -
                methods.map(&:to_sym). | 
| 29 | 
            +
                expect(methods.map(&:to_sym)).to include :account     # attr_reader
         | 
| 30 | 
            +
                expect(methods.map(&:to_sym)).to include :account= #attr_writer
         | 
| 31 31 | 
             
              end
         | 
| 32 32 |  | 
| 33 33 | 
             
              it 'should test has_many property' do
         | 
| @@ -36,39 +36,39 @@ describe KillBillClient::Model::Resource do | |
| 36 36 | 
             
                #expected {"KillBillClient::Model::SubscriptionEvent"=>{:audit_logs=>{:type=>KillBillClient::Model::AuditLog, :cardinality=>:many}}}
         | 
| 37 37 |  | 
| 38 38 | 
             
                test_var = KillBillClient::Model::EventSubscription.class_variable_defined? class_var_name
         | 
| 39 | 
            -
                test_var. | 
| 39 | 
            +
                expect(test_var).to be(true)
         | 
| 40 40 |  | 
| 41 41 | 
             
                var = KillBillClient::Model::EventSubscription.send(:class_variable_get, class_var_name)
         | 
| 42 | 
            -
                var.size. | 
| 43 | 
            -
                var. | 
| 44 | 
            -
                var["KillBillClient::Model::Subscription"]. | 
| 42 | 
            +
                expect(var.size).to be > 0
         | 
| 43 | 
            +
                expect(var).to have_key "KillBillClient::Model::Subscription"
         | 
| 44 | 
            +
                expect(var["KillBillClient::Model::Subscription"]).to have_key :events
         | 
| 45 45 |  | 
| 46 46 | 
             
                attr = var["KillBillClient::Model::Subscription"][:events]
         | 
| 47 47 |  | 
| 48 | 
            -
                attr. | 
| 49 | 
            -
                attr. | 
| 48 | 
            +
                expect(attr).to have_key :type
         | 
| 49 | 
            +
                expect(attr).to have_key :cardinality
         | 
| 50 50 |  | 
| 51 | 
            -
                attr[:type]. | 
| 52 | 
            -
                attr[:cardinality]. | 
| 51 | 
            +
                expect(attr[:type]).to eq(KillBillClient::Model::EventSubscription)
         | 
| 52 | 
            +
                expect(attr[:cardinality]).to eq(:many) #has many
         | 
| 53 53 |  | 
| 54 54 | 
             
                #should also be accessible by attr_accessors
         | 
| 55 55 |  | 
| 56 56 | 
             
                methods = KillBillClient::Model::EventSubscription.instance_methods
         | 
| 57 | 
            -
                methods.map(&:to_sym). | 
| 58 | 
            -
                methods.map(&:to_sym). | 
| 57 | 
            +
                expect(methods.map(&:to_sym)).to include :audit_logs     # attr_reader
         | 
| 58 | 
            +
                expect(methods.map(&:to_sym)).to include :audit_logs= #attr_writer
         | 
| 59 59 | 
             
              end
         | 
| 60 60 |  | 
| 61 61 | 
             
              it 'should create alias attr accessors' do
         | 
| 62 62 | 
             
                KillBillClient::Model::EventSubscription.create_alias :alias_date, :requested_dt
         | 
| 63 63 |  | 
| 64 64 | 
             
                methods = KillBillClient::Model::EventSubscription.instance_methods
         | 
| 65 | 
            -
                methods.map(&:to_sym). | 
| 66 | 
            -
                methods.map(&:to_sym). | 
| 65 | 
            +
                expect(methods.map(&:to_sym)).to include :alias_date
         | 
| 66 | 
            +
                expect(methods.map(&:to_sym)).to include :alias_date=
         | 
| 67 67 |  | 
| 68 68 | 
             
                evt = KillBillClient::Model::EventSubscription.new
         | 
| 69 69 | 
             
                evt.alias_date = "devaroop"
         | 
| 70 | 
            -
                evt.requested_dt. | 
| 71 | 
            -
                evt.alias_date. | 
| 70 | 
            +
                expect(evt.requested_dt).to eq("devaroop")
         | 
| 71 | 
            +
                expect(evt.alias_date).to eq("devaroop")
         | 
| 72 72 | 
             
              end
         | 
| 73 73 | 
             
            end
         | 
| 74 | 
            -
             | 
| 74 | 
            +
             | 
| @@ -3,8 +3,8 @@ require 'spec_helper' | |
| 3 3 | 
             
            describe KillBillClient::API do
         | 
| 4 4 | 
             
              it 'should get all tag definitions', :integration => true  do
         | 
| 5 5 | 
             
                response = KillBillClient::API.get '/1.0/kb/tagDefinitions'
         | 
| 6 | 
            -
                response.code.to_i. | 
| 6 | 
            +
                expect(response.code.to_i).to eq(200)
         | 
| 7 7 | 
             
                tag_definitions = KillBillClient::Model::Resource.from_response KillBillClient::Model::TagDefinition, response
         | 
| 8 | 
            -
                tag_definitions.size. | 
| 8 | 
            +
                expect(tag_definitions.size).to be > 1
         | 
| 9 9 | 
             
              end
         | 
| 10 10 | 
             
            end
         | 
| @@ -22,73 +22,73 @@ describe KillBillClient::Model do | |
| 22 22 | 
             
                account.country = 'LalaLand'
         | 
| 23 23 | 
             
                account.locale = 'FR_fr'
         | 
| 24 24 | 
             
                account.is_notified_for_invoices = false
         | 
| 25 | 
            -
                account.account_id. | 
| 25 | 
            +
                expect(account.account_id).to be_nil
         | 
| 26 26 |  | 
| 27 27 | 
             
                # Create and verify the account
         | 
| 28 28 | 
             
                account = account.create('KillBill Spec test')
         | 
| 29 | 
            -
                account.external_key. | 
| 30 | 
            -
                account.account_id. | 
| 29 | 
            +
                expect(account.external_key).to eq(external_key)
         | 
| 30 | 
            +
                expect(account.account_id).not_to be_nil
         | 
| 31 31 | 
             
                account_id = account.account_id
         | 
| 32 32 |  | 
| 33 33 | 
             
                # Try to retrieve it
         | 
| 34 34 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id
         | 
| 35 | 
            -
                account.external_key. | 
| 36 | 
            -
                account.payment_method_id. | 
| 35 | 
            +
                expect(account.external_key).to eq(external_key)
         | 
| 36 | 
            +
                expect(account.payment_method_id).to be_nil
         | 
| 37 37 |  | 
| 38 38 | 
             
                # Try to retrieve it
         | 
| 39 39 | 
             
                account = KillBillClient::Model::Account.find_by_external_key external_key
         | 
| 40 | 
            -
                account.account_id. | 
| 41 | 
            -
                account.payment_method_id. | 
| 40 | 
            +
                expect(account.account_id).to eq(account_id)
         | 
| 41 | 
            +
                expect(account.payment_method_id).to be_nil
         | 
| 42 42 |  | 
| 43 43 | 
             
                # Try to retrieve it (bis repetita placent)
         | 
| 44 44 | 
             
                accounts = KillBillClient::Model::Account.find_in_batches(0, search_limit)
         | 
| 45 45 | 
             
                # Can't test equality if the remote server has extra data
         | 
| 46 | 
            -
                accounts.pagination_total_nb_records. | 
| 47 | 
            -
                accounts.pagination_max_nb_records. | 
| 48 | 
            -
                accounts.size. | 
| 46 | 
            +
                expect(accounts.pagination_total_nb_records).to be >= 1
         | 
| 47 | 
            +
                expect(accounts.pagination_max_nb_records).to be >= 1
         | 
| 48 | 
            +
                expect(accounts.size).to be >= 1
         | 
| 49 49 | 
             
                # If the remote server has lots of data, we need to page through the results (good test!)
         | 
| 50 50 | 
             
                found = nil
         | 
| 51 51 | 
             
                accounts.each_in_batches do |account|
         | 
| 52 52 | 
             
                  found = account if account.external_key == external_key
         | 
| 53 53 | 
             
                  break unless found.nil?
         | 
| 54 54 | 
             
                end
         | 
| 55 | 
            -
                found. | 
| 55 | 
            +
                expect(found).not_to be_nil
         | 
| 56 56 |  | 
| 57 57 | 
             
                # Try to retrieve it via the search API
         | 
| 58 58 | 
             
                accounts = KillBillClient::Model::Account.find_in_batches_by_search_key(account.name, 0, search_limit)
         | 
| 59 59 | 
             
                # Can't test equality if the remote server has extra data
         | 
| 60 | 
            -
                accounts.pagination_total_nb_records. | 
| 61 | 
            -
                accounts.pagination_max_nb_records. | 
| 62 | 
            -
                accounts.size. | 
| 60 | 
            +
                expect(accounts.pagination_total_nb_records).to be >= 1
         | 
| 61 | 
            +
                expect(accounts.pagination_max_nb_records).to be >= 1
         | 
| 62 | 
            +
                expect(accounts.size).to be >= 1
         | 
| 63 63 | 
             
                # If the remote server has lots of data, we need to page through the results (good test!)
         | 
| 64 64 | 
             
                found = nil
         | 
| 65 65 | 
             
                accounts.each_in_batches do |account|
         | 
| 66 66 | 
             
                  found = account if account.external_key == external_key
         | 
| 67 67 | 
             
                  break unless found.nil?
         | 
| 68 68 | 
             
                end
         | 
| 69 | 
            -
                found. | 
| 69 | 
            +
                expect(found).not_to be_nil
         | 
| 70 70 |  | 
| 71 71 | 
             
                # Add/Remove a tag
         | 
| 72 | 
            -
                account.tags.size. | 
| 72 | 
            +
                expect(account.tags.size).to eq(0)
         | 
| 73 73 | 
             
                account.add_tag('TEST', 'KillBill Spec test')
         | 
| 74 74 | 
             
                tags = account.tags
         | 
| 75 | 
            -
                tags.size. | 
| 76 | 
            -
                tags.first.tag_definition_name. | 
| 75 | 
            +
                expect(tags.size).to eq(1)
         | 
| 76 | 
            +
                expect(tags.first.tag_definition_name).to eq('TEST')
         | 
| 77 77 | 
             
                account.remove_tag('TEST', 'KillBill Spec test')
         | 
| 78 | 
            -
                account.tags.size. | 
| 78 | 
            +
                expect(account.tags.size).to eq(0)
         | 
| 79 79 |  | 
| 80 80 | 
             
                # Add/Remove a custom field
         | 
| 81 | 
            -
                account.custom_fields.size. | 
| 81 | 
            +
                expect(account.custom_fields.size).to eq(0)
         | 
| 82 82 | 
             
                custom_field = KillBillClient::Model::CustomField.new
         | 
| 83 83 | 
             
                custom_field.name = Time.now.to_i.to_s
         | 
| 84 84 | 
             
                custom_field.value = Time.now.to_i.to_s
         | 
| 85 85 | 
             
                account.add_custom_field(custom_field, 'KillBill Spec test')
         | 
| 86 86 | 
             
                custom_fields = account.custom_fields
         | 
| 87 | 
            -
                custom_fields.size. | 
| 88 | 
            -
                custom_fields.first.name. | 
| 89 | 
            -
                custom_fields.first.value. | 
| 87 | 
            +
                expect(custom_fields.size).to eq(1)
         | 
| 88 | 
            +
                expect(custom_fields.first.name).to eq(custom_field.name)
         | 
| 89 | 
            +
                expect(custom_fields.first.value).to eq(custom_field.value)
         | 
| 90 90 | 
             
                account.remove_custom_field(custom_fields.first.custom_field_id, 'KillBill Spec test')
         | 
| 91 | 
            -
                account.custom_fields.size. | 
| 91 | 
            +
                expect(account.custom_fields.size).to eq(0)
         | 
| 92 92 |  | 
| 93 93 | 
             
                # Add a payment method
         | 
| 94 94 | 
             
                pm = KillBillClient::Model::PaymentMethod.new
         | 
| @@ -96,38 +96,38 @@ describe KillBillClient::Model do | |
| 96 96 | 
             
                pm.is_default = true
         | 
| 97 97 | 
             
                pm.plugin_name = KillBillClient::Model::PaymentMethod::EXTERNAL_PAYMENT
         | 
| 98 98 | 
             
                pm.plugin_info = {}
         | 
| 99 | 
            -
                pm.payment_method_id. | 
| 99 | 
            +
                expect(pm.payment_method_id).to be_nil
         | 
| 100 100 |  | 
| 101 101 | 
             
                pm = pm.create(true, 'KillBill Spec test')
         | 
| 102 | 
            -
                pm.payment_method_id. | 
| 102 | 
            +
                expect(pm.payment_method_id).not_to be_nil
         | 
| 103 103 |  | 
| 104 104 | 
             
                # Try to retrieve it
         | 
| 105 105 | 
             
                pm = KillBillClient::Model::PaymentMethod.find_by_id pm.payment_method_id, true
         | 
| 106 | 
            -
                pm.account_id. | 
| 106 | 
            +
                expect(pm.account_id).to eq(account.account_id)
         | 
| 107 107 |  | 
| 108 108 | 
             
                # Try to retrieve it (bis repetita placent)
         | 
| 109 109 | 
             
                pms = KillBillClient::Model::PaymentMethod.find_in_batches(0, search_limit)
         | 
| 110 110 | 
             
                # Can't test equality if the remote server has extra data
         | 
| 111 | 
            -
                pms.pagination_total_nb_records. | 
| 112 | 
            -
                pms.pagination_max_nb_records. | 
| 113 | 
            -
                pms.size. | 
| 111 | 
            +
                expect(pms.pagination_total_nb_records).to be >= 1
         | 
| 112 | 
            +
                expect(pms.pagination_max_nb_records).to be >= 1
         | 
| 113 | 
            +
                expect(pms.size).to be >= 1
         | 
| 114 114 | 
             
                # If the remote server has lots of data, we need to page through the results (good test!)
         | 
| 115 115 | 
             
                found = nil
         | 
| 116 116 | 
             
                pms.each_in_batches do |payment_method|
         | 
| 117 117 | 
             
                  found = payment_method if payment_method.payment_method_id == pm.payment_method_id
         | 
| 118 118 | 
             
                  break unless found.nil?
         | 
| 119 119 | 
             
                end
         | 
| 120 | 
            -
                found. | 
| 120 | 
            +
                expect(found).not_to be_nil
         | 
| 121 121 |  | 
| 122 122 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id
         | 
| 123 | 
            -
                account.payment_method_id. | 
| 123 | 
            +
                expect(account.payment_method_id).to eq(pm.payment_method_id)
         | 
| 124 124 |  | 
| 125 125 | 
             
                pms = KillBillClient::Model::PaymentMethod.find_all_by_account_id account.account_id
         | 
| 126 | 
            -
                pms.size. | 
| 127 | 
            -
                pms[0].payment_method_id. | 
| 126 | 
            +
                expect(pms.size).to eq(1)
         | 
| 127 | 
            +
                expect(pms[0].payment_method_id).to eq(pm.payment_method_id)
         | 
| 128 128 |  | 
| 129 129 | 
             
                # Check there is no payment associated with that account
         | 
| 130 | 
            -
                account.payments.size. | 
| 130 | 
            +
                expect(account.payments.size).to eq(0)
         | 
| 131 131 |  | 
| 132 132 | 
             
                # Add an external charge
         | 
| 133 133 | 
             
                invoice_item = KillBillClient::Model::InvoiceItem.new
         | 
| @@ -138,27 +138,27 @@ describe KillBillClient::Model do | |
| 138 138 | 
             
                invoice_item = invoice_item.create 'KillBill Spec test'
         | 
| 139 139 | 
             
                invoice = KillBillClient::Model::Invoice.find_by_id_or_number invoice_item.invoice_id
         | 
| 140 140 |  | 
| 141 | 
            -
                invoice.balance. | 
| 141 | 
            +
                expect(invoice.balance).to eq(123.98)
         | 
| 142 142 |  | 
| 143 143 | 
             
                # Check the account balance
         | 
| 144 144 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id, true
         | 
| 145 | 
            -
                account.account_balance. | 
| 145 | 
            +
                expect(account.account_balance).to eq(123.98)
         | 
| 146 146 |  | 
| 147 147 | 
             
                pm.destroy(true, 'KillBill Spec test')
         | 
| 148 148 |  | 
| 149 149 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id
         | 
| 150 | 
            -
                account.payment_method_id. | 
| 150 | 
            +
                expect(account.payment_method_id).to be_nil
         | 
| 151 151 |  | 
| 152 152 | 
             
                # Get its timeline
         | 
| 153 153 | 
             
                timeline = KillBillClient::Model::AccountTimeline.find_by_account_id account.account_id
         | 
| 154 154 |  | 
| 155 | 
            -
                timeline.account.external_key. | 
| 156 | 
            -
                timeline.account.account_id. | 
| 155 | 
            +
                expect(timeline.account.external_key).to eq(external_key)
         | 
| 156 | 
            +
                expect(timeline.account.account_id).not_to be_nil
         | 
| 157 157 |  | 
| 158 | 
            -
                timeline.invoices. | 
| 159 | 
            -
                timeline.invoices. | 
| 160 | 
            -
                timeline.payments. | 
| 161 | 
            -
                timeline.bundles. | 
| 158 | 
            +
                expect(timeline.invoices).to be_a_kind_of Array
         | 
| 159 | 
            +
                expect(timeline.invoices).not_to be_empty
         | 
| 160 | 
            +
                expect(timeline.payments).to be_a_kind_of Array
         | 
| 161 | 
            +
                expect(timeline.bundles).to be_a_kind_of Array
         | 
| 162 162 |  | 
| 163 163 | 
             
                # Let's find the invoice by two methods
         | 
| 164 164 | 
             
                invoice = timeline.invoices.first
         | 
| @@ -168,8 +168,8 @@ describe KillBillClient::Model do | |
| 168 168 | 
             
                invoice_with_id = KillBillClient::Model::Invoice.find_by_id_or_number invoice_id
         | 
| 169 169 | 
             
                invoice_with_number = KillBillClient::Model::Invoice.find_by_id_or_number invoice_number
         | 
| 170 170 |  | 
| 171 | 
            -
                invoice_with_id.invoice_id. | 
| 172 | 
            -
                invoice_with_id.invoice_number. | 
| 171 | 
            +
                expect(invoice_with_id.invoice_id).to eq(invoice_with_number.invoice_id)
         | 
| 172 | 
            +
                expect(invoice_with_id.invoice_number).to eq(invoice_with_number.invoice_number)
         | 
| 173 173 |  | 
| 174 174 | 
             
                # Create an external payment for each unpaid invoice
         | 
| 175 175 | 
             
                invoice_payment = KillBillClient::Model::InvoicePayment.new
         | 
| @@ -179,43 +179,43 @@ describe KillBillClient::Model do | |
| 179 179 | 
             
                # Try to retrieve it
         | 
| 180 180 | 
             
                payments = KillBillClient::Model::Payment.find_in_batches(0, search_limit)
         | 
| 181 181 | 
             
                # Can't test equality if the remote server has extra data
         | 
| 182 | 
            -
                payments.pagination_total_nb_records. | 
| 183 | 
            -
                payments.pagination_max_nb_records. | 
| 184 | 
            -
                payments.size. | 
| 182 | 
            +
                expect(payments.pagination_total_nb_records).to be >= 1
         | 
| 183 | 
            +
                expect(payments.pagination_max_nb_records).to be >= 1
         | 
| 184 | 
            +
                expect(payments.size).to be >= 1
         | 
| 185 185 | 
             
                # If the remote server has lots of data, we need to page through the results (good test!)
         | 
| 186 186 | 
             
                found = nil
         | 
| 187 187 | 
             
                payments.each_in_batches do |p|
         | 
| 188 188 | 
             
                  found = p if p.account_id == account.account_id
         | 
| 189 189 | 
             
                  break unless found.nil?
         | 
| 190 190 | 
             
                end
         | 
| 191 | 
            -
                found. | 
| 191 | 
            +
                expect(found).not_to be_nil
         | 
| 192 192 |  | 
| 193 193 | 
             
                # Try to retrieve it (bis repetita placent)
         | 
| 194 194 | 
             
                invoice_payment = KillBillClient::Model::InvoicePayment.find_by_id found.payment_id
         | 
| 195 | 
            -
                invoice_payment.account_id. | 
| 195 | 
            +
                expect(invoice_payment.account_id).to eq(account.account_id)
         | 
| 196 196 |  | 
| 197 197 | 
             
                # Try to retrieve it
         | 
| 198 198 | 
             
                invoice = KillBillClient::Model::Invoice.new
         | 
| 199 199 | 
             
                invoice.invoice_id = invoice_payment.target_invoice_id
         | 
| 200 200 | 
             
                payments = invoice.payments
         | 
| 201 | 
            -
                payments.size. | 
| 202 | 
            -
                payments.first.account_id. | 
| 201 | 
            +
                expect(payments.size).to eq(1)
         | 
| 202 | 
            +
                expect(payments.first.account_id).to eq(account.account_id)
         | 
| 203 203 |  | 
| 204 204 | 
             
                # Check the account balance
         | 
| 205 205 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id, true
         | 
| 206 | 
            -
                account.account_balance. | 
| 206 | 
            +
                expect(account.account_balance).to eq(0)
         | 
| 207 207 |  | 
| 208 208 | 
             
                # Verify the timeline
         | 
| 209 209 | 
             
                timeline = KillBillClient::Model::AccountTimeline.find_by_account_id account.account_id
         | 
| 210 | 
            -
                timeline.payments. | 
| 210 | 
            +
                expect(timeline.payments).not_to be_empty
         | 
| 211 211 | 
             
                invoice_payment = timeline.payments.first
         | 
| 212 | 
            -
                timeline.payments.first.transactions.size. | 
| 213 | 
            -
                timeline.payments.first.transactions.first.transaction_type. | 
| 214 | 
            -
                invoice_payment.auth_amount. | 
| 215 | 
            -
                invoice_payment.captured_amount. | 
| 216 | 
            -
                invoice_payment.purchased_amount. | 
| 217 | 
            -
                invoice_payment.refunded_amount. | 
| 218 | 
            -
                invoice_payment.credited_amount. | 
| 212 | 
            +
                expect(timeline.payments.first.transactions.size).to eq(1)
         | 
| 213 | 
            +
                expect(timeline.payments.first.transactions.first.transaction_type).to eq('PURCHASE')
         | 
| 214 | 
            +
                expect(invoice_payment.auth_amount).to eq(0)
         | 
| 215 | 
            +
                expect(invoice_payment.captured_amount).to eq(0)
         | 
| 216 | 
            +
                expect(invoice_payment.purchased_amount).to eq(invoice_payment.purchased_amount)
         | 
| 217 | 
            +
                expect(invoice_payment.refunded_amount).to eq(0)
         | 
| 218 | 
            +
                expect(invoice_payment.credited_amount).to eq(0)
         | 
| 219 219 |  | 
| 220 220 | 
             
                # Refund the payment (with item adjustment)
         | 
| 221 221 | 
             
                invoice_item = KillBillClient::Model::Invoice.find_by_id_or_number(invoice_number, true).items.first
         | 
| @@ -226,13 +226,13 @@ describe KillBillClient::Model do | |
| 226 226 |  | 
| 227 227 | 
             
                # Verify the refund
         | 
| 228 228 | 
             
                timeline = KillBillClient::Model::AccountTimeline.find_by_account_id account.account_id
         | 
| 229 | 
            -
                timeline.payments. | 
| 230 | 
            -
                timeline.payments.size. | 
| 231 | 
            -
                timeline.payments.first.transactions.size. | 
| 232 | 
            -
                timeline.payments.first.transactions.first.transaction_type. | 
| 229 | 
            +
                expect(timeline.payments).not_to be_empty
         | 
| 230 | 
            +
                expect(timeline.payments.size).to eq(1)
         | 
| 231 | 
            +
                expect(timeline.payments.first.transactions.size).to eq(2)
         | 
| 232 | 
            +
                expect(timeline.payments.first.transactions.first.transaction_type).to eq('PURCHASE')
         | 
| 233 233 | 
             
                refund = timeline.payments.first.transactions.last
         | 
| 234 | 
            -
                refund.transaction_type. | 
| 235 | 
            -
                refund.amount. | 
| 234 | 
            +
                expect(refund.transaction_type).to eq('REFUND')
         | 
| 235 | 
            +
                expect(refund.amount).to eq(invoice_item.amount)
         | 
| 236 236 |  | 
| 237 237 | 
             
                # Create a credit for invoice
         | 
| 238 238 | 
             
                new_credit = KillBillClient::Model::Credit.new
         | 
| @@ -244,15 +244,15 @@ describe KillBillClient::Model do | |
| 244 244 |  | 
| 245 245 | 
             
                # Verify the invoice item of the credit
         | 
| 246 246 | 
             
                invoice = KillBillClient::Model::Invoice.find_by_id_or_number invoice_id
         | 
| 247 | 
            -
                invoice.items. | 
| 247 | 
            +
                expect(invoice.items).not_to be_empty
         | 
| 248 248 | 
             
                item = invoice.items.last
         | 
| 249 | 
            -
                item.invoice_id. | 
| 250 | 
            -
                item.amount. | 
| 251 | 
            -
                item.account_id. | 
| 249 | 
            +
                expect(item.invoice_id).to eq(invoice_id)
         | 
| 250 | 
            +
                expect(item.amount).to eq(10.1)
         | 
| 251 | 
            +
                expect(item.account_id).to eq(account.account_id)
         | 
| 252 252 |  | 
| 253 253 | 
             
                # Verify the credit
         | 
| 254 254 | 
             
                account = KillBillClient::Model::Account.find_by_id account.account_id, true
         | 
| 255 | 
            -
                account.account_balance. | 
| 255 | 
            +
                expect(account.account_balance).to eq(-10.1)
         | 
| 256 256 |  | 
| 257 257 | 
             
                # Create a subscription
         | 
| 258 258 | 
             
                sub = KillBillClient::Model::Subscription.new
         | 
| @@ -265,39 +265,39 @@ describe KillBillClient::Model do | |
| 265 265 | 
             
                sub = sub.create 'KillBill Spec test'
         | 
| 266 266 |  | 
| 267 267 | 
             
                # Verify we can retrieve it
         | 
| 268 | 
            -
                account.bundles.size. | 
| 269 | 
            -
                account.bundles[0].subscriptions.size. | 
| 270 | 
            -
                account.bundles[0].subscriptions[0].subscription_id. | 
| 268 | 
            +
                expect(account.bundles.size).to eq(1)
         | 
| 269 | 
            +
                expect(account.bundles[0].subscriptions.size).to eq(1)
         | 
| 270 | 
            +
                expect(account.bundles[0].subscriptions[0].subscription_id).to eq(sub.subscription_id)
         | 
| 271 271 | 
             
                bundle = account.bundles[0]
         | 
| 272 272 |  | 
| 273 273 | 
             
                # Verify we can retrieve it by id
         | 
| 274 | 
            -
                KillBillClient::Model::Bundle.find_by_id(bundle.bundle_id). | 
| 274 | 
            +
                expect(KillBillClient::Model::Bundle.find_by_id(bundle.bundle_id)).to eq(bundle)
         | 
| 275 275 |  | 
| 276 276 | 
             
                # Verify we can retrieve it by external key
         | 
| 277 | 
            -
                KillBillClient::Model::Bundle.find_by_external_key(bundle.external_key). | 
| 277 | 
            +
                expect(KillBillClient::Model::Bundle.find_by_external_key(bundle.external_key)).to eq(bundle)
         | 
| 278 278 |  | 
| 279 279 | 
             
                # Verify we can retrieve it by account id and external key
         | 
| 280 280 | 
             
                bundles = KillBillClient::Model::Bundle.find_all_by_account_id_and_external_key(account.account_id, bundle.external_key)
         | 
| 281 | 
            -
                bundles.size. | 
| 282 | 
            -
                bundles[0]. | 
| 281 | 
            +
                expect(bundles.size).to eq(1)
         | 
| 282 | 
            +
                expect(bundles[0]).to eq(bundle)
         | 
| 283 283 | 
             
              end
         | 
| 284 284 |  | 
| 285 285 | 
             
              it 'should manipulate tag definitions' do
         | 
| 286 | 
            -
                KillBillClient::Model::TagDefinition.all.size. | 
| 287 | 
            -
                KillBillClient::Model::TagDefinition.find_by_name('TEST').is_control_tag. | 
| 286 | 
            +
                expect(KillBillClient::Model::TagDefinition.all.size).to be > 0
         | 
| 287 | 
            +
                expect(KillBillClient::Model::TagDefinition.find_by_name('TEST').is_control_tag).to be_truthy
         | 
| 288 288 |  | 
| 289 289 | 
             
                tag_definition_name = Time.now.to_i.to_s
         | 
| 290 | 
            -
                KillBillClient::Model::TagDefinition.find_by_name(tag_definition_name). | 
| 290 | 
            +
                expect(KillBillClient::Model::TagDefinition.find_by_name(tag_definition_name)).to be_nil
         | 
| 291 291 |  | 
| 292 292 | 
             
                tag_definition = KillBillClient::Model::TagDefinition.new
         | 
| 293 293 | 
             
                tag_definition.name = tag_definition_name
         | 
| 294 294 | 
             
                tag_definition.description = 'Tag for unit test'
         | 
| 295 | 
            -
                tag_definition.create('KillBill Spec test').id. | 
| 295 | 
            +
                expect(tag_definition.create('KillBill Spec test').id).not_to be_nil
         | 
| 296 296 |  | 
| 297 297 | 
             
                found_tag_definition = KillBillClient::Model::TagDefinition.find_by_name(tag_definition_name)
         | 
| 298 | 
            -
                found_tag_definition.name. | 
| 299 | 
            -
                found_tag_definition.description. | 
| 300 | 
            -
                found_tag_definition.is_control_tag. | 
| 298 | 
            +
                expect(found_tag_definition.name).to eq(tag_definition_name)
         | 
| 299 | 
            +
                expect(found_tag_definition.description).to eq(tag_definition.description)
         | 
| 300 | 
            +
                expect(found_tag_definition.is_control_tag).to be_falsey
         | 
| 301 301 | 
             
              end
         | 
| 302 302 |  | 
| 303 303 | 
             
              it 'should manipulate tenants', :integration => true  do
         | 
| @@ -310,22 +310,22 @@ describe KillBillClient::Model do | |
| 310 310 |  | 
| 311 311 | 
             
                # Create and verify the tenant
         | 
| 312 312 | 
             
                tenant = tenant.create('KillBill Spec test')
         | 
| 313 | 
            -
                tenant.api_key. | 
| 314 | 
            -
                tenant.tenant_id. | 
| 313 | 
            +
                expect(tenant.api_key).to eq(api_key)
         | 
| 314 | 
            +
                expect(tenant.tenant_id).not_to be_nil
         | 
| 315 315 |  | 
| 316 316 | 
             
                # Try to retrieve it by id
         | 
| 317 317 | 
             
                tenant = KillBillClient::Model::Tenant.find_by_id tenant.tenant_id
         | 
| 318 | 
            -
                tenant.api_key. | 
| 318 | 
            +
                expect(tenant.api_key).to eq(api_key)
         | 
| 319 319 |  | 
| 320 320 | 
             
                # Try to retrieve it by api key
         | 
| 321 321 | 
             
                tenant = KillBillClient::Model::Tenant.find_by_api_key tenant.api_key
         | 
| 322 | 
            -
                tenant.api_key. | 
| 322 | 
            +
                expect(tenant.api_key).to eq(api_key)
         | 
| 323 323 | 
             
              end
         | 
| 324 324 |  | 
| 325 325 | 
             
              it 'should manipulate the catalog', :integration => true do
         | 
| 326 326 | 
             
                plans = KillBillClient::Model::Catalog::available_base_plans
         | 
| 327 | 
            -
                plans.size. | 
| 328 | 
            -
                plans[0].plan. | 
| 327 | 
            +
                expect(plans.size).to be > 0
         | 
| 328 | 
            +
                expect(plans[0].plan).not_to be_nil
         | 
| 329 329 | 
             
              end
         | 
| 330 330 |  | 
| 331 331 | 
             
              #it 'should retrieve users permissions' do
         | 
| @@ -10,9 +10,66 @@ describe KillBillClient::Model::Resource do | |
| 10 10 |  | 
| 11 11 | 
             
                payment2 = KillBillClient::Model::InvoicePayment.new(payment1.to_hash)
         | 
| 12 12 |  | 
| 13 | 
            -
                payment2. | 
| 14 | 
            -
                payment2.account_id. | 
| 15 | 
            -
                payment2.target_invoice_id. | 
| 16 | 
            -
                payment2.purchased_amount. | 
| 13 | 
            +
                expect(payment2).to eq(payment1)
         | 
| 14 | 
            +
                expect(payment2.account_id).to eq('1234')
         | 
| 15 | 
            +
                expect(payment2.target_invoice_id).to eq('5678')
         | 
| 16 | 
            +
                expect(payment2.purchased_amount).to eq(12.42)
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              describe '#require_multi_tenant_options!' do
         | 
| 20 | 
            +
                let(:message) { 'nothing' }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def require_multi_tenant_options!
         | 
| 23 | 
            +
                  described_class.require_multi_tenant_options!(options, message)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                context 'when api_key and api_secret passed as options' do
         | 
| 27 | 
            +
                  let(:options) do
         | 
| 28 | 
            +
                    {
         | 
| 29 | 
            +
                      :api_key => 'bob',
         | 
| 30 | 
            +
                      :api_secret =>'lazar'
         | 
| 31 | 
            +
                    }
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  it do
         | 
| 35 | 
            +
                    expect { require_multi_tenant_options! }.not_to raise_error
         | 
| 36 | 
            +
                  end
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                context 'when no api_key passed as options' do
         | 
| 40 | 
            +
                  let(:options) do
         | 
| 41 | 
            +
                    {
         | 
| 42 | 
            +
                      :api_secret => 'lazar'
         | 
| 43 | 
            +
                    }
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  it do
         | 
| 47 | 
            +
                    expect { require_multi_tenant_options! }.to raise_error(ArgumentError, message)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                context 'when no api_secret passed as options' do
         | 
| 52 | 
            +
                  let(:options) do
         | 
| 53 | 
            +
                    {
         | 
| 54 | 
            +
                      :api_key => 'bob'
         | 
| 55 | 
            +
                    }
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  it do
         | 
| 59 | 
            +
                    expect { require_multi_tenant_options! }.to raise_error(ArgumentError, message)
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                context 'when api_key and api_secret passed as KillBillClient configuration option' do
         | 
| 64 | 
            +
                  let(:options) { { } }
         | 
| 65 | 
            +
                  before do
         | 
| 66 | 
            +
                    allow(KillBillClient).to receive_messages(:api_key => 'bob')
         | 
| 67 | 
            +
                    allow(KillBillClient).to receive_messages(:api_secret => 'lazar')
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                  it do
         | 
| 71 | 
            +
                    expect { require_multi_tenant_options! }.not_to raise_error
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
                end
         | 
| 17 74 | 
             
              end
         | 
| 18 75 | 
             
            end
         | 
| @@ -4,11 +4,11 @@ describe KillBillClient::Model::Resources do | |
| 4 4 | 
             
              it 'should respect the next page url when calling the .each_in_batches method' do
         | 
| 5 5 | 
             
                stuff = KillBillClient::Model::Resources.new
         | 
| 6 6 | 
             
                1.upto(10).each { |i| stuff << i }
         | 
| 7 | 
            -
                stuff.size. | 
| 7 | 
            +
                expect(stuff.size).to eq(10)
         | 
| 8 8 |  | 
| 9 9 | 
             
                idx = 1
         | 
| 10 10 | 
             
                stuff.each_in_batches do |i|
         | 
| 11 | 
            -
                  i. | 
| 11 | 
            +
                  expect(i).to eq(idx)
         | 
| 12 12 | 
             
                  idx += 1
         | 
| 13 13 | 
             
                end
         | 
| 14 14 | 
             
              end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: killbill-client
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.31.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Killbill core team
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-04-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: json
         | 
| @@ -31,11 +31,17 @@ dependencies: | |
| 31 31 | 
             
                - - '>='
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 33 | 
             
                    version: 10.0.0
         | 
| 34 | 
            +
                - - <
         | 
| 35 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 36 | 
            +
                    version: 11.0.0
         | 
| 34 37 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 35 38 | 
             
                requirements:
         | 
| 36 39 | 
             
                - - '>='
         | 
| 37 40 | 
             
                  - !ruby/object:Gem::Version
         | 
| 38 41 | 
             
                    version: 10.0.0
         | 
| 42 | 
            +
                - - <
         | 
| 43 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 44 | 
            +
                    version: 11.0.0
         | 
| 39 45 | 
             
              prerelease: false
         | 
| 40 46 | 
             
              type: :development
         | 
| 41 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| @@ -44,12 +50,12 @@ dependencies: | |
| 44 50 | 
             
                requirements:
         | 
| 45 51 | 
             
                - - ~>
         | 
| 46 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version:  | 
| 53 | 
            +
                    version: '3.4'
         | 
| 48 54 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 49 55 | 
             
                requirements:
         | 
| 50 56 | 
             
                - - ~>
         | 
| 51 57 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            -
                    version:  | 
| 58 | 
            +
                    version: '3.4'
         | 
| 53 59 | 
             
              prerelease: false
         | 
| 54 60 | 
             
              type: :development
         | 
| 55 61 | 
             
            description: An API client library for Kill Bill.
         | 
| @@ -175,6 +181,7 @@ files: | |
| 175 181 | 
             
            - lib/rails/generators/killbill_client/config_generator.rb
         | 
| 176 182 | 
             
            - lib/rails/killbill_client.rb
         | 
| 177 183 | 
             
            - spec/killbill_client/base_uri_spec.rb
         | 
| 184 | 
            +
            - spec/killbill_client/encoding_spec.rb
         | 
| 178 185 | 
             
            - spec/killbill_client/model_relation_spec.rb
         | 
| 179 186 | 
             
            - spec/killbill_client/remote/api_spec.rb
         | 
| 180 187 | 
             
            - spec/killbill_client/remote/model_spec.rb
         | 
| @@ -203,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 203 210 | 
             
                  version: '0'
         | 
| 204 211 | 
             
            requirements: []
         | 
| 205 212 | 
             
            rubyforge_project:
         | 
| 206 | 
            -
            rubygems_version: 2. | 
| 213 | 
            +
            rubygems_version: 2.4.6
         | 
| 207 214 | 
             
            signing_key:
         | 
| 208 215 | 
             
            specification_version: 4
         | 
| 209 216 | 
             
            summary: Kill Bill client library.
         |