rconomic 0.5.2 → 0.6.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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +40 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +14 -3
  5. data/CHANGELOG.md +28 -0
  6. data/Gemfile +5 -4
  7. data/Guardfile +9 -4
  8. data/README.md +23 -4
  9. data/Rakefile +5 -5
  10. data/gemfiles/Gemfile.ruby-2.0 +14 -0
  11. data/lib/economic/account.rb +3 -3
  12. data/lib/economic/cash_book.rb +4 -7
  13. data/lib/economic/cash_book_entry.rb +4 -24
  14. data/lib/economic/company.rb +61 -0
  15. data/lib/economic/creditor.rb +4 -5
  16. data/lib/economic/creditor_contact.rb +5 -6
  17. data/lib/economic/creditor_entry.rb +1 -3
  18. data/lib/economic/current_invoice.rb +14 -21
  19. data/lib/economic/current_invoice_line.rb +4 -13
  20. data/lib/economic/debtor.rb +10 -11
  21. data/lib/economic/debtor_contact.rb +7 -8
  22. data/lib/economic/debtor_entry.rb +1 -3
  23. data/lib/economic/endpoint.rb +36 -6
  24. data/lib/economic/entity/handle.rb +54 -29
  25. data/lib/economic/entity/mapper.rb +1 -1
  26. data/lib/economic/entity.rb +26 -29
  27. data/lib/economic/entry.rb +1 -2
  28. data/lib/economic/invoice.rb +15 -8
  29. data/lib/economic/order.rb +2 -4
  30. data/lib/economic/product.rb +73 -0
  31. data/lib/economic/proxies/account_proxy.rb +2 -4
  32. data/lib/economic/proxies/actions/debtor_contact/all.rb +63 -0
  33. data/lib/economic/proxies/actions/find_by_ci_number.rb +1 -3
  34. data/lib/economic/proxies/actions/find_by_date_interval.rb +3 -6
  35. data/lib/economic/proxies/actions/find_by_handle_with_number.rb +1 -1
  36. data/lib/economic/proxies/actions/find_by_name.rb +1 -1
  37. data/lib/economic/proxies/actions/find_by_number.rb +2 -4
  38. data/lib/economic/proxies/actions/find_by_telephone_and_fax_number.rb +1 -3
  39. data/lib/economic/proxies/cash_book_entry_proxy.rb +19 -22
  40. data/lib/economic/proxies/cash_book_proxy.rb +5 -10
  41. data/lib/economic/proxies/company_proxy.rb +9 -0
  42. data/lib/economic/proxies/creditor_contact_proxy.rb +2 -2
  43. data/lib/economic/proxies/creditor_entry_proxy.rb +8 -14
  44. data/lib/economic/proxies/creditor_proxy.rb +8 -11
  45. data/lib/economic/proxies/current_invoice_line_proxy.rb +2 -2
  46. data/lib/economic/proxies/current_invoice_proxy.rb +3 -3
  47. data/lib/economic/proxies/debtor_contact_proxy.rb +6 -2
  48. data/lib/economic/proxies/debtor_entry_proxy.rb +6 -10
  49. data/lib/economic/proxies/debtor_proxy.rb +40 -55
  50. data/lib/economic/proxies/entity_proxy.rb +15 -15
  51. data/lib/economic/proxies/entry_proxy.rb +10 -16
  52. data/lib/economic/proxies/invoice_proxy.rb +3 -3
  53. data/lib/economic/proxies/order_proxy.rb +3 -3
  54. data/lib/economic/proxies/product_proxy.rb +11 -0
  55. data/lib/economic/session.rb +48 -21
  56. data/lib/economic/support/string.rb +5 -5
  57. data/lib/rconomic/version.rb +1 -1
  58. data/lib/rconomic.rb +39 -34
  59. data/lib/savon_ext/request.rb +17 -0
  60. data/rconomic.gemspec +8 -7
  61. data/spec/economic/account_spec.rb +3 -3
  62. data/spec/economic/cash_book_entry_spec.rb +26 -3
  63. data/spec/economic/cash_book_spec.rb +7 -7
  64. data/spec/economic/company_spec.rb +20 -0
  65. data/spec/economic/creditor_contact_spec.rb +4 -5
  66. data/spec/economic/creditor_entry_spec.rb +20 -0
  67. data/spec/economic/creditor_spec.rb +3 -3
  68. data/spec/economic/current_invoice_line_spec.rb +3 -3
  69. data/spec/economic/current_invoice_spec.rb +19 -19
  70. data/spec/economic/debtor_contact_spec.rb +4 -5
  71. data/spec/economic/debtor_entry_spec.rb +1 -1
  72. data/spec/economic/debtor_spec.rb +13 -13
  73. data/spec/economic/endpoint_spec.rb +27 -11
  74. data/spec/economic/entity/handle_spec.rb +10 -23
  75. data/spec/economic/entity/mapper_spec.rb +26 -30
  76. data/spec/economic/entity_spec.rb +36 -31
  77. data/spec/economic/entry_spec.rb +1 -1
  78. data/spec/economic/invoice_spec.rb +49 -7
  79. data/spec/economic/order_spec.rb +4 -4
  80. data/spec/economic/product_spec.rb +72 -0
  81. data/spec/economic/proxies/account_proxy_spec.rb +74 -0
  82. data/spec/economic/proxies/actions/debtor_contact/all_spec.rb +26 -0
  83. data/spec/economic/proxies/actions/find_by_name_spec.rb +6 -7
  84. data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +27 -29
  85. data/spec/economic/proxies/cash_book_proxy_spec.rb +14 -22
  86. data/spec/economic/proxies/company_proxy_spec.rb +47 -0
  87. data/spec/economic/proxies/creditor_contact_proxy_spec.rb +11 -5
  88. data/spec/economic/proxies/creditor_entry_proxy_spec.rb +12 -12
  89. data/spec/economic/proxies/creditor_proxy_spec.rb +15 -15
  90. data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +10 -4
  91. data/spec/economic/proxies/current_invoice_proxy_spec.rb +37 -19
  92. data/spec/economic/proxies/debtor_contact_proxy_spec.rb +8 -4
  93. data/spec/economic/proxies/debtor_entry_proxy_spec.rb +21 -11
  94. data/spec/economic/proxies/debtor_proxy_spec.rb +81 -40
  95. data/spec/economic/proxies/entry_proxy_spec.rb +17 -14
  96. data/spec/economic/proxies/invoice_proxy_spec.rb +24 -10
  97. data/spec/economic/proxies/order_proxy_spec.rb +20 -10
  98. data/spec/economic/proxies/product_proxy_spec.rb +86 -0
  99. data/spec/economic/session_spec.rb +74 -35
  100. data/spec/fixtures/account_get_all/multiple.xml +15 -0
  101. data/spec/fixtures/account_get_all/none.xml +8 -0
  102. data/spec/fixtures/account_get_all/single.xml +12 -0
  103. data/spec/fixtures/account_get_data_array/multiple.xml +69 -0
  104. data/spec/fixtures/company_get/success.xml +10 -0
  105. data/spec/fixtures/company_get_data/success.xml +32 -0
  106. data/spec/fixtures/current_invoice_line_create_from_data/success.xml +6 -37
  107. data/spec/fixtures/debtor_create_from_data/success.xml +5 -52
  108. data/spec/fixtures/debtor_get_orders/none.xml +9 -0
  109. data/spec/fixtures/product_create_from_data/success.xml +37 -0
  110. data/spec/fixtures/product_find_by_number/found.xml +10 -0
  111. data/spec/fixtures/product_find_by_number/not_found.xml +6 -0
  112. data/spec/fixtures/product_get_all/multiple.xml +15 -0
  113. data/spec/fixtures/product_get_all/single.xml +12 -0
  114. data/spec/fixtures/product_get_data/success.xml +37 -0
  115. data/spec/fixtures/product_get_data_array/multiple.xml +69 -0
  116. data/spec/spec_helper.rb +6 -9
  117. data/spec/support/factories.rb +14 -14
  118. metadata +54 -9
@@ -1,12 +1,10 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class EntryProxy < EntityProxy
5
5
  def find_by_date_interval(from_date, to_date)
6
- response = request('FindByDateInterval', {
7
- 'fromDate' => from_date,
8
- 'toDate' => to_date
9
- })
6
+ response = request("FindByDateInterval", "fromDate" => from_date,
7
+ "toDate" => to_date)
10
8
 
11
9
  build_array(response)
12
10
  end
@@ -17,25 +15,21 @@ module Economic
17
15
  # max_number = 2**31 - 1 # Maximum int32.
18
16
  #
19
17
  def find_by_serial_number_interval(min_number, max_number)
20
- response = request('FindBySerialNumberInterval', {
21
- 'minNumber' => min_number,
22
- 'maxNumber' => max_number
23
- })
18
+ response = request("FindBySerialNumberInterval", "minNumber" => min_number,
19
+ "maxNumber" => max_number)
24
20
 
25
21
  build_array(response)
26
22
  end
27
23
 
28
24
  def get_last_used_serial_number
29
- response = request('GetLastUsedSerialNumber')
25
+ response = request("GetLastUsedSerialNumber")
30
26
  response.to_i
31
27
  end
32
28
 
33
29
  def find(serial_number)
34
- response = request('GetData', {
35
- 'entityHandle' => {
36
- 'SerialNumber' => serial_number
37
- }
38
- })
30
+ response = request("GetData", "entityHandle" => {
31
+ "SerialNumber" => serial_number
32
+ })
39
33
 
40
34
  build(response)
41
35
  end
@@ -47,7 +41,7 @@ module Economic
47
41
  # [{:serial_number=>"1"}, {:serial_number=>"2"}] # Many results.
48
42
  # {:serial_number=>"1"} # One result.
49
43
  # nil # No results.
50
- entry_handles = [ response[:entry_handle] ].flatten.compact
44
+ entry_handles = [response[:entry_handle]].flatten.compact
51
45
 
52
46
  entry_handles.map do |entry_handle|
53
47
  entry_handle[:serial_number].to_i
@@ -1,6 +1,6 @@
1
- require 'economic/proxies/entity_proxy'
2
- require 'economic/proxies/actions/find_by_date_interval'
3
- require 'economic/proxies/actions/find_by_handle_with_number'
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_date_interval"
3
+ require "economic/proxies/actions/find_by_handle_with_number"
4
4
 
5
5
  module Economic
6
6
  class InvoiceProxy < EntityProxy
@@ -1,6 +1,6 @@
1
- require 'economic/proxies/entity_proxy'
2
- require 'economic/proxies/actions/find_by_date_interval'
3
- require 'economic/proxies/actions/find_by_handle_with_number'
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_date_interval"
3
+ require "economic/proxies/actions/find_by_handle_with_number"
4
4
 
5
5
  module Economic
6
6
  class OrderProxy < EntityProxy
@@ -0,0 +1,11 @@
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_ci_number"
3
+ require "economic/proxies/actions/find_by_handle_with_number"
4
+ require "economic/proxies/actions/find_by_number"
5
+
6
+ module Economic
7
+ class ProductProxy < EntityProxy
8
+ include FindByHandleWithNumber
9
+ include FindByNumber
10
+ end
11
+ end
@@ -1,4 +1,4 @@
1
- require 'forwardable'
1
+ require "forwardable"
2
2
 
3
3
  module Economic
4
4
  # The Economic::Session contains details and behaviors for a current
@@ -8,45 +8,62 @@ module Economic
8
8
 
9
9
  def_delegators :endpoint, :logger=, :log_level=, :log=
10
10
 
11
- attr_accessor :agreement_number, :user_name, :password
12
- attr_reader :authentication_token
11
+ attr_accessor :agreement_number, :user_name, :password, :app_identifier
12
+ attr_reader :authentication_cookies
13
13
 
14
- def initialize(agreement_number = nil, user_name = nil, password = nil)
14
+ def initialize(agreement_number = nil, user_name = nil, password = nil, app_identifier = nil)
15
15
  self.agreement_number = agreement_number
16
16
  self.user_name = user_name
17
17
  self.password = password
18
+ self.app_identifier = app_identifier
18
19
  yield endpoint if block_given?
19
20
  end
20
21
 
22
+ # Connect/authenticate with an API token and app id
23
+ #
24
+ # Reference: http://techtalk.e-conomic.com/why-were-implementing-a-new-api-connection-model/
25
+ #
26
+ # ==== Attributes
27
+ #
28
+ # * +private_app_id+ - The App ID created in your developer agreement
29
+ # * +access_id+ - The Access ID or token for your App ID
30
+ #
21
31
  def connect_with_token(private_app_id, access_id)
22
32
  endpoint.call(
23
33
  :connect_with_token,
24
- {
25
- :token => access_id,
26
- :appToken => private_app_id
27
- }
34
+ :token => access_id,
35
+ :appToken => private_app_id
28
36
  ) do |response|
29
- store_authentication_token(response)
37
+ store_authentication_cookies(response)
30
38
  end
31
39
  end
32
40
 
33
- def connect_with_credentials(agreement_number, user_name, password)
41
+ # Connect/authenticate with credentials
42
+ #
43
+ # ==== Attributes
44
+ #
45
+ # * +agreement_number+ - your economic agreement number
46
+ # * +user_name+ - your username
47
+ # * +password+ - your passsword
48
+ # * +app_identifier+ - A string identifiying your application, as described in http://techtalk.e-conomic.com/e-conomic-soap-api-now-requires-you-to-specify-a-custom-x-economicappidentifier-header/
49
+ #
50
+ def connect_with_credentials(agreement_number, user_name, password, app_identifier = nil)
51
+ self.app_identifier = app_identifier if app_identifier
52
+
34
53
  endpoint.call(
35
54
  :connect,
36
- {
37
- :agreementNumber => agreement_number,
38
- :userName => user_name,
39
- :password => password
40
- }
55
+ :agreementNumber => agreement_number,
56
+ :userName => user_name,
57
+ :password => password
41
58
  ) do |response|
42
- store_authentication_token(response)
59
+ store_authentication_cookies(response)
43
60
  end
44
61
  end
45
62
 
46
63
  # Authenticates with E-conomic using credentials
47
64
  # Assumes ::new was called with credentials as arguments.
48
65
  def connect
49
- connect_with_credentials(self.agreement_number, self.user_name, self.password)
66
+ connect_with_credentials(agreement_number, user_name, password, app_identifier)
50
67
  end
51
68
 
52
69
  # Provides access to the DebtorContacts
@@ -104,9 +121,18 @@ module Economic
104
121
  @entries ||= EntryProxy.new(self)
105
122
  end
106
123
 
124
+ # Provides access to products
125
+ def products
126
+ @products ||= ProductProxy.new(self)
127
+ end
128
+
129
+ def company
130
+ @company ||= CompanyProxy.new(self)
131
+ end
132
+
107
133
  # Requests an action from the API endpoint
108
134
  def request(soap_action, data = nil)
109
- endpoint.call(soap_action, data, authentication_token)
135
+ endpoint.call(soap_action, data, authentication_cookies)
110
136
  end
111
137
 
112
138
  # Returns self - used by proxies to access the session of their owner
@@ -116,13 +142,14 @@ module Economic
116
142
 
117
143
  # Returns the SOAP endpoint to connect to
118
144
  def endpoint
119
- @endpoint ||= Economic::Endpoint.new
145
+ @endpoint ||= Economic::Endpoint.new(app_identifier)
120
146
  end
121
147
 
122
148
  private
123
149
 
124
- def store_authentication_token(response)
125
- @authentication_token = response.http.cookies
150
+ def store_authentication_cookies(response)
151
+ cookies = response.http.cookies
152
+ @authentication_cookies = cookies
126
153
  end
127
154
  end
128
155
  end
@@ -2,18 +2,18 @@ module Economic
2
2
  module Support
3
3
  module String
4
4
  def self.camel_back(name)
5
- name[0,1].downcase + name[1..-1]
5
+ name[0, 1].downcase + name[1..-1]
6
6
  end
7
7
 
8
8
  def self.demodulize(class_name_in_module)
9
- class_name_in_module.to_s.gsub(/^.*::/, '')
9
+ class_name_in_module.to_s.gsub(/^.*::/, "")
10
10
  end
11
11
 
12
12
  def self.underscore(camel_cased_word)
13
13
  word = camel_cased_word.to_s.dup
14
- word.gsub!(/::/, '/')
15
- word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
16
- word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
14
+ word.gsub!(/::/, "/")
15
+ word.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
16
+ word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
17
17
  word.tr!("-", "_")
18
18
  word.downcase!
19
19
  word
@@ -1,3 +1,3 @@
1
1
  module Rconomic
2
- VERSION = "0.5.2"
2
+ VERSION = "0.6.0".freeze
3
3
  end
data/lib/rconomic.rb CHANGED
@@ -1,41 +1,47 @@
1
1
  # Dependencies
2
- require 'time'
3
- require 'savon'
2
+ require "time"
3
+ require "savon"
4
+ require "savon_ext/request"
4
5
 
5
- require 'economic/support/string'
6
- require 'economic/session'
6
+ require "economic/support/string"
7
+ require "economic/session"
7
8
 
8
- require 'economic/debtor'
9
- require 'economic/debtor_contact'
10
- require 'economic/creditor'
11
- require 'economic/creditor_contact'
12
- require 'economic/current_invoice'
13
- require 'economic/current_invoice_line'
14
- require 'economic/invoice'
15
- require 'economic/order'
16
- require 'economic/cash_book'
17
- require 'economic/cash_book_entry'
18
- require 'economic/account'
19
- require 'economic/debtor_entry'
20
- require 'economic/creditor_entry'
21
- require 'economic/entry'
9
+ require "economic/debtor"
10
+ require "economic/debtor_contact"
11
+ require "economic/creditor"
12
+ require "economic/creditor_contact"
13
+ require "economic/current_invoice"
14
+ require "economic/current_invoice_line"
15
+ require "economic/invoice"
16
+ require "economic/order"
17
+ require "economic/cash_book"
18
+ require "economic/cash_book_entry"
19
+ require "economic/account"
20
+ require "economic/debtor_entry"
21
+ require "economic/creditor_entry"
22
+ require "economic/entry"
23
+ require "economic/product"
24
+ require "economic/company"
22
25
 
23
- require 'economic/proxies/current_invoice_proxy'
24
- require 'economic/proxies/current_invoice_line_proxy'
25
- require 'economic/proxies/debtor_proxy'
26
- require 'economic/proxies/debtor_contact_proxy'
27
- require 'economic/proxies/creditor_proxy'
28
- require 'economic/proxies/creditor_contact_proxy'
29
- require 'economic/proxies/invoice_proxy'
30
- require 'economic/proxies/order_proxy'
31
- require 'economic/proxies/cash_book_proxy'
32
- require 'economic/proxies/cash_book_entry_proxy'
33
- require 'economic/proxies/account_proxy'
34
- require 'economic/proxies/debtor_entry_proxy'
35
- require 'economic/proxies/creditor_entry_proxy'
36
- require 'economic/proxies/entry_proxy'
26
+ require "economic/proxies/current_invoice_proxy"
27
+ require "economic/proxies/current_invoice_line_proxy"
28
+ require "economic/proxies/debtor_proxy"
29
+ require "economic/proxies/debtor_contact_proxy"
30
+ require "economic/proxies/creditor_proxy"
31
+ require "economic/proxies/creditor_contact_proxy"
32
+ require "economic/proxies/invoice_proxy"
33
+ require "economic/proxies/order_proxy"
34
+ require "economic/proxies/cash_book_proxy"
35
+ require "economic/proxies/cash_book_entry_proxy"
36
+ require "economic/proxies/account_proxy"
37
+ require "economic/proxies/debtor_entry_proxy"
38
+ require "economic/proxies/creditor_entry_proxy"
39
+ require "economic/proxies/entry_proxy"
40
+ require "economic/proxies/product_proxy"
41
+ require "economic/proxies/company_proxy"
37
42
 
38
- require 'economic/proxies/actions/find_by_name'
43
+ require "economic/proxies/actions/debtor_contact/all"
44
+ require "economic/proxies/actions/find_by_name"
39
45
 
40
46
  # http://www.e-conomic.com/apidocs/Documentation/index.html
41
47
  # https://www.e-conomic.com/secure/api1/EconomicWebService.asmx
@@ -46,4 +52,3 @@ require 'economic/proxies/actions/find_by_name'
46
52
 
47
53
  module Economic
48
54
  end
49
-
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Savon
4
+ class SOAPRequest < HTTPRequest
5
+ def build(options = {})
6
+ configure_proxy
7
+ configure_timeouts
8
+ configure_headers options[:soap_action]
9
+ configure_cookies options[:cookies]
10
+ configure_ssl
11
+ configure_auth
12
+ configure_redirect_handling
13
+
14
+ @http_request
15
+ end
16
+ end
17
+ end
data/rconomic.gemspec CHANGED
@@ -1,9 +1,9 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require 'rconomic/version'
2
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
3
+ require "rconomic/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
- s.name = 'rconomic'
6
+ s.name = "rconomic"
7
7
  s.summary = "Wrapper for e-conomic.dk's SOAP API."
8
8
  s.description = <<-EOS
9
9
  Ruby wrapper for the e-conomic SOAP API, that aims at making working with the API bearable.
@@ -11,15 +11,16 @@ Gem::Specification.new do |s|
11
11
  E-conomic is a web-based accounting system. For their marketing speak, see http://www.e-conomic.co.uk/about/. More details about their API at http://www.e-conomic.co.uk/integration/integration-partner/.
12
12
  EOS
13
13
  s.authors = ["Jakob Skjerning"]
14
- s.email = 'jakob@mentalized.net'
15
- s.homepage = 'https://github.com/lokalebasen/rconomic'
16
- s.license = 'MIT'
14
+ s.email = "jakob@mentalized.net"
15
+ s.homepage = "https://github.com/substancelab/rconomic"
16
+ s.license = "MIT"
17
17
  s.version = Rconomic::VERSION
18
18
  s.platform = Gem::Platform::RUBY
19
19
 
20
20
  s.add_runtime_dependency "savon", "~> 2.2"
21
+ s.add_development_dependency "rspec", "> 3.0"
21
22
 
22
- s.files = `git ls-files`.split("\n").reject { |filename| ['.gitignore'].include?(filename) }
23
+ s.files = `git ls-files`.split("\n").reject { |filename| [".gitignore"].include?(filename) }
23
24
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
24
25
  s.require_paths = ["lib"]
25
26
  end
@@ -1,4 +1,4 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::Account do
4
4
  let(:session) { make_session }
@@ -9,8 +9,8 @@ describe Economic::Account do
9
9
  end
10
10
 
11
11
  describe "#save" do
12
- it 'should save it' do
13
- stub_request('Account_CreateFromData', nil, :success)
12
+ it "should save it" do
13
+ stub_request("Account_CreateFromData", nil, :success)
14
14
  subject.save
15
15
  end
16
16
 
@@ -1,4 +1,4 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::CashBookEntry do
4
4
  let(:session) { make_session }
@@ -19,8 +19,8 @@ describe Economic::CashBookEntry do
19
19
  end
20
20
 
21
21
  describe "#save" do
22
- it 'should save it' do
23
- stub_request('CashBookEntry_CreateFromData', nil, :success)
22
+ it "should save it" do
23
+ stub_request("CashBookEntry_CreateFromData", nil, :success)
24
24
  subject.save
25
25
  end
26
26
 
@@ -46,5 +46,28 @@ describe Economic::CashBookEntry do
46
46
  )
47
47
  subject.save
48
48
  end
49
+
50
+ it "can build a CashBookEntry with a CreditorHandle" do
51
+ time = Time.now
52
+ subject.date = subject.start_date = time
53
+ subject.creditor_handle = Economic::Entity::Handle.new(:number => 12)
54
+ mock_request(
55
+ :cash_book_entry_create_from_data, {
56
+ "data" => {
57
+ "CreditorHandle" => {"Number" => 12},
58
+ "Date" => time,
59
+ "VoucherNumber" => 0,
60
+ "Text" => "",
61
+ "AmountDefaultCurrency" => 0,
62
+ "Amount" => 0,
63
+ "DueDate" => nil,
64
+ "StartDate" => time,
65
+ "EndDate" => nil
66
+ }
67
+ },
68
+ :success
69
+ )
70
+ subject.save
71
+ end
49
72
  end
50
73
  end
@@ -1,8 +1,8 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::CashBook do
4
4
  let(:session) { make_session }
5
- subject { (i = Economic::CashBook.new( :id => 512, :number => 32 )).tap { i.session = session } }
5
+ subject { (i = Economic::CashBook.new(:id => 512, :number => 32)).tap { i.session = session } }
6
6
 
7
7
  it "inherits from Economic::Entity" do
8
8
  expect(Economic::CashBook.superclass).to eq(Economic::Entity)
@@ -19,15 +19,15 @@ describe Economic::CashBook do
19
19
  end
20
20
 
21
21
  describe "#entries" do
22
- it 'should return a cash book entry proxy' do
22
+ it "should return a cash book entry proxy" do
23
23
  expect(subject.entries).to be_a(Economic::CashBookEntryProxy)
24
24
  expect(subject.entries.owner).to eq(subject)
25
25
  end
26
26
  end
27
27
 
28
28
  describe "#book" do
29
- it 'should book the cash book and return an invoice number' do
30
- mock_request("CashBook_Book", {'cashBookHandle' => { 'Number' => 32 }}, :success)
29
+ it "should book the cash book and return an invoice number" do
30
+ mock_request("CashBook_Book", {"cashBookHandle" => {"Number" => 32}}, :success)
31
31
  expect(subject.book).to eq(832)
32
32
  end
33
33
  end
@@ -37,8 +37,8 @@ describe Economic::CashBook do
37
37
  subject.persisted = true
38
38
  end
39
39
 
40
- it 'should save it' do
41
- stub_request('CashBook_UpdateFromData', nil, :success)
40
+ it "should save it" do
41
+ stub_request("CashBook_UpdateFromData", nil, :success)
42
42
  subject.save
43
43
  end
44
44
 
@@ -0,0 +1,20 @@
1
+ require "./spec/spec_helper"
2
+
3
+ describe Economic::Company do
4
+ let(:session) { make_session }
5
+ subject { Economic::Company.new(:session => session) }
6
+
7
+ it "inherits from Economic::Entity" do
8
+ expect(Economic::Company.ancestors).to include(Economic::Entity)
9
+ end
10
+
11
+ describe ".proxy" do
12
+ it "should return a CompanyProxy" do
13
+ expect(subject.proxy).to be_instance_of(Economic::CompanyProxy)
14
+ end
15
+
16
+ it "should return a proxy owned by session" do
17
+ expect(subject.proxy.session).to eq(session)
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::CreditorContact do
4
4
  let(:session) { make_session }
@@ -42,7 +42,7 @@ describe Economic::CreditorContact do
42
42
  end
43
43
 
44
44
  context "when creditor_handle is set" do
45
- let(:handle) { Economic::CreditorContact::Handle.new({:number => 42}) }
45
+ let(:handle) { Economic::CreditorContact::Handle.new(:number => 42) }
46
46
 
47
47
  before :each do
48
48
  subject.creditor_handle = handle
@@ -83,8 +83,8 @@ describe Economic::CreditorContact do
83
83
  end
84
84
 
85
85
  it "should clear cached creditor and fetch the new creditor from API" do
86
- stub_request('Creditor_GetData', nil, :success)
87
- subject.creditor_handle = Economic::Creditor::Handle.new({:number => 1234})
86
+ stub_request("Creditor_GetData", nil, :success)
87
+ subject.creditor_handle = Economic::Creditor::Handle.new(:number => 1234)
88
88
  expect(subject.creditor).to be_instance_of(Economic::Creditor)
89
89
  end
90
90
  end
@@ -111,5 +111,4 @@ describe Economic::CreditorContact do
111
111
  expect(subject.proxy.session).to eq(session)
112
112
  end
113
113
  end
114
-
115
114
  end
@@ -0,0 +1,20 @@
1
+ require "./spec/spec_helper"
2
+
3
+ describe Economic::CreditorEntry do
4
+ let(:session) { make_session }
5
+ subject { Economic::CreditorEntry.new(:session => session) }
6
+
7
+ it "inherits from Economic::Entity" do
8
+ expect(subject).to be_a(Economic::Entity)
9
+ end
10
+
11
+ describe "#proxy" do
12
+ it "should return a CreditorEntryProxy" do
13
+ expect(subject.proxy).to be_instance_of(Economic::CreditorEntryProxy)
14
+ end
15
+
16
+ it "should return a proxy owned by session" do
17
+ expect(subject.proxy.session).to eq(session)
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::Creditor do
4
4
  let(:session) { make_session }
@@ -50,8 +50,8 @@ describe Economic::Creditor do
50
50
  end
51
51
 
52
52
  describe "#save" do
53
- it 'should save it' do
54
- stub_request('Creditor_CreateFromData', nil, :success)
53
+ it "should save it" do
54
+ stub_request("Creditor_CreateFromData", nil, :success)
55
55
  subject.save
56
56
  end
57
57
 
@@ -1,4 +1,4 @@
1
- require './spec/spec_helper'
1
+ require "./spec/spec_helper"
2
2
 
3
3
  describe Economic::CurrentInvoiceLine do
4
4
  let(:session) { make_session }
@@ -17,8 +17,8 @@ describe Economic::CurrentInvoiceLine do
17
17
  end
18
18
 
19
19
  it "should not be equal when numbers are different" do
20
- line1 = Economic::CurrentInvoiceLine.new({:number => 1})
21
- line2 = Economic::CurrentInvoiceLine.new({:number => 2})
20
+ line1 = Economic::CurrentInvoiceLine.new(:number => 1)
21
+ line2 = Economic::CurrentInvoiceLine.new(:number => 2)
22
22
 
23
23
  expect(line1).not_to eq(line2)
24
24
  end