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.
- checksums.yaml +4 -4
- data/.codeclimate.yml +1 -0
- data/.rubocop.yml +1 -1
- data/.tool-versions +1 -0
- data/.travis.yml +5 -3
- data/CHANGELOG.md +37 -3
- data/fortnox-api.gemspec +22 -17
- data/lib/fortnox/api/mappers/article.rb +1 -1
- data/lib/fortnox/api/mappers/base/from_json.rb +1 -1
- data/lib/fortnox/api/mappers/base/to_json.rb +2 -2
- data/lib/fortnox/api/mappers/base.rb +3 -3
- data/lib/fortnox/api/mappers/customer.rb +1 -1
- data/lib/fortnox/api/mappers/default_delivery_types.rb +1 -1
- data/lib/fortnox/api/mappers/default_templates.rb +1 -1
- data/lib/fortnox/api/mappers/edi_information.rb +1 -1
- data/lib/fortnox/api/mappers/email_information.rb +1 -1
- data/lib/fortnox/api/mappers/invoice.rb +4 -4
- data/lib/fortnox/api/mappers/invoice_row.rb +1 -1
- data/lib/fortnox/api/mappers/order.rb +4 -4
- data/lib/fortnox/api/mappers/order_row.rb +1 -1
- data/lib/fortnox/api/mappers/project.rb +1 -1
- data/lib/fortnox/api/mappers/terms_of_payment.rb +1 -1
- data/lib/fortnox/api/mappers/unit.rb +1 -1
- data/lib/fortnox/api/mappers/value/country_string.rb +1 -1
- data/lib/fortnox/api/mappers.rb +18 -18
- data/lib/fortnox/api/models/article.rb +2 -2
- data/lib/fortnox/api/models/base.rb +14 -14
- data/lib/fortnox/api/models/customer.rb +2 -2
- data/lib/fortnox/api/models/document.rb +2 -2
- data/lib/fortnox/api/models/invoice.rb +2 -2
- data/lib/fortnox/api/models/label.rb +1 -1
- data/lib/fortnox/api/models/order.rb +2 -2
- data/lib/fortnox/api/models/project.rb +2 -2
- data/lib/fortnox/api/models/terms_of_payment.rb +2 -2
- data/lib/fortnox/api/models/unit.rb +2 -2
- data/lib/fortnox/api/models.rb +7 -7
- data/lib/fortnox/api/repositories/article.rb +3 -3
- data/lib/fortnox/api/repositories/base.rb +4 -3
- data/lib/fortnox/api/repositories/customer.rb +3 -3
- data/lib/fortnox/api/repositories/invoice.rb +3 -3
- data/lib/fortnox/api/repositories/order.rb +3 -3
- data/lib/fortnox/api/repositories/project.rb +3 -3
- data/lib/fortnox/api/repositories/terms_of_payment.rb +3 -3
- data/lib/fortnox/api/repositories/unit.rb +3 -3
- data/lib/fortnox/api/repositories.rb +7 -7
- data/lib/fortnox/api/types/default_delivery_types.rb +0 -2
- data/lib/fortnox/api/types/default_templates.rb +0 -2
- data/lib/fortnox/api/types/edi_information.rb +0 -2
- data/lib/fortnox/api/types/email_information.rb +0 -2
- data/lib/fortnox/api/types/invoice_row.rb +1 -1
- data/lib/fortnox/api/types/model.rb +4 -6
- data/lib/fortnox/api/types/nullable.rb +13 -9
- data/lib/fortnox/api/types/order_row.rb +1 -1
- data/lib/fortnox/api/types/required.rb +3 -3
- data/lib/fortnox/api/types/sized.rb +2 -2
- data/lib/fortnox/api/types.rb +17 -22
- data/lib/fortnox/api/version.rb +1 -1
- data/lib/fortnox/api.rb +18 -16
- data/spec/fortnox/api/mappers/base/canonical_name_sym_spec.rb +9 -7
- data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +1 -1
- data/spec/fortnox/api/mappers/examples/mapper.rb +1 -1
- data/spec/fortnox/api/models/base_spec.rb +8 -8
- data/spec/fortnox/api/repositories/article_spec.rb +2 -2
- data/spec/fortnox/api/repositories/base_spec.rb +4 -12
- data/spec/fortnox/api/repositories/customer_spec.rb +1 -1
- data/spec/fortnox/api/repositories/invoice_spec.rb +0 -6
- data/spec/fortnox/api/repositories/project_spec.rb +1 -1
- data/spec/fortnox/api/repositories/terms_of_payment_spec.rb +2 -2
- data/spec/fortnox/api/repositories/unit_spec.rb +3 -3
- data/spec/fortnox/api/types/housework_types_spec.rb +0 -29
- data/spec/fortnox/api/types/model_spec.rb +11 -17
- data/spec/fortnox/api/types/nullable_spec.rb +30 -10
- data/spec/fortnox/api/types/required_spec.rb +1 -4
- data/spec/support/matchers/type/enum_matcher.rb +1 -1
- data/spec/support/matchers/type/have_account_number_matcher.rb +1 -1
- data/spec/support/matchers/type/have_email_matcher.rb +1 -1
- data/spec/support/matchers/type/have_nullable_date_matcher.rb +5 -5
- data/spec/support/matchers/type/have_nullable_string_matcher.rb +3 -3
- data/spec/vcr_cassettes/articles/all.yml +30 -20
- data/spec/vcr_cassettes/articles/find_by_hash_failure.yml +25 -19
- data/spec/vcr_cassettes/articles/find_failure.yml +25 -19
- data/spec/vcr_cassettes/articles/find_id_1.yml +26 -20
- data/spec/vcr_cassettes/articles/find_new.yml +28 -22
- data/spec/vcr_cassettes/articles/multi_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/articles/save_new.yml +27 -21
- data/spec/vcr_cassettes/articles/save_old.yml +28 -22
- data/spec/vcr_cassettes/articles/save_with_specially_named_attribute.yml +27 -21
- data/spec/vcr_cassettes/articles/search_by_name.yml +25 -19
- data/spec/vcr_cassettes/articles/search_miss.yml +25 -19
- data/spec/vcr_cassettes/articles/search_with_special_char.yml +25 -19
- data/spec/vcr_cassettes/articles/single_param_find_by_hash.yml +28 -21
- data/spec/vcr_cassettes/customers/all.yml +26 -20
- data/spec/vcr_cassettes/customers/find_by_hash_failure.yml +25 -19
- data/spec/vcr_cassettes/customers/find_failure.yml +25 -19
- data/spec/vcr_cassettes/customers/find_id_1.yml +25 -19
- data/spec/vcr_cassettes/customers/find_new.yml +27 -21
- data/spec/vcr_cassettes/customers/multi_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/customers/save_new.yml +26 -20
- data/spec/vcr_cassettes/customers/save_new_with_country_code_SE.yml +26 -20
- data/spec/vcr_cassettes/customers/save_old.yml +27 -21
- data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +26 -20
- data/spec/vcr_cassettes/customers/search_by_name.yml +28 -20
- data/spec/vcr_cassettes/customers/search_miss.yml +25 -19
- data/spec/vcr_cassettes/customers/search_with_special_char.yml +25 -19
- data/spec/vcr_cassettes/customers/single_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/invoices/all.yml +26 -20
- data/spec/vcr_cassettes/invoices/filter_hit.yml +25 -19
- data/spec/vcr_cassettes/invoices/filter_invalid.yml +25 -19
- data/spec/vcr_cassettes/invoices/find_by_hash_failure.yml +25 -19
- data/spec/vcr_cassettes/invoices/find_failure.yml +25 -19
- data/spec/vcr_cassettes/invoices/find_id_1.yml +26 -20
- data/spec/vcr_cassettes/invoices/find_new.yml +30 -24
- data/spec/vcr_cassettes/invoices/multi_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/invoices/save_new.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_new_with_comments.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_new_with_country.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_new_with_country_GB.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_new_with_country_Norge.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_new_with_country_Norway.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_new_with_country_Sverige.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_new_with_country_VA.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_new_with_country_VI.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_new_with_country_empty_string.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_new_with_country_nil.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_old.yml +30 -24
- data/spec/vcr_cassettes/invoices/save_old_with_empty_comments.yml +30 -24
- data/spec/vcr_cassettes/invoices/save_old_with_empty_country.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_old_with_nil_comments.yml +30 -24
- data/spec/vcr_cassettes/invoices/save_old_with_nil_country.yml +29 -23
- data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +28 -22
- data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +28 -22
- data/spec/vcr_cassettes/invoices/search_by_name.yml +25 -19
- data/spec/vcr_cassettes/invoices/search_miss.yml +25 -19
- data/spec/vcr_cassettes/invoices/search_with_special_char.yml +25 -19
- data/spec/vcr_cassettes/invoices/single_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/orders/all.yml +26 -20
- data/spec/vcr_cassettes/orders/filter_hit.yml +25 -19
- data/spec/vcr_cassettes/orders/filter_invalid.yml +25 -19
- data/spec/vcr_cassettes/orders/find_by_hash_failure.yml +25 -19
- data/spec/vcr_cassettes/orders/find_failure.yml +25 -19
- data/spec/vcr_cassettes/orders/find_id_1.yml +25 -19
- data/spec/vcr_cassettes/orders/find_new.yml +29 -23
- data/spec/vcr_cassettes/orders/housework_invalid_tax_reduction_type.yml +25 -19
- data/spec/vcr_cassettes/orders/housework_othercoses_invalid.yml +25 -19
- data/spec/vcr_cassettes/orders/housework_type_babysitting.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_cleaning.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_construction.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_cooking.yml +25 -19
- data/spec/vcr_cassettes/orders/housework_type_electricity.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_gardening.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_glassmetalwork.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_grounddrainagework.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_hvac.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_itservices.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_majorappliancerepair.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_masonry.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_movingservices.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_othercare.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_othercosts.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_paintingwallpapering.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_snowplowing.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_textileclothing.yml +28 -22
- data/spec/vcr_cassettes/orders/housework_type_tutoring.yml +25 -19
- data/spec/vcr_cassettes/orders/multi_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/orders/save_new.yml +28 -22
- data/spec/vcr_cassettes/orders/save_old.yml +29 -23
- data/spec/vcr_cassettes/orders/save_with_nested_model.yml +28 -22
- data/spec/vcr_cassettes/orders/search_by_name.yml +25 -19
- data/spec/vcr_cassettes/orders/search_miss.yml +25 -19
- data/spec/vcr_cassettes/orders/search_with_special_char.yml +25 -19
- data/spec/vcr_cassettes/orders/single_param_find_by_hash.yml +25 -19
- data/spec/vcr_cassettes/projects/all.yml +31 -21
- data/spec/vcr_cassettes/projects/find_by_hash_failure.yml +25 -19
- data/spec/vcr_cassettes/projects/find_failure.yml +25 -19
- data/spec/vcr_cassettes/projects/find_id_1.yml +25 -19
- data/spec/vcr_cassettes/projects/find_new.yml +28 -22
- data/spec/vcr_cassettes/projects/multi_param_find_by_hash.yml +26 -20
- data/spec/vcr_cassettes/projects/save_new.yml +27 -21
- data/spec/vcr_cassettes/projects/save_old.yml +28 -22
- data/spec/vcr_cassettes/projects/single_param_find_by_hash.yml +26 -20
- data/spec/vcr_cassettes/termsofpayments/all.yml +34 -27
- data/spec/vcr_cassettes/termsofpayments/find_failure.yml +25 -19
- data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +25 -19
- data/spec/vcr_cassettes/termsofpayments/find_new.yml +27 -21
- data/spec/vcr_cassettes/termsofpayments/save_new.yml +27 -21
- data/spec/vcr_cassettes/termsofpayments/save_old.yml +27 -21
- data/spec/vcr_cassettes/units/all.yml +36 -28
- data/spec/vcr_cassettes/units/find_failure.yml +25 -19
- data/spec/vcr_cassettes/units/find_id_1.yml +26 -20
- data/spec/vcr_cassettes/units/find_new.yml +27 -21
- data/spec/vcr_cassettes/units/save_new.yml +27 -21
- data/spec/vcr_cassettes/units/save_old.yml +27 -21
- data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +27 -21
- metadata +107 -47
- data/spec/support/helpers/dummy_class_helper.rb +0 -38
- data/spec/vcr_cassettes/invoices/save_new_with_country_KR.yml +0 -61
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d28f8cb3667dac63023e514d6c5203ba795a8c1c2598bbf538e49f58528cbc1
|
4
|
+
data.tar.gz: 127841e8b5d6a64d2b37408960e9659da918fcc9135d821098d281d508e337ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a9557fb4ecacf5d545c26d8894953793268b37a3c8a603a8095e239536d97871712140a6c3bc1f0596708913f369584633fee7e903a3f8ae4be99c47297418d
|
7
|
+
data.tar.gz: 244727089a11d031ec9e8afafa93d80c4b3ee87d1eb9c7f6ff57a8d26751d78304bc34073c095328f61edc580abeff44dba3f275e28346dea024b292e114126a
|
data/.codeclimate.yml
CHANGED
data/.rubocop.yml
CHANGED
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.
|
7
|
-
-
|
8
|
-
-
|
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
|
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
|
-
|
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
|
-
|
6
|
+
require_relative 'lib/fortnox/api/version'
|
7
7
|
|
8
|
-
Gem::Specification.new do |spec|
|
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.
|
27
|
-
spec.add_dependency 'countries', '~>
|
28
|
-
spec.add_dependency 'dry-
|
29
|
-
spec.add_dependency 'dry-
|
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.
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency 'guard
|
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', '
|
37
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
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', '~>
|
40
|
-
spec.add_development_dependency 'rubocop-rspec', '~>
|
41
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
42
|
-
spec.add_development_dependency '
|
43
|
-
spec.add_development_dependency '
|
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
|
@@ -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
|
-
|
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.
|
29
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
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,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
data/lib/fortnox/api/mappers.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'types'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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,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
|
51
|
-
|
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
|
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 }
|
data/lib/fortnox/api/models.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../models/invoice'
|
5
|
+
require_relative '../mappers/invoice'
|
6
6
|
|
7
7
|
module Fortnox
|
8
8
|
module API
|