ledger_sync 1.3.3 → 1.3.4

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.rubocop_todo.yml +0 -3
  4. data/Gemfile.lock +47 -44
  5. data/ledger_sync.gemspec +1 -1
  6. data/lib/ledger_sync.rb +5 -0
  7. data/lib/ledger_sync/adaptors/adaptor.rb +28 -0
  8. data/lib/ledger_sync/adaptors/netsuite/account/operations/create.rb +1 -1
  9. data/lib/ledger_sync/adaptors/netsuite/account/searcher.rb +0 -16
  10. data/lib/ledger_sync/adaptors/netsuite/adaptor.rb +11 -3
  11. data/lib/ledger_sync/adaptors/netsuite/currency/operations/create.rb +1 -1
  12. data/lib/ledger_sync/adaptors/netsuite/customer/operations/create.rb +1 -1
  13. data/lib/ledger_sync/adaptors/netsuite/department/ledger_serializer.rb +17 -0
  14. data/lib/ledger_sync/adaptors/netsuite/department/operations/create.rb +25 -0
  15. data/lib/ledger_sync/adaptors/netsuite/department/operations/delete.rb +25 -0
  16. data/lib/ledger_sync/adaptors/netsuite/department/operations/find.rb +25 -0
  17. data/lib/ledger_sync/adaptors/netsuite/department/operations/update.rb +25 -0
  18. data/lib/ledger_sync/adaptors/netsuite/department/searcher.rb +12 -0
  19. data/lib/ledger_sync/adaptors/netsuite/ledger_serializer.rb +1 -1
  20. data/lib/ledger_sync/adaptors/netsuite/record/http_method.rb +14 -19
  21. data/lib/ledger_sync/adaptors/netsuite/record/metadata.rb +47 -21
  22. data/lib/ledger_sync/adaptors/netsuite/record/parameter.rb +20 -0
  23. data/lib/ledger_sync/adaptors/netsuite/record/property.rb +8 -31
  24. data/lib/ledger_sync/adaptors/netsuite/searcher.rb +19 -0
  25. data/lib/ledger_sync/adaptors/netsuite/vendor/operations/create.rb +1 -1
  26. data/lib/ledger_sync/adaptors/quickbooks_online/adaptor.rb +6 -11
  27. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/ledger_serializer.rb +76 -0
  28. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/create.rb +33 -0
  29. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/find.rb +33 -0
  30. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment/operations/update.rb +33 -0
  31. data/lib/ledger_sync/adaptors/quickbooks_online/bill_payment_line_item/ledger_serializer.rb +19 -0
  32. data/lib/ledger_sync/adaptors/quickbooks_online/operation.rb +1 -1
  33. data/lib/ledger_sync/adaptors/quickbooks_online/operation/find.rb +0 -6
  34. data/lib/ledger_sync/adaptors/quickbooks_online/preferences/ledger_serializer.rb +45 -0
  35. data/lib/ledger_sync/adaptors/quickbooks_online/preferences/operations/find.rb +38 -0
  36. data/lib/ledger_sync/adaptors/quickbooks_online/resources/preferences.rb +24 -0
  37. data/lib/ledger_sync/adaptors/searcher.rb +4 -0
  38. data/lib/ledger_sync/error/operation_errors.rb +0 -10
  39. data/lib/ledger_sync/resource.rb +1 -1
  40. data/lib/ledger_sync/resources/bill_payment.rb +32 -0
  41. data/lib/ledger_sync/resources/bill_payment_line_item.rb +15 -0
  42. data/lib/ledger_sync/type/hash.rb +34 -0
  43. data/lib/ledger_sync/util/read_only_object.rb +54 -0
  44. data/lib/ledger_sync/version.rb +1 -1
  45. metadata +23 -30
  46. data/qa/env_spec.rb +0 -5
  47. data/qa/netsuite/account_spec.rb +0 -20
  48. data/qa/netsuite/currency_spec.rb +0 -16
  49. data/qa/netsuite/customer.rb +0 -76
  50. data/qa/netsuite/customer_spec.rb +0 -21
  51. data/qa/netsuite/vendor.rb +0 -76
  52. data/qa/netsuite/vendor_spec.rb +0 -23
  53. data/qa/netsuite_soap/customer_spec.rb +0 -21
  54. data/qa/netsuite_soap/subsidiary_spec.rb +0 -0
  55. data/qa/qa_helper.rb +0 -58
  56. data/qa/quickbooks_online/account_spec.rb +0 -14
  57. data/qa/quickbooks_online/customer_spec.rb +0 -13
  58. data/qa/quickbooks_online/expense_spec.rb +0 -31
  59. data/qa/quickbooks_online/vendor_spec.rb +0 -13
  60. data/qa/stripe/customers_spec.rb +0 -15
  61. data/qa/support/adaptor_helpers.rb +0 -99
  62. data/qa/support/adaptor_support_setup.rb +0 -23
  63. data/qa/support/netsuite_helpers.rb +0 -33
  64. data/qa/support/netsuite_shared_examples.rb +0 -30
  65. data/qa/support/netsuite_soap_helpers.rb +0 -33
  66. data/qa/support/netsuite_soap_shared_examples.rb +0 -10
  67. data/qa/support/quickbooks_online_helpers.rb +0 -42
  68. data/qa/support/quickbooks_online_shared_examples.rb +0 -82
  69. data/qa/support/shared_examples.rb +0 -127
  70. data/qa/support/stripe_helpers.rb +0 -22
  71. data/qa/support/stripe_shared_examples.rb +0 -10
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe ENV do
4
- it { expect(ENV['QA_ENV']).to eq('true') }
5
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::NetSuite::Account, adaptor: :netsuite do
4
- let(:adaptor) { netsuite_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{test_run_id}"
8
- }
9
- end
10
- let(:record) { :customer }
11
- let(:resource) do
12
- LedgerSync::Account.new(
13
- name: "Test Account #{test_run_id}"
14
- )
15
- end
16
-
17
- # it_behaves_like 'a full netsuite resource'
18
- it_behaves_like 'a record with metadata'
19
- it_behaves_like 'a find'
20
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::NetSuite::Currency, adaptor: :netsuite do
4
- let(:adaptor) { netsuite_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{test_run_id}"
8
- }
9
- end
10
- let(:record) { :currency }
11
- let(:resource) do
12
- FactoryBot.create(:currency)
13
- end
14
-
15
- it_behaves_like 'a full netsuite resource'
16
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module QA
4
- module NetSuite
5
- module Customer
6
- def customer_create
7
- perform(
8
- LedgerSync::Adaptors::NetSuite::Customer::Operations::Create.new(
9
- adaptor: adaptor,
10
- resource: new_customer(
11
- subsidiary: existing_netsuite_subsidiary
12
- )
13
- )
14
- )
15
- end
16
-
17
- def customer_delete(customer:)
18
- perform(
19
- LedgerSync::Adaptors::NetSuite::Customer::Operations::Delete.new(
20
- adaptor: adaptor,
21
- resource: customer
22
- )
23
- )
24
- end
25
-
26
- def customer_delete_nonexisting(customer:)
27
- result = LedgerSync::Adaptors::NetSuite::Customer::Operations::Delete.new(
28
- adaptor: adaptor,
29
- resource: customer
30
- ).perform
31
-
32
- unless result.failure?
33
- pd 'Should be failure'
34
- byebug
35
- end
36
-
37
- LedgerSync::Result.Success
38
- end
39
-
40
- def customer_find(customer:)
41
- perform(
42
- LedgerSync::Adaptors::NetSuite::Customer::Operations::Find.new(
43
- adaptor: adaptor,
44
- resource: customer
45
- )
46
- )
47
- end
48
-
49
- def customer_update(customer:)
50
- name = "QA UPDATE #{test_run_id}"
51
- customer.name = name
52
-
53
- result = perform(
54
- LedgerSync::Adaptors::NetSuite::Customer::Operations::Update.new(
55
- adaptor: adaptor,
56
- resource: customer
57
- )
58
- )
59
-
60
- byebug if result.resource.name != name
61
- result
62
- end
63
-
64
- def schema_customer
65
- schema = adaptor.base_module::Record::Metadata.new(
66
- adaptor: adaptor,
67
- record: :customer
68
- )
69
-
70
- # byebug unless schema['items'].count == 1
71
-
72
- LedgerSync::Result.Success(schema)
73
- end
74
- end
75
- end
76
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::NetSuite::Customer, adaptor: :netsuite do
4
- let(:adaptor) { netsuite_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{test_run_id}"
8
- }
9
- end
10
- let(:record) { :customer }
11
- let(:resource) do
12
- LedgerSync::Customer.new(
13
- email: "#{test_run_id}@example.com",
14
- name: "Test Customer #{test_run_id}",
15
- phone_number: '1234567890',
16
- subsidiary: existing_subsidiary_resource
17
- )
18
- end
19
-
20
- it_behaves_like 'a full netsuite resource'
21
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module QA
4
- module NetSuite
5
- module Vendor
6
- def vendor_create
7
- perform(
8
- LedgerSync::Adaptors::NetSuite::Vendor::Operations::Create.new(
9
- adaptor: adaptor,
10
- resource: new_vendor(
11
- subsidiary: existing_netsuite_subsidiary
12
- )
13
- )
14
- )
15
- end
16
-
17
- def vendor_delete(vendor:)
18
- perform(
19
- LedgerSync::Adaptors::NetSuite::Vendor::Operations::Delete.new(
20
- adaptor: adaptor,
21
- resource: vendor
22
- )
23
- )
24
- end
25
-
26
- def vendor_delete_nonexisting(vendor:)
27
- result = LedgerSync::Adaptors::NetSuite::Vendor::Operations::Delete.new(
28
- adaptor: adaptor,
29
- resource: vendor
30
- ).perform
31
-
32
- unless result.failure?
33
- pd 'Should be failure'
34
- byebug
35
- end
36
-
37
- LedgerSync::Result.Success
38
- end
39
-
40
- def vendor_find(vendor:)
41
- perform(
42
- LedgerSync::Adaptors::NetSuite::Vendor::Operations::Find.new(
43
- adaptor: adaptor,
44
- resource: vendor
45
- )
46
- )
47
- end
48
-
49
- def vendor_update(vendor:)
50
- name = "QA UPDATE #{test_run_id}"
51
- vendor.company_name = name
52
-
53
- result = perform(
54
- LedgerSync::Adaptors::NetSuite::Vendor::Operations::Update.new(
55
- adaptor: adaptor,
56
- resource: vendor
57
- )
58
- )
59
-
60
- byebug if result.resource.company_name != name
61
- result
62
- end
63
-
64
- def schema_vendor
65
- schema = adaptor.base_module::Record::Metadata.new(
66
- adaptor: adaptor,
67
- record: :vendor
68
- )
69
-
70
- # byebug unless schema['items'].count == 1
71
-
72
- LedgerSync::Result.Success(schema)
73
- end
74
- end
75
- end
76
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::NetSuite::Vendor, adaptor: :netsuite do
4
- let(:adaptor) { netsuite_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- company_name: "QA UPDATE #{test_run_id}"
8
- }
9
- end
10
- let(:record) { :vendor }
11
- let(:resource) do
12
- LedgerSync::Vendor.new(
13
- company_name: "#{test_run_id} Company",
14
- email: "test-#{test_run_id}-vendor@example.com",
15
- first_name: "TestFirst#{test_run_id}",
16
- last_name: "TestLast#{test_run_id}",
17
- display_name: "Test #{test_run_id} Display Name",
18
- subsidiary: existing_subsidiary_resource
19
- )
20
- end
21
-
22
- it_behaves_like 'a full netsuite resource'
23
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::NetSuiteSOAP::Customer, adaptor: :netsuite_soap do
4
- let(:adaptor) { netsuite_soap_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{rand_id}"
8
- }
9
- end
10
- let(:record) { :customer }
11
- let(:resource) do
12
- LedgerSync::Customer.new(
13
- email: "#{rand_id}@example.com",
14
- name: "Test Customer #{rand_id}",
15
- phone_number: '1234567890',
16
- subsidiary: existing_subsidiary_resource
17
- )
18
- end
19
-
20
- it_behaves_like 'a full netsuite soap resource'
21
- end
File without changes
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Set an environment variable to determine when we are running QA tests.
4
- ENV['QA_ENV'] = 'true'
5
-
6
- require 'bundler/setup'
7
- require 'ap'
8
- require 'byebug'
9
- require 'ledger_sync'
10
-
11
- #
12
- # Helper method for requiring support files
13
- #
14
- # @param [String] *paths List of strings or symbols
15
- #
16
- # @return [Boolean]
17
- #
18
- def support(*paths)
19
- paths.each do |path|
20
- require File.join(LedgerSync.root, 'qa/support/', path.to_s)
21
- end
22
- end
23
-
24
- #
25
- # Helper method for requiring support files from /spec/support dir
26
- #
27
- # @param [String] *paths List of strings or symbols
28
- #
29
- # @return [Boolean]
30
- #
31
- def spec_support(*paths)
32
- paths.each do |path|
33
- require File.join(LedgerSync.root, 'spec/support/', path.to_s)
34
- end
35
- end
36
-
37
- spec_support :factory_bot
38
-
39
- support :adaptor_support_setup
40
-
41
- setup_adaptor_support(
42
- LedgerSync::Adaptors::NetSuite::Adaptor,
43
- LedgerSync::Adaptors::NetSuiteSOAP::Adaptor,
44
- LedgerSync::Adaptors::QuickBooksOnline::Adaptor,
45
- LedgerSync::Adaptors::Stripe::Adaptor
46
- )
47
-
48
- RSpec.configure do |config|
49
- # Enable flags like --only-failures and --next-failure
50
- config.example_status_persistence_file_path = 'tmp/qa_history.txt'
51
-
52
- # Disable RSpec exposing methods globally on `Module` and `main`
53
- config.disable_monkey_patching!
54
-
55
- config.expect_with :rspec do |c|
56
- c.syntax = :expect
57
- end
58
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::QuickBooksOnline::Account, adaptor: :quickbooks_online do
4
- let(:adaptor) { quickbooks_online_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{test_run_id}"
8
- }
9
- end
10
- let(:record) { :account }
11
- let(:resource) { FactoryBot.create(:account) }
12
-
13
- it_behaves_like 'a standard quickbooks_online resource'
14
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::QuickBooksOnline::Customer, adaptor: :quickbooks_online do
4
- let(:adaptor) { quickbooks_online_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{rand_id}"
8
- }
9
- end
10
- let(:resource) { FactoryBot.create(:customer) }
11
-
12
- it_behaves_like 'a standard quickbooks_online resource'
13
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::QuickBooksOnline::Expense, adaptor: :quickbooks_online do
4
- let(:adaptor) { quickbooks_online_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- memo: "QA UPDATE #{rand_id}"
8
- }
9
- end
10
-
11
- let(:account) do
12
- create_resource_for(
13
- adaptor: adaptor,
14
- resource: FactoryBot.create(:account)
15
- )
16
- end
17
-
18
- let(:resource) do
19
- FactoryBot.create(
20
- :expense,
21
- account: account,
22
- line_items: FactoryBot.create_list(
23
- :expense_line_item,
24
- 2,
25
- account: account
26
- )
27
- )
28
- end
29
-
30
- it_behaves_like 'a standard quickbooks_online resource'
31
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::QuickBooksOnline::Vendor, adaptor: :quickbooks_online do
4
- let(:adaptor) { quickbooks_online_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- display_name: "QA UPDATE #{rand_id}"
8
- }
9
- end
10
- let(:resource) { FactoryBot.create(:vendor) }
11
-
12
- it_behaves_like 'a standard quickbooks_online resource'
13
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RSpec.describe LedgerSync::Adaptors::Stripe::Customer, adaptor: :stripe do
4
- let(:adaptor) { stripe_adaptor }
5
- let(:attribute_updates) do
6
- {
7
- name: "QA UPDATE #{rand_id}"
8
- }
9
- end
10
- let(:resource) do
11
- FactoryBot.create(:customer)
12
- end
13
-
14
- it_behaves_like 'a full stripe resource'
15
- end
@@ -1,99 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module AdaptorHelpers
4
- def adaptor_class
5
- raise NotImplementedError
6
- end
7
-
8
- def create_operation_for(resource_class:)
9
- operation_for(
10
- method: :create,
11
- resource: resource_class
12
- )
13
- end
14
-
15
- def create_resource_for(*args)
16
- create_result_for(*args).raise_if_error.resource
17
- end
18
-
19
- def create_result_for(adaptor:, resource:)
20
- result_for(
21
- adaptor: adaptor,
22
- method: :create,
23
- resource: resource
24
- )
25
- end
26
-
27
- def delete_operation_for(resource_class:)
28
- operation_for(
29
- method: :delete,
30
- resource: resource_class
31
- )
32
- end
33
-
34
- def delete_resource_for(*args)
35
- delete_result_for(*args).raise_if_error.resource
36
- end
37
-
38
- def delete_result_for(adaptor:, resource:)
39
- result_for(
40
- adaptor: adaptor,
41
- method: :delete,
42
- resource: resource
43
- )
44
- end
45
-
46
- def find_operation_for(resource_class:)
47
- operation_for(
48
- method: :find,
49
- resource: resource_class
50
- )
51
- end
52
-
53
- def find_resource_for(*args)
54
- find_result_for(*args).raise_if_error.resource
55
- end
56
-
57
- def find_result_for(adaptor:, resource:)
58
- result_for(
59
- adaptor: adaptor,
60
- method: :find,
61
- resource: resource
62
- )
63
- end
64
-
65
- def operation_for(method:, resource_class:)
66
- adaptor_class
67
- .base_operation_module_for(resource_class: resource_class)
68
- .const_get(LedgerSync::Util::StringHelpers.camelcase(method.to_s))
69
- end
70
-
71
- def result_for(adaptor:, method:, resource:)
72
- operation_for(
73
- method: method,
74
- resource_class: resource.class
75
- ).new(
76
- adaptor: adaptor,
77
- resource: resource
78
- ).perform
79
- end
80
-
81
- def update_operation_for(resource_class:)
82
- operation_for(
83
- method: :update,
84
- resource: resource_class
85
- )
86
- end
87
-
88
- def update_resource_for(*args)
89
- update_result_for(*args).raise_if_error.resource
90
- end
91
-
92
- def update_result_for(adaptor:, resource:)
93
- result_for(
94
- adaptor: adaptor,
95
- method: :update,
96
- resource: resource
97
- )
98
- end
99
- end