business-central 1.0.7 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +45 -32
  3. data/lib/business_central/client.rb +7 -53
  4. data/lib/business_central/exceptions.rb +11 -29
  5. data/lib/business_central/object/{attachment.rb → attachments.rb} +9 -11
  6. data/lib/business_central/object/base.rb +42 -114
  7. data/lib/business_central/object/companies.rb +19 -0
  8. data/lib/business_central/object/filter_query.rb +2 -0
  9. data/lib/business_central/object/object_helper.rb +9 -36
  10. data/lib/business_central/object/picture.rb +4 -40
  11. data/lib/business_central/object/request.rb +14 -15
  12. data/lib/business_central/object/response.rb +2 -0
  13. data/lib/business_central/object/url_builder.rb +16 -12
  14. data/lib/business_central/object/url_helper.rb +2 -0
  15. data/lib/business_central/version.rb +1 -1
  16. data/lib/business_central/web_service.rb +2 -0
  17. data/lib/business_central.rb +4 -56
  18. data/lib/refinements/strings.rb +42 -0
  19. data/test/business_central/client_test.rb +24 -0
  20. data/test/business_central/exceptions_test.rb +40 -0
  21. data/test/business_central/object/{attachment_test.rb → attachments_test.rb} +5 -6
  22. data/test/business_central/object/base_test.rb +59 -22
  23. data/test/business_central/object/{company_test.rb → companies_test.rb} +3 -21
  24. data/test/business_central/object/picture_test.rb +7 -16
  25. metadata +25 -155
  26. data/lib/business_central/object/account.rb +0 -13
  27. data/lib/business_central/object/aged_account_payable.rb +0 -13
  28. data/lib/business_central/object/aged_account_receivable.rb +0 -13
  29. data/lib/business_central/object/argument_helper.rb +0 -22
  30. data/lib/business_central/object/balance_sheet.rb +0 -13
  31. data/lib/business_central/object/cash_flow_statement.rb +0 -13
  32. data/lib/business_central/object/company.rb +0 -18
  33. data/lib/business_central/object/company_information.rb +0 -14
  34. data/lib/business_central/object/country_region.rb +0 -26
  35. data/lib/business_central/object/currency.rb +0 -29
  36. data/lib/business_central/object/customer.rb +0 -34
  37. data/lib/business_central/object/customer_financial_detail.rb +0 -13
  38. data/lib/business_central/object/customer_payment.rb +0 -43
  39. data/lib/business_central/object/customer_payment_journal.rb +0 -25
  40. data/lib/business_central/object/customer_sale.rb +0 -13
  41. data/lib/business_central/object/default_dimension.rb +0 -51
  42. data/lib/business_central/object/dimension.rb +0 -20
  43. data/lib/business_central/object/dimension_line.rb +0 -37
  44. data/lib/business_central/object/dimension_value.rb +0 -28
  45. data/lib/business_central/object/employee.rb +0 -21
  46. data/lib/business_central/object/general_ledger_entry.rb +0 -13
  47. data/lib/business_central/object/income_statement.rb +0 -13
  48. data/lib/business_central/object/irs1099_code.rb +0 -16
  49. data/lib/business_central/object/item.rb +0 -47
  50. data/lib/business_central/object/item_category.rb +0 -16
  51. data/lib/business_central/object/journal.rb +0 -29
  52. data/lib/business_central/object/journal_line.rb +0 -48
  53. data/lib/business_central/object/payment_method.rb +0 -16
  54. data/lib/business_central/object/payment_term.rb +0 -16
  55. data/lib/business_central/object/purchase_invoice.rb +0 -69
  56. data/lib/business_central/object/purchase_invoice_line.rb +0 -37
  57. data/lib/business_central/object/purchase_order.rb +0 -16
  58. data/lib/business_central/object/retained_earning_statement.rb +0 -13
  59. data/lib/business_central/object/sales_credit_memo.rb +0 -20
  60. data/lib/business_central/object/sales_credit_memo_line.rb +0 -30
  61. data/lib/business_central/object/sales_invoice.rb +0 -62
  62. data/lib/business_central/object/sales_invoice_line.rb +0 -30
  63. data/lib/business_central/object/sales_order.rb +0 -20
  64. data/lib/business_central/object/sales_order_line.rb +0 -30
  65. data/lib/business_central/object/sales_quote.rb +0 -20
  66. data/lib/business_central/object/sales_quote_line.rb +0 -30
  67. data/lib/business_central/object/shipment_method.rb +0 -16
  68. data/lib/business_central/object/subscription.rb +0 -16
  69. data/lib/business_central/object/tax_area.rb +0 -16
  70. data/lib/business_central/object/tax_group.rb +0 -16
  71. data/lib/business_central/object/time_registration_entry.rb +0 -16
  72. data/lib/business_central/object/trial_balance.rb +0 -13
  73. data/lib/business_central/object/units_of_measure.rb +0 -16
  74. data/lib/business_central/object/validation.rb +0 -57
  75. data/lib/business_central/object/vendor.rb +0 -42
  76. data/lib/business_central/object/vendor_purchase.rb +0 -13
  77. data/lib/core_ext/string.rb +0 -31
  78. data/test/business_central/object/account_test.rb +0 -67
  79. data/test/business_central/object/aged_account_payable_test.rb +0 -61
  80. data/test/business_central/object/aged_account_receivable_test.rb +0 -61
  81. data/test/business_central/object/balance_sheet_test.rb +0 -61
  82. data/test/business_central/object/cash_flow_statement_test.rb +0 -61
  83. data/test/business_central/object/company_information_test.rb +0 -81
  84. data/test/business_central/object/country_region_test.rb +0 -129
  85. data/test/business_central/object/currency_test.rb +0 -150
  86. data/test/business_central/object/customer_financial_detail_test.rb +0 -68
  87. data/test/business_central/object/customer_payment_journal_test.rb +0 -134
  88. data/test/business_central/object/customer_payment_test.rb +0 -141
  89. data/test/business_central/object/customer_sale_test.rb +0 -72
  90. data/test/business_central/object/customer_test.rb +0 -168
  91. data/test/business_central/object/default_dimension_test.rb +0 -170
  92. data/test/business_central/object/dimension_line_test.rb +0 -165
  93. data/test/business_central/object/dimension_test.rb +0 -65
  94. data/test/business_central/object/dimension_value_test.rb +0 -68
  95. data/test/business_central/object/employee_test.rb +0 -141
  96. data/test/business_central/object/general_ledger_entry_test.rb +0 -82
  97. data/test/business_central/object/income_statement_test.rb +0 -82
  98. data/test/business_central/object/irs1099_code_test.rb +0 -124
  99. data/test/business_central/object/item_category_test.rb +0 -122
  100. data/test/business_central/object/item_test.rb +0 -121
  101. data/test/business_central/object/journal_line_test.rb +0 -152
  102. data/test/business_central/object/journal_test.rb +0 -144
  103. data/test/business_central/object/payment_method_test.rb +0 -134
  104. data/test/business_central/object/payment_term_test.rb +0 -134
  105. data/test/business_central/object/purchase_invoice_line_test.rb +0 -123
  106. data/test/business_central/object/purchase_invoice_test.rb +0 -119
  107. data/test/business_central/object/retained_earning_statement_test.rb +0 -52
  108. data/test/business_central/object/sales_credit_memo_line_test.rb +0 -134
  109. data/test/business_central/object/sales_credit_memo_test.rb +0 -146
  110. data/test/business_central/object/sales_invoice_line_test.rb +0 -164
  111. data/test/business_central/object/sales_invoice_test.rb +0 -156
  112. data/test/business_central/object/sales_order_line_test.rb +0 -134
  113. data/test/business_central/object/sales_order_test.rb +0 -146
  114. data/test/business_central/object/sales_quote_line_test.rb +0 -134
  115. data/test/business_central/object/sales_quote_test.rb +0 -146
  116. data/test/business_central/object/shipment_method_test.rb +0 -133
  117. data/test/business_central/object/subscription_test.rb +0 -126
  118. data/test/business_central/object/tax_area_test.rb +0 -126
  119. data/test/business_central/object/tax_group_test.rb +0 -126
  120. data/test/business_central/object/time_registration_entry_test.rb +0 -126
  121. data/test/business_central/object/trial_balance_test.rb +0 -82
  122. data/test/business_central/object/units_of_measure_test.rb +0 -126
  123. data/test/business_central/object/validation_test.rb +0 -62
  124. data/test/business_central/object/vendor_purchase_test.rb +0 -82
  125. data/test/business_central/object/vendor_test.rb +0 -119
@@ -1,126 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- # rake test TEST=test/business_central/object/units_of_measure_test.rb
5
-
6
- class BusinessCentral::Object::UnitsOfMeasureTest < Minitest::Test
7
- def setup
8
- @company_id = '123456'
9
- @client = BusinessCentral::Client.new
10
- @units_of_measure = @client.units_of_measure(company_id: @company_id)
11
- end
12
-
13
- def test_find_all
14
- stub_request(:get, /unitsOfMeasure/)
15
- .to_return(
16
- status: 200,
17
- body: {
18
- 'value': [
19
- {
20
- id: 1,
21
- number: '1009'
22
- }
23
- ]
24
- }.to_json
25
- )
26
-
27
- response = @units_of_measure.find_all
28
- assert_equal response.first[:number], '1009'
29
- end
30
-
31
- def test_find_by_id
32
- test_id = '09876'
33
- stub_request(:get, /unitsOfMeasure\(#{test_id}\)/)
34
- .to_return(
35
- status: 200,
36
- body: {
37
- id: test_id,
38
- number: '1010'
39
- }.to_json
40
- )
41
-
42
- response = @units_of_measure.find_by_id(test_id)
43
- assert_equal response[:number], '1010'
44
- end
45
-
46
- def test_where
47
- test_filter = "number eq '1020'"
48
- stub_request(:get, /unitsOfMeasure\?\$filter=#{test_filter}/)
49
- .to_return(
50
- status: 200,
51
- body: {
52
- 'value': [
53
- {
54
- id: '345',
55
- number: '1011'
56
- }
57
- ]
58
- }.to_json
59
- )
60
-
61
- response = @units_of_measure.where(test_filter)
62
- assert_equal response.first[:number], '1011'
63
- end
64
-
65
- def test_create
66
- stub_request(:post, /unitsOfMeasure/)
67
- .to_return(
68
- status: 200,
69
- body: {
70
- id: '678',
71
- number: '1012'
72
- }.to_json
73
- )
74
-
75
- response = @units_of_measure.create(
76
- number: '1012'
77
- )
78
- assert_equal response[:number], '1012'
79
- end
80
-
81
- def test_update
82
- test_id = '011123'
83
- stub_request(:get, /unitsOfMeasure\(#{test_id}\)/)
84
- .to_return(
85
- status: 200,
86
- body: {
87
- etag: '112',
88
- id: test_id,
89
- number: '1012'
90
- }.to_json
91
- )
92
-
93
- stub_request(:patch, /unitsOfMeasure\(#{test_id}\)/)
94
- .to_return(
95
- status: 200,
96
- body: {
97
- id: test_id,
98
- number: '1013'
99
- }.to_json
100
- )
101
-
102
- response = @units_of_measure.update(
103
- test_id,
104
- number: '1013'
105
- )
106
- assert_equal response[:number], '1013'
107
- end
108
-
109
- def test_delete
110
- test_id = '0111245'
111
- stub_request(:get, /unitsOfMeasure\(#{test_id}\)/)
112
- .to_return(
113
- status: 200,
114
- body: {
115
- etag: '113',
116
- id: test_id,
117
- number: '1013'
118
- }.to_json
119
- )
120
-
121
- stub_request(:delete, /unitsOfMeasure\(#{test_id}\)/)
122
- .to_return(status: 204)
123
-
124
- assert @units_of_measure.destroy(test_id)
125
- end
126
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- # rake test TEST=test/business_central/object/validation_test.rb
5
-
6
- class BusinessCentral::Object::ValidationTest < Minitest::Test
7
- def test_validation_required
8
- validation_rules = {
9
- name: {
10
- required: true
11
- }
12
- }
13
- object_params = {
14
- name: ''
15
- }
16
- assert_raises BusinessCentral::InvalidObjectException do
17
- BusinessCentral::Object::Validation.new(validation_rules, object_params).valid?
18
- end
19
- end
20
-
21
- def test_validation_maximum_length
22
- validation_rules = {
23
- name: {
24
- maximum_length: 5
25
- }
26
- }
27
- object_params = {
28
- name: '123456'
29
- }
30
- assert_raises BusinessCentral::InvalidObjectException do
31
- BusinessCentral::Object::Validation.new(validation_rules, object_params).valid?
32
- end
33
- end
34
-
35
- def test_validation_inclusive_value
36
- validation_rules = {
37
- type: {
38
- inclusion_of: %w[1 2 3]
39
- }
40
- }
41
- object_params = {
42
- type: '4'
43
- }
44
- assert_raises BusinessCentral::InvalidObjectException do
45
- BusinessCentral::Object::Validation.new(validation_rules, object_params).valid?
46
- end
47
- end
48
-
49
- def test_validation_date
50
- validation_rules = {
51
- date_due: {
52
- date: true
53
- }
54
- }
55
- object_params = {
56
- date_due: ''
57
- }
58
- assert_raises BusinessCentral::InvalidObjectException do
59
- BusinessCentral::Object::Validation.new(validation_rules, object_params).valid?
60
- end
61
- end
62
- end
@@ -1,82 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- # rake test TEST=test/business_central/object/vendor_purchase_test.rb
5
-
6
- class BusinessCentral::Object::VendorPurchaseTest < Minitest::Test
7
- def setup
8
- @company_id = '123456'
9
- @client = BusinessCentral::Client.new
10
- @vendor_purchase = @client.vendor_purchase(company_id: @company_id)
11
- end
12
-
13
- def test_find_all
14
- stub_request(:get, /vendorPurchases/)
15
- .to_return(
16
- status: 200,
17
- body: {
18
- 'value': [
19
- {
20
- id: 1,
21
- number: '1009'
22
- }
23
- ]
24
- }.to_json
25
- )
26
-
27
- response = @vendor_purchase.find_all
28
- assert_equal response.first[:number], '1009'
29
- end
30
-
31
- def test_find_by_id
32
- test_id = '09876'
33
- stub_request(:get, /vendorPurchases\(#{test_id}\)/)
34
- .to_return(
35
- status: 200,
36
- body: {
37
- id: test_id,
38
- number: '1010'
39
- }.to_json
40
- )
41
-
42
- response = @vendor_purchase.find_by_id(test_id)
43
- assert_equal response[:number], '1010'
44
- end
45
-
46
- def test_where
47
- test_filter = "number eq '1020'"
48
- stub_request(:get, /vendorPurchases\?\$filter=#{test_filter}/)
49
- .to_return(
50
- status: 200,
51
- body: {
52
- 'value': [
53
- {
54
- id: '345',
55
- number: '1011'
56
- }
57
- ]
58
- }.to_json
59
- )
60
-
61
- response = @vendor_purchase.where(test_filter)
62
- assert_equal response.first[:number], '1011'
63
- end
64
-
65
- def test_create
66
- assert_raises BusinessCentral::NoSupportedMethod do
67
- @vendor_purchase.create({})
68
- end
69
- end
70
-
71
- def test_update
72
- assert_raises BusinessCentral::NoSupportedMethod do
73
- @vendor_purchase.update('123', {})
74
- end
75
- end
76
-
77
- def test_delete
78
- assert_raises BusinessCentral::NoSupportedMethod do
79
- @vendor_purchase.destroy('123')
80
- end
81
- end
82
- end
@@ -1,119 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
- # rake test TEST=test/business_central/object/vendor_test.rb
5
-
6
- class BusinessCentral::Object::VendorTest < Minitest::Test
7
- def setup
8
- @company_id = '123456'
9
- @client = BusinessCentral::Client.new
10
- @vendor = @client.vendor(company_id: @company_id)
11
- end
12
-
13
- def test_find_all
14
- stub_request(:get, %r{/vendors})
15
- .to_return(
16
- status: 200,
17
- body: {
18
- 'value': [
19
- {
20
- displayName: 'vendor1'
21
- }
22
- ]
23
- }.to_json
24
- )
25
-
26
- response = @vendor.find_all
27
- assert_equal response.first[:display_name], 'vendor1'
28
- end
29
-
30
- def test_find_by_id
31
- test_vendor_id = '09876'
32
- stub_request(:get, /vendors\(#{test_vendor_id}\)/)
33
- .to_return(
34
- status: 200,
35
- body: {
36
- displayName: 'vendor2'
37
- }.to_json
38
- )
39
-
40
- response = @vendor.find_by_id(test_vendor_id)
41
- assert_equal response[:display_name], 'vendor2'
42
- end
43
-
44
- def test_where
45
- test_filter = "displayName eq 'vendor3'"
46
- stub_request(:get, /vendors\?\$filter=#{test_filter}/)
47
- .to_return(
48
- status: 200,
49
- body: {
50
- 'value': [
51
- {
52
- displayName: 'vendor3'
53
- }
54
- ]
55
- }.to_json
56
- )
57
-
58
- response = @vendor.where(test_filter)
59
- assert_equal response.first[:display_name], 'vendor3'
60
- end
61
-
62
- def test_create
63
- stub_request(:post, /vendors/)
64
- .to_return(
65
- status: 200,
66
- body: {
67
- displayName: 'vendor4'
68
- }.to_json
69
- )
70
-
71
- response = @vendor.create(
72
- display_name: 'vendor4'
73
- )
74
- assert_equal response[:display_name], 'vendor4'
75
- end
76
-
77
- def test_update
78
- test_vendor_id = '011123'
79
- stub_request(:get, /vendors\(#{test_vendor_id}\)/)
80
- .to_return(
81
- status: 200,
82
- body: {
83
- etag: '112',
84
- displayName: 'vendor5'
85
- }.to_json
86
- )
87
-
88
- stub_request(:patch, /vendors\(#{test_vendor_id}\)/)
89
- .to_return(
90
- status: 200,
91
- body: {
92
- displayName: 'vendor6'
93
- }.to_json
94
- )
95
-
96
- response = @vendor.update(
97
- test_vendor_id,
98
- display_name: 'vendor6'
99
- )
100
- assert_equal response[:display_name], 'vendor6'
101
- end
102
-
103
- def test_delete
104
- test_vendor_id = '0111245'
105
- stub_request(:get, /vendors\(#{test_vendor_id}\)/)
106
- .to_return(
107
- status: 200,
108
- body: {
109
- etag: '113',
110
- displayName: 'vendor7'
111
- }.to_json
112
- )
113
-
114
- stub_request(:delete, /vendors\(#{test_vendor_id}\)/)
115
- .to_return(status: 204)
116
-
117
- assert @vendor.destroy(test_vendor_id)
118
- end
119
- end