fortnox-api 0.8.0 → 0.8.1

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 (197) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -0
  3. data/.rubocop.yml +1 -1
  4. data/.tool-versions +1 -0
  5. data/.travis.yml +5 -3
  6. data/CHANGELOG.md +37 -3
  7. data/fortnox-api.gemspec +22 -17
  8. data/lib/fortnox/api/mappers/article.rb +1 -1
  9. data/lib/fortnox/api/mappers/base/from_json.rb +1 -1
  10. data/lib/fortnox/api/mappers/base/to_json.rb +2 -2
  11. data/lib/fortnox/api/mappers/base.rb +3 -3
  12. data/lib/fortnox/api/mappers/customer.rb +1 -1
  13. data/lib/fortnox/api/mappers/default_delivery_types.rb +1 -1
  14. data/lib/fortnox/api/mappers/default_templates.rb +1 -1
  15. data/lib/fortnox/api/mappers/edi_information.rb +1 -1
  16. data/lib/fortnox/api/mappers/email_information.rb +1 -1
  17. data/lib/fortnox/api/mappers/invoice.rb +4 -4
  18. data/lib/fortnox/api/mappers/invoice_row.rb +1 -1
  19. data/lib/fortnox/api/mappers/order.rb +4 -4
  20. data/lib/fortnox/api/mappers/order_row.rb +1 -1
  21. data/lib/fortnox/api/mappers/project.rb +1 -1
  22. data/lib/fortnox/api/mappers/terms_of_payment.rb +1 -1
  23. data/lib/fortnox/api/mappers/unit.rb +1 -1
  24. data/lib/fortnox/api/mappers/value/country_string.rb +1 -1
  25. data/lib/fortnox/api/mappers.rb +18 -18
  26. data/lib/fortnox/api/models/article.rb +2 -2
  27. data/lib/fortnox/api/models/base.rb +14 -14
  28. data/lib/fortnox/api/models/customer.rb +2 -2
  29. data/lib/fortnox/api/models/document.rb +2 -2
  30. data/lib/fortnox/api/models/invoice.rb +2 -2
  31. data/lib/fortnox/api/models/label.rb +1 -1
  32. data/lib/fortnox/api/models/order.rb +2 -2
  33. data/lib/fortnox/api/models/project.rb +2 -2
  34. data/lib/fortnox/api/models/terms_of_payment.rb +2 -2
  35. data/lib/fortnox/api/models/unit.rb +2 -2
  36. data/lib/fortnox/api/models.rb +7 -7
  37. data/lib/fortnox/api/repositories/article.rb +3 -3
  38. data/lib/fortnox/api/repositories/base.rb +4 -3
  39. data/lib/fortnox/api/repositories/customer.rb +3 -3
  40. data/lib/fortnox/api/repositories/invoice.rb +3 -3
  41. data/lib/fortnox/api/repositories/order.rb +3 -3
  42. data/lib/fortnox/api/repositories/project.rb +3 -3
  43. data/lib/fortnox/api/repositories/terms_of_payment.rb +3 -3
  44. data/lib/fortnox/api/repositories/unit.rb +3 -3
  45. data/lib/fortnox/api/repositories.rb +7 -7
  46. data/lib/fortnox/api/types/default_delivery_types.rb +0 -2
  47. data/lib/fortnox/api/types/default_templates.rb +0 -2
  48. data/lib/fortnox/api/types/edi_information.rb +0 -2
  49. data/lib/fortnox/api/types/email_information.rb +0 -2
  50. data/lib/fortnox/api/types/invoice_row.rb +1 -1
  51. data/lib/fortnox/api/types/model.rb +4 -6
  52. data/lib/fortnox/api/types/nullable.rb +13 -9
  53. data/lib/fortnox/api/types/order_row.rb +1 -1
  54. data/lib/fortnox/api/types/required.rb +3 -3
  55. data/lib/fortnox/api/types/sized.rb +2 -2
  56. data/lib/fortnox/api/types.rb +17 -22
  57. data/lib/fortnox/api/version.rb +1 -1
  58. data/lib/fortnox/api.rb +18 -16
  59. data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +9 -7
  60. data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +1 -1
  61. data/spec/fortnox/api/mappers/examples/mapper.rb +1 -1
  62. data/spec/fortnox/api/models/base_spec.rb +8 -8
  63. data/spec/fortnox/api/repositories/article_spec.rb +2 -2
  64. data/spec/fortnox/api/repositories/base_spec.rb +4 -12
  65. data/spec/fortnox/api/repositories/customer_spec.rb +1 -1
  66. data/spec/fortnox/api/repositories/invoice_spec.rb +0 -6
  67. data/spec/fortnox/api/repositories/project_spec.rb +1 -1
  68. data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +2 -2
  69. data/spec/fortnox/api/repositories/unit_spec.rb +3 -3
  70. data/spec/fortnox/api/types/housework_types_spec.rb +0 -29
  71. data/spec/fortnox/api/types/model_spec.rb +11 -17
  72. data/spec/fortnox/api/types/nullable_spec.rb +30 -10
  73. data/spec/fortnox/api/types/required_spec.rb +1 -4
  74. data/spec/support/matchers/type/enum_matcher.rb +1 -1
  75. data/spec/support/matchers/type/have_account_number_matcher.rb +1 -1
  76. data/spec/support/matchers/type/have_email_matcher.rb +1 -1
  77. data/spec/support/matchers/type/have_nullable_date_matcher.rb +5 -5
  78. data/spec/support/matchers/type/have_nullable_string_matcher.rb +3 -3
  79. data/spec/vcr_cassettes/articles/all.yml +30 -20
  80. data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +25 -19
  81. data/spec/vcr_cassettes/articles/find_failure.yml +25 -19
  82. data/spec/vcr_cassettes/articles/find_id_1.yml +26 -20
  83. data/spec/vcr_cassettes/articles/find_new.yml +28 -22
  84. data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +25 -19
  85. data/spec/vcr_cassettes/articles/save_new.yml +27 -21
  86. data/spec/vcr_cassettes/articles/save_old.yml +28 -22
  87. data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +27 -21
  88. data/spec/vcr_cassettes/articles/search_by_name.yml +25 -19
  89. data/spec/vcr_cassettes/articles/search_miss.yml +25 -19
  90. data/spec/vcr_cassettes/articles/search_with_special_char.yml +25 -19
  91. data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +28 -21
  92. data/spec/vcr_cassettes/customers/all.yml +26 -20
  93. data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +25 -19
  94. data/spec/vcr_cassettes/customers/find_failure.yml +25 -19
  95. data/spec/vcr_cassettes/customers/find_id_1.yml +25 -19
  96. data/spec/vcr_cassettes/customers/find_new.yml +27 -21
  97. data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +25 -19
  98. data/spec/vcr_cassettes/customers/save_new.yml +26 -20
  99. data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +26 -20
  100. data/spec/vcr_cassettes/customers/save_old.yml +27 -21
  101. data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +26 -20
  102. data/spec/vcr_cassettes/customers/search_by_name.yml +28 -20
  103. data/spec/vcr_cassettes/customers/search_miss.yml +25 -19
  104. data/spec/vcr_cassettes/customers/search_with_special_char.yml +25 -19
  105. data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +25 -19
  106. data/spec/vcr_cassettes/invoices/all.yml +26 -20
  107. data/spec/vcr_cassettes/invoices/filter_hit.yml +25 -19
  108. data/spec/vcr_cassettes/invoices/filter_invalid.yml +25 -19
  109. data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +25 -19
  110. data/spec/vcr_cassettes/invoices/find_failure.yml +25 -19
  111. data/spec/vcr_cassettes/invoices/find_id_1.yml +26 -20
  112. data/spec/vcr_cassettes/invoices/find_new.yml +30 -24
  113. data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +25 -19
  114. data/spec/vcr_cassettes/invoices/save_new.yml +29 -23
  115. data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +29 -23
  116. data/spec/vcr_cassettes/invoices/save_new_with_country.yml +28 -22
  117. data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +29 -23
  118. data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +28 -22
  119. data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +28 -22
  120. data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +28 -22
  121. data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +29 -23
  122. data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +29 -23
  123. data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +28 -22
  124. data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +28 -22
  125. data/spec/vcr_cassettes/invoices/save_old.yml +30 -24
  126. data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +30 -24
  127. data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +29 -23
  128. data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +30 -24
  129. data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +29 -23
  130. data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +28 -22
  131. data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +28 -22
  132. data/spec/vcr_cassettes/invoices/search_by_name.yml +25 -19
  133. data/spec/vcr_cassettes/invoices/search_miss.yml +25 -19
  134. data/spec/vcr_cassettes/invoices/search_with_special_char.yml +25 -19
  135. data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +25 -19
  136. data/spec/vcr_cassettes/orders/all.yml +26 -20
  137. data/spec/vcr_cassettes/orders/filter_hit.yml +25 -19
  138. data/spec/vcr_cassettes/orders/filter_invalid.yml +25 -19
  139. data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +25 -19
  140. data/spec/vcr_cassettes/orders/find_failure.yml +25 -19
  141. data/spec/vcr_cassettes/orders/find_id_1.yml +25 -19
  142. data/spec/vcr_cassettes/orders/find_new.yml +29 -23
  143. data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +25 -19
  144. data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +25 -19
  145. data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +28 -22
  146. data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +28 -22
  147. data/spec/vcr_cassettes/orders/housework_type_construction.yml +28 -22
  148. data/spec/vcr_cassettes/orders/housework_type_cooking.yml +25 -19
  149. data/spec/vcr_cassettes/orders/housework_type_electricity.yml +28 -22
  150. data/spec/vcr_cassettes/orders/housework_type_gardening.yml +28 -22
  151. data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +28 -22
  152. data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +28 -22
  153. data/spec/vcr_cassettes/orders/housework_type_hvac.yml +28 -22
  154. data/spec/vcr_cassettes/orders/housework_type_itservices.yml +28 -22
  155. data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +28 -22
  156. data/spec/vcr_cassettes/orders/housework_type_masonry.yml +28 -22
  157. data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +28 -22
  158. data/spec/vcr_cassettes/orders/housework_type_othercare.yml +28 -22
  159. data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +28 -22
  160. data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +28 -22
  161. data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +28 -22
  162. data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +28 -22
  163. data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +25 -19
  164. data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +25 -19
  165. data/spec/vcr_cassettes/orders/save_new.yml +28 -22
  166. data/spec/vcr_cassettes/orders/save_old.yml +29 -23
  167. data/spec/vcr_cassettes/orders/save_with_nested_model.yml +28 -22
  168. data/spec/vcr_cassettes/orders/search_by_name.yml +25 -19
  169. data/spec/vcr_cassettes/orders/search_miss.yml +25 -19
  170. data/spec/vcr_cassettes/orders/search_with_special_char.yml +25 -19
  171. data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +25 -19
  172. data/spec/vcr_cassettes/projects/all.yml +31 -21
  173. data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +25 -19
  174. data/spec/vcr_cassettes/projects/find_failure.yml +25 -19
  175. data/spec/vcr_cassettes/projects/find_id_1.yml +25 -19
  176. data/spec/vcr_cassettes/projects/find_new.yml +28 -22
  177. data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +26 -20
  178. data/spec/vcr_cassettes/projects/save_new.yml +27 -21
  179. data/spec/vcr_cassettes/projects/save_old.yml +28 -22
  180. data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +26 -20
  181. data/spec/vcr_cassettes/termsofpayments/all.yml +34 -27
  182. data/spec/vcr_cassettes/termsofpayments/find_failure.yml +25 -19
  183. data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +25 -19
  184. data/spec/vcr_cassettes/termsofpayments/find_new.yml +27 -21
  185. data/spec/vcr_cassettes/termsofpayments/save_new.yml +27 -21
  186. data/spec/vcr_cassettes/termsofpayments/save_old.yml +27 -21
  187. data/spec/vcr_cassettes/units/all.yml +36 -28
  188. data/spec/vcr_cassettes/units/find_failure.yml +25 -19
  189. data/spec/vcr_cassettes/units/find_id_1.yml +26 -20
  190. data/spec/vcr_cassettes/units/find_new.yml +27 -21
  191. data/spec/vcr_cassettes/units/save_new.yml +27 -21
  192. data/spec/vcr_cassettes/units/save_old.yml +27 -21
  193. data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +27 -21
  194. metadata +107 -47
  195. data/spec/support/helpers/dummy_class_helper.rb +0 -38
  196. data/spec/vcr_cassettes/invoices/save_new_with_country_KR.yml +0 -61
  197. data/spec/vcr_cassettes/orders/housework_without_tax_reduction_type.yml +0 -57
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 02c5fbd6c659d3c6cc4e9ed8dfef6e739ded62fc33107623f4dddc13d33f6672
4
- data.tar.gz: 14f0815a2fd32e98055d71ef231da2b6fac4b95ecfd9dfcda59b88d1c1445c63
3
+ metadata.gz: 7d28f8cb3667dac63023e514d6c5203ba795a8c1c2598bbf538e49f58528cbc1
4
+ data.tar.gz: 127841e8b5d6a64d2b37408960e9659da918fcc9135d821098d281d508e337ca
5
5
  SHA512:
6
- metadata.gz: 293665ff9e0b860e88c7c6c78fbcfdd0b8a8047444f23cd0560d504442e1a0ac3439c52349413cac63e0c5973d1db74dabcf7ebdd9c10bc3f1b7de922db58cbc
7
- data.tar.gz: 011b4785ce46af9c4cd57939431f6b09dc6ab44d650023616fe7b0784dcde890727999eb918ac3c3db311afaaff8785d240c54e5c30f198a630b9a1bf41483b7
6
+ metadata.gz: 4a9557fb4ecacf5d545c26d8894953793268b37a3c8a603a8095e239536d97871712140a6c3bc1f0596708913f369584633fee7e903a3f8ae4be99c47297418d
7
+ data.tar.gz: 244727089a11d031ec9e8afafa93d80c4b3ee87d1eb9c7f6ff57a8d26751d78304bc34073c095328f61edc580abeff44dba3f275e28346dea024b292e114126a
data/.codeclimate.yml CHANGED
@@ -12,6 +12,7 @@ engines:
12
12
  enabled: false
13
13
  rubocop:
14
14
  enabled: true
15
+ channel: rubocop-1-39-0
15
16
  ratings:
16
17
  paths:
17
18
  - "**.rb"
data/.rubocop.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  require: rubocop-rspec
2
2
 
3
3
  AllCops:
4
- TargetRubyVersion: 2.5
4
+ TargetRubyVersion: 2.7
5
5
  DisplayCopNames: true
6
6
 
7
7
  RSpec/FilePath:
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.2.0
data/.travis.yml CHANGED
@@ -3,9 +3,11 @@ env:
3
3
  - CC_TEST_REPORTER_ID=43ea0acb059b164537ce31bf67e03e1cb552d63df1ad3e9bd95dc3d844697bb4
4
4
  language: ruby
5
5
  rvm:
6
- - 2.5.8
7
- - 2.6.6
8
- - 2.7.1
6
+ - 2.7.7
7
+ - 3.0.5
8
+ - 3.1.3
9
+ - 3.2.0
10
+
9
11
  notifications:
10
12
  slack:
11
13
  secure: UEYDtwLaQgAoMRY7ct1y0Uu5HbInMwrLo+TiYRc3rjDrzqDfDyInEr3bpckyPJ79lnzccrFezMdY4jWzRjmsvQzvYMu+DWJ1mAWOa/9Ws4YZ8nHd5KqXxVQ0EqPWuWwMOyOdyy3DK/MjUOobGSc0//Pv5DeaAAEBKLJzN+e1BQM=
data/CHANGELOG.md CHANGED
@@ -1,46 +1,80 @@
1
1
  # Changelog
2
+
2
3
  All notable changes to this project will be documented in this file.
3
4
 
4
5
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
+ and this project adheres to
7
+ [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
+
9
+ ## [0.8.1]
10
+
11
+ ### Fixed
12
+
13
+ - Missing runtime dependencies dry-configurable and dry-container is added.
14
+ Those were indirect dependencies before via other dry libs, but we use them
15
+ explicitly in the gem, so they should be included as real dependencies. Also,
16
+ newer versions of these gems did actually break the gem.
17
+
18
+ ### Removed
19
+
20
+ - **Breaking** Drops support for Ruby 2.6 since it's reached end of life
21
+ - Token rotation is removed since Fortnox counts rate limit on tenant and client
22
+ id. Before, you could get around this by using multiple access tokens. That's
23
+ not possible anymore, so token rotation is simply removed.
6
24
 
7
25
  ## [0.8.0]
26
+
8
27
  ### Changed
28
+
9
29
  - `Fortnox::API::CURRENT_HOUSEWORK_TYPES` is now renamed to `HOUSEWORK_TYPES`
10
- and is instead a Hash with keys for the different categories of types.
11
- It also includes legacy types, which means `Fortnox::API::LEGACY_HOUSEWORK_TYPES` is removed.
30
+ and is instead a Hash with keys for the different categories of types. It also
31
+ includes legacy types, which means `Fortnox::API::LEGACY_HOUSEWORK_TYPES` is
32
+ removed.
12
33
 
13
34
  ### Removed
35
+
14
36
  - Drops support for Ruby < `2.5.0` since they are deprecated
15
37
 
16
38
  ## [0.7.2]
39
+
17
40
  ### Fixed
41
+
18
42
  - Invalid validation for Customer's account number attribute
19
43
 
20
44
  ## [0.7.1]
45
+
21
46
  ### Fixed
47
+
22
48
  - Invalid validation for Customer's country attributes
23
49
 
24
50
  ## [0.7.0]
51
+
25
52
  ### Added
53
+
26
54
  - Adds build test for Ruby `2.6.0`, `2.6.3` and `2.7.0-preview`.
27
55
 
28
56
  ### Removed
57
+
29
58
  - Drops support for Ruby < `2.4.0` since they are deprecated
30
59
 
31
60
  ### Fixed
61
+
32
62
  - Country attribute for `Invoice` and `Order` is now validated correctly.
33
63
  - Fixes deprecation warnings
34
64
  - Unlocks pinned `HTTParty` version
35
65
  - Invalid email validation
36
66
 
37
67
  ## [0.6.3]
68
+
38
69
  ### Changed
70
+
39
71
  - Pins `dry-types` to `< 0.13.0` due to breaking changes
40
72
 
41
73
  ### Fixed
74
+
42
75
  - Model attribute `url` is no longer null
43
76
 
77
+ [0.8.1]: https://github.com/accodeing/fortnox-api/compare/v0.8.0...v0.8.1
44
78
  [0.8.0]: https://github.com/accodeing/fortnox-api/compare/v0.7.2...v0.8.0
45
79
  [0.7.2]: https://github.com/accodeing/fortnox-api/compare/v0.7.1...v0.7.2
46
80
  [0.7.1]: https://github.com/accodeing/fortnox-api/compare/v0.7.0...v0.7.1
data/fortnox-api.gemspec CHANGED
@@ -3,12 +3,12 @@
3
3
 
4
4
  lib = File.expand_path('../lib', __FILE__)
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
- require 'fortnox/api/version'
6
+ require_relative 'lib/fortnox/api/version'
7
7
 
8
- Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
8
+ Gem::Specification.new do |spec|
9
9
  spec.name = 'fortnox-api'
10
10
  spec.version = Fortnox::API::VERSION
11
- spec.authors = ['Jonas Schubert Erlandsson', 'Hannes Elvemyr', 'Felix Holmgren']
11
+ spec.authors = ['Jonas Schubert Erlandsson', 'Hannes Elvemyr', 'Felix Holmgren', 'Mike Eirih']
12
12
  spec.email = ['info@accodeing.com']
13
13
  spec.summary = 'Gem to use Fortnox REST API in Ruby.'
14
14
  spec.description = 'This gem uses the HTTParty library to abstract away the REST calls. It gives you access to a '\
@@ -23,22 +23,27 @@ Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength
23
23
  spec.test_files = spec.files.grep(%r{^(spec)/})
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.required_ruby_version = '>= 2.5'
27
- spec.add_dependency 'countries', '~> 3.0'
28
- spec.add_dependency 'dry-struct', '~> 0.1'
29
- spec.add_dependency 'dry-types', '~> 0.8', '< 0.13.0'
26
+ spec.required_ruby_version = '>= 2.7'
27
+ spec.add_dependency 'countries', '~> 5.0'
28
+ spec.add_dependency 'dry-configurable', '~> 1.0'
29
+ spec.add_dependency 'dry-container', '~> 0.10'
30
+ spec.add_dependency 'dry-struct', '~> 1.6'
31
+ spec.add_dependency 'dry-types', '~> 1.7'
30
32
  spec.add_dependency 'httparty', '~> 0.17'
33
+ spec.add_dependency 'jwt', '~> 2.3'
31
34
 
32
- spec.add_development_dependency 'bundler', '~> 2.0'
33
- spec.add_development_dependency 'guard', '~> 2.12'
34
- spec.add_development_dependency 'guard-rspec', '~> 4.5'
35
+ spec.add_development_dependency 'bundler', '~> 2.4'
36
+ spec.add_development_dependency 'dotenv', '~> 2.8'
37
+ spec.add_development_dependency 'guard', '~> 2.18'
38
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
35
39
  spec.add_development_dependency 'pry', '~> 0'
36
- spec.add_development_dependency 'rake', '>= 12.3.3'
37
- spec.add_development_dependency 'rspec', '~> 3.2'
40
+ spec.add_development_dependency 'rake', '~> 13.0'
41
+ spec.add_development_dependency 'rspec', '~> 3.12'
38
42
  spec.add_development_dependency 'rspec-collection_matchers', '~> 0'
39
- spec.add_development_dependency 'rubocop', '~> 0.52.0'
40
- spec.add_development_dependency 'rubocop-rspec', '~> 1.22.2'
41
- spec.add_development_dependency 'simplecov', '~> 0.15'
42
- spec.add_development_dependency 'vcr', '~> 4.0'
43
- spec.add_development_dependency 'webmock', '~> 3.5'
43
+ spec.add_development_dependency 'rubocop', '~> 1.39.0'
44
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.16.0'
45
+ spec.add_development_dependency 'simplecov', '~> 0.22'
46
+ spec.add_development_dependency 'timecop', '~> 0.9.6'
47
+ spec.add_development_dependency 'vcr', '~> 6.1'
48
+ spec.add_development_dependency 'webmock', '~> 3.18'
44
49
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -50,7 +50,7 @@ module Fortnox
50
50
 
51
51
  raise MissingModelOrMapperException, message if ENV['RUBY_ENV']
52
52
  Fortnox::API.logger.warn("Missing Model or Mapper implementation for #{key} with attributes: #{collection}")
53
- return convert_hash_keys_from_json_format(collection, {})
53
+ convert_hash_keys_from_json_format(collection, {})
54
54
  end
55
55
  end
56
56
 
@@ -25,8 +25,8 @@ module Fortnox
25
25
  # PRIVATE
26
26
 
27
27
  def convert_hash_keys_to_json_format(hash)
28
- hash.each_with_object({}) do |(key, value), json_hash|
29
- json_hash[convert_key_to_json(key)] = value
28
+ hash.transform_keys do |key|
29
+ convert_key_to_json(key)
30
30
  end
31
31
  end
32
32
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base/canonical_name_sym'
4
- require 'fortnox/api/mappers/base/from_json'
5
- require 'fortnox/api/mappers/base/to_json'
3
+ require_relative 'base/canonical_name_sym'
4
+ require_relative 'base/from_json'
5
+ require_relative 'base/to_json'
6
6
 
7
7
  module Fortnox
8
8
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
4
- require 'fortnox/api/mappers/edi_information'
5
- require 'fortnox/api/mappers/email_information'
6
- require 'fortnox/api/mappers/invoice_row'
3
+ require_relative 'base'
4
+ require_relative 'edi_information'
5
+ require_relative 'email_information'
6
+ require_relative 'invoice_row'
7
7
 
8
8
  module Fortnox
9
9
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
4
- require 'fortnox/api/mappers/edi_information'
5
- require 'fortnox/api/mappers/email_information'
6
- require 'fortnox/api/mappers/order_row'
3
+ require_relative 'base'
4
+ require_relative 'edi_information'
5
+ require_relative 'email_information'
6
+ require_relative 'order_row'
7
7
 
8
8
  module Fortnox
9
9
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base'
3
+ require_relative 'base'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/mappers/base/canonical_name_sym'
3
+ require_relative '../base/canonical_name_sym'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,21 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
3
+ require_relative 'types'
4
4
 
5
- require 'fortnox/api/mappers/value/array'
6
- require 'fortnox/api/mappers/value/country_string'
7
- require 'fortnox/api/mappers/value/date'
8
- require 'fortnox/api/mappers/value/hash'
9
- require 'fortnox/api/mappers/value/identity'
10
- require 'fortnox/api/mappers/customer'
11
- require 'fortnox/api/mappers/default_delivery_types'
12
- require 'fortnox/api/mappers/default_templates'
13
- require 'fortnox/api/mappers/edi_information'
14
- require 'fortnox/api/mappers/email_information'
15
- require 'fortnox/api/mappers/invoice_row'
16
- require 'fortnox/api/mappers/invoice'
17
- require 'fortnox/api/mappers/order_row'
18
- require 'fortnox/api/mappers/order'
19
- require 'fortnox/api/mappers/project'
20
- require 'fortnox/api/mappers/unit'
21
- require 'fortnox/api/mappers/terms_of_payment'
5
+ require_relative 'mappers/value/array'
6
+ require_relative 'mappers/value/country_string'
7
+ require_relative 'mappers/value/date'
8
+ require_relative 'mappers/value/hash'
9
+ require_relative 'mappers/value/identity'
10
+ require_relative 'mappers/customer'
11
+ require_relative 'mappers/default_delivery_types'
12
+ require_relative 'mappers/default_templates'
13
+ require_relative 'mappers/edi_information'
14
+ require_relative 'mappers/email_information'
15
+ require_relative 'mappers/invoice_row'
16
+ require_relative 'mappers/invoice'
17
+ require_relative 'mappers/order_row'
18
+ require_relative 'mappers/order'
19
+ require_relative 'mappers/project'
20
+ require_relative 'mappers/unit'
21
+ require_relative 'mappers/terms_of_payment'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/base'
3
+ require_relative 'base'
4
+ require_relative '../types'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
3
  require 'ice_nine'
5
4
 
5
+ require_relative '../types'
6
+
6
7
  module Fortnox
7
8
  module API
8
9
  module Model
@@ -36,6 +37,10 @@ module Fortnox
36
37
  new(self::STUB.dup)
37
38
  end
38
39
 
40
+ def unique_id
41
+ send(self.class::UNIQUE_ID)
42
+ end
43
+
39
44
  # This filtering logic could be improved since it is currently O(N*M).
40
45
  def attributes(*options)
41
46
  return self.class.schema if options.nil?
@@ -47,8 +52,13 @@ module Fortnox
47
52
  end
48
53
  end
49
54
 
50
- def unique_id
51
- send(self.class::UNIQUE_ID)
55
+ def to_hash(recursive = false)
56
+ return super() if recursive
57
+
58
+ self.class.schema.each_with_object({}) do |key, result|
59
+ # Only output attributes that have a value set
60
+ result[key.name] = self[key.name] if self.send("#{key.name}?")
61
+ end
52
62
  end
53
63
 
54
64
  def update(hash)
@@ -85,19 +95,9 @@ module Fortnox
85
95
  @parent || self.class.new(self.class::STUB.dup)
86
96
  end
87
97
 
88
- def to_hash(recursive = false)
89
- return super() if recursive
90
-
91
- self.class.schema.keys.each_with_object({}) do |key, result|
92
- result[key] = self[key]
93
- end
94
- end
95
-
96
- private_class_method
97
-
98
98
  # dry-types filter anything that isn't specified as an attribute on the
99
99
  # class that is being instantiated. This wrapper preserves the meta
100
- # properties we need to track object state during that initilisation and
100
+ # properties we need to track object state during that initialisation and
101
101
  # sets them on the object after dry-types is done with it.
102
102
  def self.preserve_meta_properties(hash)
103
103
  is_unsaved = hash.delete(:unsaved) { true }
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/base'
3
+ require_relative 'base'
4
+ require_relative '../types'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/label'
3
+ require_relative '../types'
4
+ require_relative 'label'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/models/base'
4
- require 'fortnox/api/models/document'
3
+ require_relative 'base'
4
+ require_relative 'document'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
3
+ require_relative '../types'
4
4
 
5
5
  module Fortnox
6
6
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/models/base'
4
- require 'fortnox/api/models/document'
3
+ require_relative 'base'
4
+ require_relative 'document'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/base'
3
+ require_relative 'base'
4
+ require_relative '../types'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/base'
3
+ require_relative '../types'
4
+ require_relative '../models/base'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/models/base'
3
+ require_relative 'base'
4
+ require_relative '../types'
5
5
 
6
6
  module Fortnox
7
7
  module API
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/models/article'
4
- require 'fortnox/api/models/customer'
5
- require 'fortnox/api/models/invoice'
6
- require 'fortnox/api/models/order'
7
- require 'fortnox/api/models/project'
8
- require 'fortnox/api/models/unit'
9
- require 'fortnox/api/models/terms_of_payment'
3
+ require_relative 'models/article'
4
+ require_relative 'models/customer'
5
+ require_relative 'models/invoice'
6
+ require_relative 'models/order'
7
+ require_relative 'models/project'
8
+ require_relative 'models/unit'
9
+ require_relative 'models/terms_of_payment'
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/repositories/base'
4
- require 'fortnox/api/models/article'
5
- require 'fortnox/api/mappers/article'
3
+ require_relative 'base'
4
+ require_relative '../models/article'
5
+ require_relative '../mappers/article'
6
6
 
7
7
  module Fortnox
8
8
  module API
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'httparty'
4
- require 'fortnox/api/request_handling'
5
- require 'fortnox/api/repositories/base/loaders'
6
- require 'fortnox/api/repositories/base/savers'
4
+
5
+ require_relative 'base/loaders'
6
+ require_relative 'base/savers'
7
+ require_relative '../request_handling'
7
8
 
8
9
  module Fortnox
9
10
  module API
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/repositories/base'
4
- require 'fortnox/api/models/customer'
5
- require 'fortnox/api/mappers/customer'
3
+ require_relative 'base'
4
+ require_relative '../models/customer'
5
+ require_relative '../mappers/customer'
6
6
 
7
7
  module Fortnox
8
8
  module API
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fortnox/api/repositories/base'
4
- require 'fortnox/api/models/invoice'
5
- require 'fortnox/api/mappers/invoice'
3
+ require_relative 'base'
4
+ require_relative '../models/invoice'
5
+ require_relative '../mappers/invoice'
6
6
 
7
7
  module Fortnox
8
8
  module API