xero_gateway-n8vision 2.0.20
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.
- data/Gemfile +12 -0
 - data/LICENSE +14 -0
 - data/README.textile +357 -0
 - data/Rakefile +14 -0
 - data/examples/oauth.rb +25 -0
 - data/examples/partner_app.rb +36 -0
 - data/init.rb +1 -0
 - data/lib/oauth/oauth_consumer.rb +14 -0
 - data/lib/xero_gateway.rb +41 -0
 - data/lib/xero_gateway/account.rb +86 -0
 - data/lib/xero_gateway/accounts_list.rb +73 -0
 - data/lib/xero_gateway/address.rb +96 -0
 - data/lib/xero_gateway/bank_transaction.rb +175 -0
 - data/lib/xero_gateway/ca-certificates.crt +2560 -0
 - data/lib/xero_gateway/contact.rb +203 -0
 - data/lib/xero_gateway/credit_note.rb +220 -0
 - data/lib/xero_gateway/currency.rb +56 -0
 - data/lib/xero_gateway/dates.rb +25 -0
 - data/lib/xero_gateway/error.rb +18 -0
 - data/lib/xero_gateway/exceptions.rb +51 -0
 - data/lib/xero_gateway/gateway.rb +698 -0
 - data/lib/xero_gateway/http.rb +135 -0
 - data/lib/xero_gateway/http_encoding_helper.rb +49 -0
 - data/lib/xero_gateway/invoice.rb +238 -0
 - data/lib/xero_gateway/journal_line.rb +102 -0
 - data/lib/xero_gateway/line_item.rb +125 -0
 - data/lib/xero_gateway/line_item_calculations.rb +51 -0
 - data/lib/xero_gateway/manual_journal.rb +163 -0
 - data/lib/xero_gateway/money.rb +16 -0
 - data/lib/xero_gateway/oauth.rb +92 -0
 - data/lib/xero_gateway/organisation.rb +75 -0
 - data/lib/xero_gateway/partner_app.rb +30 -0
 - data/lib/xero_gateway/payment.rb +43 -0
 - data/lib/xero_gateway/phone.rb +77 -0
 - data/lib/xero_gateway/private_app.rb +17 -0
 - data/lib/xero_gateway/response.rb +43 -0
 - data/lib/xero_gateway/tax_rate.rb +63 -0
 - data/lib/xero_gateway/tracking_category.rb +87 -0
 - data/test/integration/accounts_list_test.rb +109 -0
 - data/test/integration/create_bank_transaction_test.rb +38 -0
 - data/test/integration/create_contact_test.rb +66 -0
 - data/test/integration/create_credit_note_test.rb +49 -0
 - data/test/integration/create_invoice_test.rb +49 -0
 - data/test/integration/create_manual_journal_test.rb +35 -0
 - data/test/integration/get_accounts_test.rb +23 -0
 - data/test/integration/get_bank_transaction_test.rb +51 -0
 - data/test/integration/get_bank_transactions_test.rb +88 -0
 - data/test/integration/get_contact_test.rb +28 -0
 - data/test/integration/get_contacts_test.rb +40 -0
 - data/test/integration/get_credit_note_test.rb +48 -0
 - data/test/integration/get_credit_notes_test.rb +90 -0
 - data/test/integration/get_currencies_test.rb +25 -0
 - data/test/integration/get_invoice_test.rb +48 -0
 - data/test/integration/get_invoices_test.rb +92 -0
 - data/test/integration/get_manual_journal_test.rb +50 -0
 - data/test/integration/get_manual_journals_test.rb +88 -0
 - data/test/integration/get_organisation_test.rb +24 -0
 - data/test/integration/get_tax_rates_test.rb +25 -0
 - data/test/integration/get_tracking_categories_test.rb +27 -0
 - data/test/integration/update_bank_transaction_test.rb +31 -0
 - data/test/integration/update_contact_test.rb +31 -0
 - data/test/integration/update_invoice_test.rb +31 -0
 - data/test/integration/update_manual_journal_test.rb +31 -0
 - data/test/test_helper.rb +217 -0
 - data/test/unit/account_test.rb +47 -0
 - data/test/unit/bank_transaction_test.rb +126 -0
 - data/test/unit/contact_test.rb +97 -0
 - data/test/unit/credit_note_test.rb +284 -0
 - data/test/unit/currency_test.rb +31 -0
 - data/test/unit/gateway_test.rb +119 -0
 - data/test/unit/invoice_test.rb +326 -0
 - data/test/unit/manual_journal_test.rb +93 -0
 - data/test/unit/oauth_test.rb +116 -0
 - data/test/unit/organisation_test.rb +38 -0
 - data/test/unit/tax_rate_test.rb +38 -0
 - data/test/unit/tracking_category_test.rb +52 -0
 - data/xero_gateway-n8vision.gemspec +15 -0
 - metadata +178 -0
 
| 
         @@ -0,0 +1,93 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '../test_helper.rb')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class ManualJournalTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              include TestHelper
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              context "creating test manual journals" do
         
     | 
| 
      
 7 
     | 
    
         
            +
                should "work" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                  manual_journal = create_test_manual_journal
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  # test transaction defaults
         
     | 
| 
      
 11 
     | 
    
         
            +
                  assert_equal 'POSTED', manual_journal.status
         
     | 
| 
      
 12 
     | 
    
         
            +
                  assert_kind_of Date, manual_journal.date
         
     | 
| 
      
 13 
     | 
    
         
            +
                  assert_equal 'test narration', manual_journal.narration      
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  # Test the journal_line defaults.
         
     | 
| 
      
 16 
     | 
    
         
            +
                  journal_line = manual_journal.journal_lines.first
         
     | 
| 
      
 17 
     | 
    
         
            +
                  assert_equal('FIRST LINE', journal_line.description)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  assert_equal('200', journal_line.account_code)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  assert_equal(BigDecimal.new('100'), journal_line.line_amount)
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                should "allow overriding transaction defaults" do
         
     | 
| 
      
 23 
     | 
    
         
            +
                  assert_equal 'DRAFT', create_test_manual_journal(:status => 'DRAFT').status
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              context "adding journal lines" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @manual_journal = create_test_manual_journal
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                should "work" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                  assert_equal 2, @manual_journal.journal_lines.size
         
     | 
| 
      
 34 
     | 
    
         
            +
                  assert @manual_journal.valid?
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  journal_line_params = {:description => "Test Item 1", :line_amount => 100, :account_code => '200'}
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  # Test adding line item by hash
         
     | 
| 
      
 39 
     | 
    
         
            +
                  journal_line = @manual_journal.add_journal_line(journal_line_params)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  assert_kind_of(XeroGateway::JournalLine, journal_line)
         
     | 
| 
      
 41 
     | 
    
         
            +
                  assert_equal(journal_line_params[:description], journal_line.description)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  assert_equal(journal_line_params[:line_amount], journal_line.line_amount)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  assert_equal(3, @manual_journal.journal_lines.size)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  # Test adding line item by XeroGateway::JournalLine
         
     | 
| 
      
 46 
     | 
    
         
            +
                  journal_line = @manual_journal.add_journal_line(journal_line_params)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  assert_kind_of(XeroGateway::JournalLine, journal_line)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  assert_equal(journal_line_params[:description], journal_line.description)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  assert_equal(journal_line_params[:line_amount], journal_line.line_amount)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  assert_equal(4, @manual_journal.journal_lines.size)
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  # Test that having only 1 journal line fails.      
         
     | 
| 
      
 53 
     | 
    
         
            +
                  @manual_journal.journal_lines = [] 
         
     | 
| 
      
 54 
     | 
    
         
            +
                  @manual_journal.add_journal_line(journal_line_params)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  assert !@manual_journal.valid?
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              context "building and parsing XML" do
         
     | 
| 
      
 61 
     | 
    
         
            +
                should "work vice versa" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                  manual_journal = create_test_manual_journal
         
     | 
| 
      
 63 
     | 
    
         
            +
                  manual_journal_as_xml = manual_journal.to_xml
         
     | 
| 
      
 64 
     | 
    
         
            +
                  manual_journal_element = REXML::XPath.first(REXML::Document.new(manual_journal_as_xml), "/ManualJournal")
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                  # checking for mandatory fields      
         
     | 
| 
      
 67 
     | 
    
         
            +
                  assert_xml_field manual_journal_element, 'Date'
         
     | 
| 
      
 68 
     | 
    
         
            +
                  assert_xml_field manual_journal_element, 'Narration', :value => 'test narration'
         
     | 
| 
      
 69 
     | 
    
         
            +
                  assert_xml_field manual_journal_element, 'Status', :value => 'POSTED'            
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                  parsed_manual_journal = XeroGateway::ManualJournal.from_xml(manual_journal_element)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  assert_equal(manual_journal, parsed_manual_journal)
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                should "work for optional params" do
         
     | 
| 
      
 76 
     | 
    
         
            +
                  manual_journal = create_test_manual_journal(:url => 'http://example.com?with=params&and=more')
         
     | 
| 
      
 77 
     | 
    
         
            +
                  manual_journal_element = REXML::XPath.first(REXML::Document.new(manual_journal.to_xml), "/ManualJournal")
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                  assert_xml_field manual_journal_element, 'Url', :value => 'http://example.com\?with=params&and=more'
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  parsed_manual_journal = XeroGateway::ManualJournal.from_xml(manual_journal_element)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_equal 'http://example.com?with=params&and=more', parsed_manual_journal.url
         
     | 
| 
      
 83 
     | 
    
         
            +
                end
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            private
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
              def assert_xml_field(xml, field_name, options={})
         
     | 
| 
      
 89 
     | 
    
         
            +
                assert_match /#{field_name}/, xml.to_s, "Didn't find the field #{field_name} in the XML document!"
         
     | 
| 
      
 90 
     | 
    
         
            +
                assert_match /#{field_name}.*#{options[:value]}.*#{field_name}/, xml.to_s, "The field #{field_name} was expected to be '#{options[:value]}'!" if options[:value]    
         
     | 
| 
      
 91 
     | 
    
         
            +
              end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,116 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Shamelessly based on the xero Gem's OAuth implementation by John Nunemaker
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Thanks!
         
     | 
| 
      
 3 
     | 
    
         
            +
            # 
         
     | 
| 
      
 4 
     | 
    
         
            +
            # http://xero.rubyforge.org/
         
     | 
| 
      
 5 
     | 
    
         
            +
            # http://github.com/jnunemaker/xero/
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '../test_helper.rb')
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            class OAuthTest < Test::Unit::TestCase
         
     | 
| 
      
 10 
     | 
    
         
            +
              should "initialize with consumer token and secret" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 12 
     | 
    
         
            +
                
         
     | 
| 
      
 13 
     | 
    
         
            +
                assert_equal 'token',  xero.ctoken
         
     | 
| 
      
 14 
     | 
    
         
            +
                assert_equal 'secret', xero.csecret
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
              should "set autorization path to '/oauth/authorize' by default" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert_equal '/oauth/Authorize', xero.consumer.options[:authorize_path] 
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              should "have a consumer" do
         
     | 
| 
      
 23 
     | 
    
         
            +
                consumer = mock('oauth consumer')
         
     | 
| 
      
 24 
     | 
    
         
            +
                OAuth::Consumer.expects(:new).with('token', 'secret', XeroGateway::OAuth::XERO_CONSUMER_OPTIONS).returns(consumer)
         
     | 
| 
      
 25 
     | 
    
         
            +
                
         
     | 
| 
      
 26 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 27 
     | 
    
         
            +
                
         
     | 
| 
      
 28 
     | 
    
         
            +
                assert_equal consumer, xero.consumer
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
              
         
     | 
| 
      
 31 
     | 
    
         
            +
              should "have a request token from the consumer" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                consumer = mock('oauth consumer')
         
     | 
| 
      
 33 
     | 
    
         
            +
                request_token = mock('request token')
         
     | 
| 
      
 34 
     | 
    
         
            +
                consumer.expects(:get_request_token).returns(request_token)
         
     | 
| 
      
 35 
     | 
    
         
            +
                OAuth::Consumer.expects(:new).with('token', 'secret', XeroGateway::OAuth::XERO_CONSUMER_OPTIONS).returns(consumer)
         
     | 
| 
      
 36 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 37 
     | 
    
         
            +
                
         
     | 
| 
      
 38 
     | 
    
         
            +
                assert_equal request_token, xero.request_token
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
              
         
     | 
| 
      
 41 
     | 
    
         
            +
              should "be able to create access token from request token and secret" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 43 
     | 
    
         
            +
                consumer = OAuth::Consumer.new('token', 'secret')
         
     | 
| 
      
 44 
     | 
    
         
            +
                xero.stubs(:consumer).returns(consumer)
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                access_token = mock('access token')
         
     | 
| 
      
 47 
     | 
    
         
            +
                access_token.expects(:token).twice.returns('atoken')
         
     | 
| 
      
 48 
     | 
    
         
            +
                access_token.expects(:secret).twice.returns('asecret')
         
     | 
| 
      
 49 
     | 
    
         
            +
                access_token.stubs(:params).returns({})
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                request_token = mock('request token')
         
     | 
| 
      
 52 
     | 
    
         
            +
                request_token.expects(:get_access_token).returns(access_token)
         
     | 
| 
      
 53 
     | 
    
         
            +
                OAuth::RequestToken.expects(:new).with(consumer, 'rtoken', 'rsecret').returns(request_token)
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                xero.authorize_from_request('rtoken', 'rsecret')
         
     | 
| 
      
 56 
     | 
    
         
            +
                assert xero.access_token.is_a? OAuth::AccessToken
         
     | 
| 
      
 57 
     | 
    
         
            +
                assert_equal "atoken",  xero.access_token.token
         
     | 
| 
      
 58 
     | 
    
         
            +
                assert_equal "asecret", xero.access_token.secret
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
              
         
     | 
| 
      
 61 
     | 
    
         
            +
              should "be able to create access token from access token and secret" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 63 
     | 
    
         
            +
                consumer = OAuth::Consumer.new('token', 'secret')
         
     | 
| 
      
 64 
     | 
    
         
            +
                xero.stubs(:consumer).returns(consumer)
         
     | 
| 
      
 65 
     | 
    
         
            +
                
         
     | 
| 
      
 66 
     | 
    
         
            +
                xero.authorize_from_access('atoken', 'asecret')
         
     | 
| 
      
 67 
     | 
    
         
            +
                assert xero.access_token.is_a? OAuth::AccessToken
         
     | 
| 
      
 68 
     | 
    
         
            +
                assert_equal "atoken",  xero.access_token.token
         
     | 
| 
      
 69 
     | 
    
         
            +
                assert_equal "asecret", xero.access_token.secret
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              should "be able to create request token with callback url" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 74 
     | 
    
         
            +
                consumer = OAuth::Consumer.new('token', 'secret')
         
     | 
| 
      
 75 
     | 
    
         
            +
                xero.stubs(:consumer).returns(consumer)
         
     | 
| 
      
 76 
     | 
    
         
            +
              
         
     | 
| 
      
 77 
     | 
    
         
            +
                request_token = mock('request token')
         
     | 
| 
      
 78 
     | 
    
         
            +
                consumer.expects(:get_request_token).with(:oauth_callback => "http://callback.com").returns(request_token)
         
     | 
| 
      
 79 
     | 
    
         
            +
              
         
     | 
| 
      
 80 
     | 
    
         
            +
                xero.request_token(:oauth_callback => "http://callback.com")
         
     | 
| 
      
 81 
     | 
    
         
            +
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
              
         
     | 
| 
      
 83 
     | 
    
         
            +
              should "be able to create access token with oauth verifier" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 85 
     | 
    
         
            +
                consumer = OAuth::Consumer.new('token', 'secret')
         
     | 
| 
      
 86 
     | 
    
         
            +
                xero.stubs(:consumer).returns(consumer)
         
     | 
| 
      
 87 
     | 
    
         
            +
                
         
     | 
| 
      
 88 
     | 
    
         
            +
                access_token = mock('access token')
         
     | 
| 
      
 89 
     | 
    
         
            +
                access_token.expects(:token).twice.returns('atoken')
         
     | 
| 
      
 90 
     | 
    
         
            +
                access_token.expects(:secret).twice.returns('asecret')
         
     | 
| 
      
 91 
     | 
    
         
            +
                access_token.stubs(:params).returns({})
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                request_token = mock('request token')
         
     | 
| 
      
 94 
     | 
    
         
            +
                request_token.expects(:get_access_token).with(:oauth_verifier => "verifier").returns(access_token)
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                OAuth::RequestToken.expects(:new).with(consumer, 'rtoken', 'rsecret').returns(request_token)
         
     | 
| 
      
 97 
     | 
    
         
            +
                
         
     | 
| 
      
 98 
     | 
    
         
            +
                xero.authorize_from_request('rtoken', 'rsecret', :oauth_verifier => "verifier")
         
     | 
| 
      
 99 
     | 
    
         
            +
              end
         
     | 
| 
      
 100 
     | 
    
         
            +
              
         
     | 
| 
      
 101 
     | 
    
         
            +
              should "delegate get to access token" do
         
     | 
| 
      
 102 
     | 
    
         
            +
                access_token = mock('access token')
         
     | 
| 
      
 103 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 104 
     | 
    
         
            +
                xero.stubs(:access_token).returns(access_token)
         
     | 
| 
      
 105 
     | 
    
         
            +
                access_token.expects(:get).returns(nil)
         
     | 
| 
      
 106 
     | 
    
         
            +
                xero.get('/foo')
         
     | 
| 
      
 107 
     | 
    
         
            +
              end
         
     | 
| 
      
 108 
     | 
    
         
            +
              
         
     | 
| 
      
 109 
     | 
    
         
            +
              should "delegate post to access token" do
         
     | 
| 
      
 110 
     | 
    
         
            +
                access_token = mock('access token')
         
     | 
| 
      
 111 
     | 
    
         
            +
                xero = XeroGateway::OAuth.new('token', 'secret')
         
     | 
| 
      
 112 
     | 
    
         
            +
                xero.stubs(:access_token).returns(access_token)
         
     | 
| 
      
 113 
     | 
    
         
            +
                access_token.expects(:post).returns(nil)
         
     | 
| 
      
 114 
     | 
    
         
            +
                xero.post('/foo')
         
     | 
| 
      
 115 
     | 
    
         
            +
              end
         
     | 
| 
      
 116 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '../test_helper.rb')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class OrganisationTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              # Tests that an organisation can be converted into XML that Xero can understand, and then converted back to an organisation
         
     | 
| 
      
 6 
     | 
    
         
            +
              def test_build_and_parse_xml
         
     | 
| 
      
 7 
     | 
    
         
            +
                org = create_test_organisation
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                # Generate the XML message
         
     | 
| 
      
 10 
     | 
    
         
            +
                org_as_xml = org.to_xml
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                # Parse the XML message and retrieve the account element
         
     | 
| 
      
 13 
     | 
    
         
            +
                org_element = REXML::XPath.first(REXML::Document.new(org_as_xml), "/Organisation")
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Build a new account from the XML
         
     | 
| 
      
 16 
     | 
    
         
            +
                result_org = XeroGateway::Organisation.from_xml(org_element)
         
     | 
| 
      
 17 
     | 
    
         
            +
                
         
     | 
| 
      
 18 
     | 
    
         
            +
                # Check the account details
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert_equal org, result_org
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
              private
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              def create_test_organisation
         
     | 
| 
      
 26 
     | 
    
         
            +
                XeroGateway::Organisation.new.tap do |org|
         
     | 
| 
      
 27 
     | 
    
         
            +
                  org.name                = "Demo Company (NZ)"
         
     | 
| 
      
 28 
     | 
    
         
            +
                  org.legal_name          = "Demo Company (NZ)"
         
     | 
| 
      
 29 
     | 
    
         
            +
                  org.pays_tax            = true
         
     | 
| 
      
 30 
     | 
    
         
            +
                  org.version             = "NZ"
         
     | 
| 
      
 31 
     | 
    
         
            +
                  org.base_currency       = "NZD"
         
     | 
| 
      
 32 
     | 
    
         
            +
                  org.country_code        = "NZ"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  org.organisation_type   = nil
         
     | 
| 
      
 34 
     | 
    
         
            +
                  org.organisation_status = nil
         
     | 
| 
      
 35 
     | 
    
         
            +
                  org.is_demo_company     = false
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '../test_helper.rb')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class TaxRateTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              # Tests that a tax rate can be converted into XML that Xero can understand, and then converted back to a tax rate
         
     | 
| 
      
 6 
     | 
    
         
            +
              def test_build_and_parse_xml
         
     | 
| 
      
 7 
     | 
    
         
            +
                tax_rate = create_test_tax_rate
         
     | 
| 
      
 8 
     | 
    
         
            +
                
         
     | 
| 
      
 9 
     | 
    
         
            +
                # Generate the XML message
         
     | 
| 
      
 10 
     | 
    
         
            +
                tax_rate_as_xml = tax_rate.to_xml
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                # Parse the XML message and retrieve the account element
         
     | 
| 
      
 13 
     | 
    
         
            +
                tax_rate_element = REXML::XPath.first(REXML::Document.new(tax_rate_as_xml), "/TaxRate")
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Build a new account from the XML
         
     | 
| 
      
 16 
     | 
    
         
            +
                result_tax_rate = XeroGateway::TaxRate.from_xml(tax_rate_element)
         
     | 
| 
      
 17 
     | 
    
         
            +
                
         
     | 
| 
      
 18 
     | 
    
         
            +
                # Check the account details
         
     | 
| 
      
 19 
     | 
    
         
            +
                assert_equal tax_rate, result_tax_rate
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
              private
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              def create_test_tax_rate
         
     | 
| 
      
 26 
     | 
    
         
            +
                XeroGateway::TaxRate.new.tap do |tax_rate|
         
     | 
| 
      
 27 
     | 
    
         
            +
                   tax_rate.name = "GST on Expenses"
         
     | 
| 
      
 28 
     | 
    
         
            +
                   tax_rate.tax_type = "INPUT"
         
     | 
| 
      
 29 
     | 
    
         
            +
                   tax_rate.can_apply_to_assets      = true
         
     | 
| 
      
 30 
     | 
    
         
            +
                   tax_rate.can_apply_to_equity      = true
         
     | 
| 
      
 31 
     | 
    
         
            +
                   tax_rate.can_apply_to_expenses    = true
         
     | 
| 
      
 32 
     | 
    
         
            +
                   tax_rate.can_apply_to_liabilities = true
         
     | 
| 
      
 33 
     | 
    
         
            +
                   tax_rate.can_apply_to_revenue     = false
         
     | 
| 
      
 34 
     | 
    
         
            +
                   tax_rate.display_tax_rate         = 12.500
         
     | 
| 
      
 35 
     | 
    
         
            +
                   tax_rate.effective_rate           = 12.500
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.join(File.dirname(__FILE__), '../test_helper.rb')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            class TrackingCategoryTest < Test::Unit::TestCase
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Tests that a tracking category can be converted into XML that Xero can understand, and then converted back to a tracking category
         
     | 
| 
      
 5 
     | 
    
         
            +
              def test_build_and_parse_xml
         
     | 
| 
      
 6 
     | 
    
         
            +
                tracking_category = create_test_tracking_category
         
     | 
| 
      
 7 
     | 
    
         
            +
                
         
     | 
| 
      
 8 
     | 
    
         
            +
                # Generate the XML message
         
     | 
| 
      
 9 
     | 
    
         
            +
                tracking_category_as_xml = tracking_category.to_xml
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                # Parse the XML message and retrieve the tracking category element
         
     | 
| 
      
 12 
     | 
    
         
            +
                tracking_category_element = REXML::XPath.first(REXML::Document.new(tracking_category_as_xml), "/TrackingCategory")
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # Build a new tracking category from the XML
         
     | 
| 
      
 15 
     | 
    
         
            +
                result_tracking_category = XeroGateway::TrackingCategory.from_xml(tracking_category_element)
         
     | 
| 
      
 16 
     | 
    
         
            +
                
         
     | 
| 
      
 17 
     | 
    
         
            +
                # Check the tracking category details
         
     | 
| 
      
 18 
     | 
    
         
            +
                assert_equal tracking_category, result_tracking_category
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def test_build_and_parse_xml_from_line_item
         
     | 
| 
      
 22 
     | 
    
         
            +
                tracking_category = create_test_line_item_tracking_category
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                # Generate the XML message
         
     | 
| 
      
 25 
     | 
    
         
            +
                tracking_category_as_xml = tracking_category.to_xml_for_invoice_messages
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                # Parse the XML message and retrieve the tracking category element
         
     | 
| 
      
 28 
     | 
    
         
            +
                tracking_category_element = REXML::XPath.first(REXML::Document.new(tracking_category_as_xml), "/TrackingCategory")
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                # Build a new tracking category from the XML
         
     | 
| 
      
 31 
     | 
    
         
            +
                result_tracking_category = XeroGateway::TrackingCategory.from_xml(tracking_category_element)
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # Check the tracking category details
         
     | 
| 
      
 34 
     | 
    
         
            +
                assert_equal tracking_category, result_tracking_category
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
              
         
     | 
| 
      
 37 
     | 
    
         
            +
              private
         
     | 
| 
      
 38 
     | 
    
         
            +
              
         
     | 
| 
      
 39 
     | 
    
         
            +
              def create_test_tracking_category
         
     | 
| 
      
 40 
     | 
    
         
            +
                tracking_category = XeroGateway::TrackingCategory.new
         
     | 
| 
      
 41 
     | 
    
         
            +
                tracking_category.name = "REGION"
         
     | 
| 
      
 42 
     | 
    
         
            +
                tracking_category.options = ["NORTH", "SOUTH", "CENTRAL"]
         
     | 
| 
      
 43 
     | 
    
         
            +
                tracking_category
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              def create_test_line_item_tracking_category
         
     | 
| 
      
 47 
     | 
    
         
            +
                tracking_category = XeroGateway::TrackingCategory.new
         
     | 
| 
      
 48 
     | 
    
         
            +
                tracking_category.name = "REGION"
         
     | 
| 
      
 49 
     | 
    
         
            +
                tracking_category.options = ["NORTH"]
         
     | 
| 
      
 50 
     | 
    
         
            +
                tracking_category
         
     | 
| 
      
 51 
     | 
    
         
            +
              end
         
     | 
| 
      
 52 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
              s.name     = "xero_gateway-n8vision"
         
     | 
| 
      
 3 
     | 
    
         
            +
              s.version  = "2.0.20"
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.date     = "2012-07-13"
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.summary  = "Enables ruby based applications to communicate with the Xero API"
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.email    = "tim@connorsoftware.com"
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.homepage = "http://github.com/tlconnor/xero_gateway"
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.description = "Enables ruby based applications to communicate with the Xero API"
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.has_rdoc = false
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.authors  = ["Tim Connor", "Nik Wakelin"]
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.files = ["Gemfile", "LICENSE", "Rakefile", "README.textile", "xero_gateway-n8vision.gemspec"] + Dir['**/*.rb'] + Dir['**/*.crt']
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.add_dependency('builder', '>= 2.1.2')
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.add_dependency('oauth', '= 0.4.5')
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.add_dependency('activesupport')
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,178 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: xero_gateway-n8vision
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 2
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 20
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 2.0.20
         
     | 
| 
      
 10 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - Tim Connor
         
     | 
| 
      
 13 
     | 
    
         
            +
            - Nik Wakelin
         
     | 
| 
      
 14 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 16 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2012-07-13 00:00:00 +01:00
         
     | 
| 
      
 19 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 20 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 21 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 22 
     | 
    
         
            +
              name: builder
         
     | 
| 
      
 23 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 24 
     | 
    
         
            +
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 25 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 26 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 27 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 30 
     | 
    
         
            +
                    - 1
         
     | 
| 
      
 31 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 2.1.2
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 34 
     | 
    
         
            +
              version_requirements: *id001
         
     | 
| 
      
 35 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 36 
     | 
    
         
            +
              name: oauth
         
     | 
| 
      
 37 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 39 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 40 
     | 
    
         
            +
                - - "="
         
     | 
| 
      
 41 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 42 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 44 
     | 
    
         
            +
                    - 4
         
     | 
| 
      
 45 
     | 
    
         
            +
                    - 5
         
     | 
| 
      
 46 
     | 
    
         
            +
                    version: 0.4.5
         
     | 
| 
      
 47 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 48 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 49 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 50 
     | 
    
         
            +
              name: activesupport
         
     | 
| 
      
 51 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 52 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 53 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 54 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 55 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 56 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 57 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 58 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 59 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 60 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 61 
     | 
    
         
            +
            description: Enables ruby based applications to communicate with the Xero API
         
     | 
| 
      
 62 
     | 
    
         
            +
            email: tim@connorsoftware.com
         
     | 
| 
      
 63 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 70 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 71 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 72 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 73 
     | 
    
         
            +
            - README.textile
         
     | 
| 
      
 74 
     | 
    
         
            +
            - xero_gateway-n8vision.gemspec
         
     | 
| 
      
 75 
     | 
    
         
            +
            - examples/oauth.rb
         
     | 
| 
      
 76 
     | 
    
         
            +
            - examples/partner_app.rb
         
     | 
| 
      
 77 
     | 
    
         
            +
            - init.rb
         
     | 
| 
      
 78 
     | 
    
         
            +
            - lib/oauth/oauth_consumer.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - lib/xero_gateway/account.rb
         
     | 
| 
      
 80 
     | 
    
         
            +
            - lib/xero_gateway/accounts_list.rb
         
     | 
| 
      
 81 
     | 
    
         
            +
            - lib/xero_gateway/address.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
            - lib/xero_gateway/bank_transaction.rb
         
     | 
| 
      
 83 
     | 
    
         
            +
            - lib/xero_gateway/contact.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - lib/xero_gateway/credit_note.rb
         
     | 
| 
      
 85 
     | 
    
         
            +
            - lib/xero_gateway/currency.rb
         
     | 
| 
      
 86 
     | 
    
         
            +
            - lib/xero_gateway/dates.rb
         
     | 
| 
      
 87 
     | 
    
         
            +
            - lib/xero_gateway/error.rb
         
     | 
| 
      
 88 
     | 
    
         
            +
            - lib/xero_gateway/exceptions.rb
         
     | 
| 
      
 89 
     | 
    
         
            +
            - lib/xero_gateway/gateway.rb
         
     | 
| 
      
 90 
     | 
    
         
            +
            - lib/xero_gateway/http.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - lib/xero_gateway/http_encoding_helper.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - lib/xero_gateway/invoice.rb
         
     | 
| 
      
 93 
     | 
    
         
            +
            - lib/xero_gateway/journal_line.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - lib/xero_gateway/line_item.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - lib/xero_gateway/line_item_calculations.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - lib/xero_gateway/manual_journal.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - lib/xero_gateway/money.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - lib/xero_gateway/oauth.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - lib/xero_gateway/organisation.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - lib/xero_gateway/partner_app.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - lib/xero_gateway/payment.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - lib/xero_gateway/phone.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - lib/xero_gateway/private_app.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - lib/xero_gateway/response.rb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - lib/xero_gateway/tax_rate.rb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - lib/xero_gateway/tracking_category.rb
         
     | 
| 
      
 107 
     | 
    
         
            +
            - lib/xero_gateway.rb
         
     | 
| 
      
 108 
     | 
    
         
            +
            - test/integration/accounts_list_test.rb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - test/integration/create_bank_transaction_test.rb
         
     | 
| 
      
 110 
     | 
    
         
            +
            - test/integration/create_contact_test.rb
         
     | 
| 
      
 111 
     | 
    
         
            +
            - test/integration/create_credit_note_test.rb
         
     | 
| 
      
 112 
     | 
    
         
            +
            - test/integration/create_invoice_test.rb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - test/integration/create_manual_journal_test.rb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - test/integration/get_accounts_test.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - test/integration/get_bank_transaction_test.rb
         
     | 
| 
      
 116 
     | 
    
         
            +
            - test/integration/get_bank_transactions_test.rb
         
     | 
| 
      
 117 
     | 
    
         
            +
            - test/integration/get_contact_test.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - test/integration/get_contacts_test.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - test/integration/get_credit_note_test.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - test/integration/get_credit_notes_test.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - test/integration/get_currencies_test.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - test/integration/get_invoice_test.rb
         
     | 
| 
      
 123 
     | 
    
         
            +
            - test/integration/get_invoices_test.rb
         
     | 
| 
      
 124 
     | 
    
         
            +
            - test/integration/get_manual_journal_test.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - test/integration/get_manual_journals_test.rb
         
     | 
| 
      
 126 
     | 
    
         
            +
            - test/integration/get_organisation_test.rb
         
     | 
| 
      
 127 
     | 
    
         
            +
            - test/integration/get_tax_rates_test.rb
         
     | 
| 
      
 128 
     | 
    
         
            +
            - test/integration/get_tracking_categories_test.rb
         
     | 
| 
      
 129 
     | 
    
         
            +
            - test/integration/update_bank_transaction_test.rb
         
     | 
| 
      
 130 
     | 
    
         
            +
            - test/integration/update_contact_test.rb
         
     | 
| 
      
 131 
     | 
    
         
            +
            - test/integration/update_invoice_test.rb
         
     | 
| 
      
 132 
     | 
    
         
            +
            - test/integration/update_manual_journal_test.rb
         
     | 
| 
      
 133 
     | 
    
         
            +
            - test/test_helper.rb
         
     | 
| 
      
 134 
     | 
    
         
            +
            - test/unit/account_test.rb
         
     | 
| 
      
 135 
     | 
    
         
            +
            - test/unit/bank_transaction_test.rb
         
     | 
| 
      
 136 
     | 
    
         
            +
            - test/unit/contact_test.rb
         
     | 
| 
      
 137 
     | 
    
         
            +
            - test/unit/credit_note_test.rb
         
     | 
| 
      
 138 
     | 
    
         
            +
            - test/unit/currency_test.rb
         
     | 
| 
      
 139 
     | 
    
         
            +
            - test/unit/gateway_test.rb
         
     | 
| 
      
 140 
     | 
    
         
            +
            - test/unit/invoice_test.rb
         
     | 
| 
      
 141 
     | 
    
         
            +
            - test/unit/manual_journal_test.rb
         
     | 
| 
      
 142 
     | 
    
         
            +
            - test/unit/oauth_test.rb
         
     | 
| 
      
 143 
     | 
    
         
            +
            - test/unit/organisation_test.rb
         
     | 
| 
      
 144 
     | 
    
         
            +
            - test/unit/tax_rate_test.rb
         
     | 
| 
      
 145 
     | 
    
         
            +
            - test/unit/tracking_category_test.rb
         
     | 
| 
      
 146 
     | 
    
         
            +
            - lib/xero_gateway/ca-certificates.crt
         
     | 
| 
      
 147 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 148 
     | 
    
         
            +
            homepage: http://github.com/tlconnor/xero_gateway
         
     | 
| 
      
 149 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 152 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 155 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 156 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 157 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 158 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 159 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 160 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 161 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 162 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 163 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 164 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 165 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 166 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 167 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 168 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 169 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 170 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 173 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
      
 174 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 175 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 176 
     | 
    
         
            +
            summary: Enables ruby based applications to communicate with the Xero API
         
     | 
| 
      
 177 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     |