business-central 1.0.4 → 1.0.5

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +58 -15
  3. data/lib/business_central.rb +4 -0
  4. data/lib/business_central/client.rb +5 -3
  5. data/lib/business_central/object/attachment.rb +30 -0
  6. data/lib/business_central/object/customer.rb +1 -0
  7. data/lib/business_central/object/default_dimension.rb +1 -1
  8. data/lib/business_central/object/general_ledger_entry.rb +13 -0
  9. data/lib/business_central/object/income_statement.rb +13 -0
  10. data/lib/business_central/object/irs1099_code.rb +16 -0
  11. data/lib/business_central/object/journal_line.rb +1 -1
  12. data/lib/business_central/object/picture.rb +1 -1
  13. data/lib/business_central/object/sales_credit_memo_line.rb +1 -1
  14. data/lib/business_central/object/sales_invoice_line.rb +1 -1
  15. data/lib/business_central/object/sales_order_line.rb +1 -1
  16. data/lib/business_central/object/sales_quote_line.rb +1 -1
  17. data/lib/business_central/version.rb +1 -1
  18. data/test/business_central/object/attachment_test.rb +117 -0
  19. data/test/business_central/object/customer_test.rb +44 -0
  20. data/test/business_central/object/general_ledger_entry_test.rb +82 -0
  21. data/test/business_central/object/income_statement_test.rb +82 -0
  22. data/test/business_central/object/irs1099_code_test.rb +124 -0
  23. data/test/business_central/object/journal_line_test.rb +8 -8
  24. data/test/business_central/object/journal_test.rb +20 -0
  25. data/test/business_central/object/sales_credit_memo_line_test.rb +8 -8
  26. data/test/business_central/object/sales_credit_memo_test.rb +1 -1
  27. data/test/business_central/object/sales_invoice_line_test.rb +8 -8
  28. data/test/business_central/object/sales_invoice_test.rb +22 -0
  29. data/test/business_central/object/sales_order_line_test.rb +8 -8
  30. data/test/business_central/object/sales_order_test.rb +1 -1
  31. data/test/business_central/object/sales_quote_line_test.rb +8 -8
  32. data/test/business_central/object/sales_quote_test.rb +1 -1
  33. metadata +18 -6
@@ -121,4 +121,48 @@ class BusinessCentral::Object::CustomerTest < Minitest::Test
121
121
 
122
122
  assert @customer.destroy(test_id)
123
123
  end
124
+
125
+ def test_default_dimension_navigation
126
+ stub_request(:get, %r{customers\(\d+\)\/defaultDimensions})
127
+ .to_return(
128
+ status: 200,
129
+ body: {
130
+ 'value': [
131
+ {
132
+ id: 1,
133
+ parentId: '123',
134
+ dimensionId: '123',
135
+ dimensionCode: 'ABC',
136
+ dimensionValueId: 1,
137
+ dimensionValueCode: 'DEF'
138
+ }
139
+ ]
140
+ }.to_json
141
+ )
142
+
143
+ response = @client.customer(company_id: @company_id, id: '123')
144
+ .default_dimension.find_all
145
+ assert_equal response.first[:parent_id], '123'
146
+ end
147
+
148
+ def test_picture_navigation
149
+ stub_request(:get, %r{customers\(\d+\)\/picture})
150
+ .to_return(
151
+ status: 200,
152
+ body: {
153
+ 'value': [
154
+ {
155
+ id: 1,
156
+ width: 500,
157
+ height: 496,
158
+ contentType: 'image\jpeg'
159
+ }
160
+ ]
161
+ }.to_json
162
+ )
163
+
164
+ response = @client.customer(company_id: @company_id, id: '123')
165
+ .picture.find_all
166
+ assert_equal response.first[:width], 500
167
+ end
124
168
  end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ # rake test TEST=test/business_central/object/general_ledger_entry_test.rb
5
+
6
+ class BusinessCentral::Object::GeneralLedgerEntryTest < Minitest::Test
7
+ def setup
8
+ @company_id = '123456'
9
+ @client = BusinessCentral::Client.new
10
+ @general_ledger_entry = @client.general_ledger_entry(company_id: @company_id)
11
+ end
12
+
13
+ def test_find_all
14
+ stub_request(:get, /generalLedgerEntries/)
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 = @general_ledger_entry.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, /generalLedgerEntries\(#{test_id}\)/)
34
+ .to_return(
35
+ status: 200,
36
+ body: {
37
+ id: test_id,
38
+ number: '1010'
39
+ }.to_json
40
+ )
41
+
42
+ response = @general_ledger_entry.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, /generalLedgerEntries\?\$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 = @general_ledger_entry.where(test_filter)
62
+ assert_equal response.first[:number], '1011'
63
+ end
64
+
65
+ def test_create
66
+ assert_raises BusinessCentral::NoSupportedMethod do
67
+ @general_ledger_entry.create({})
68
+ end
69
+ end
70
+
71
+ def test_update
72
+ assert_raises BusinessCentral::NoSupportedMethod do
73
+ @general_ledger_entry.update('123', {})
74
+ end
75
+ end
76
+
77
+ def test_delete
78
+ assert_raises BusinessCentral::NoSupportedMethod do
79
+ @general_ledger_entry.destroy('123')
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ # rake test TEST=test/business_central/object/income_statement_test.rb
5
+
6
+ class BusinessCentral::Object::IncomeStatementTest < Minitest::Test
7
+ def setup
8
+ @company_id = '123456'
9
+ @client = BusinessCentral::Client.new
10
+ @income_statement = @client.income_statement(company_id: @company_id)
11
+ end
12
+
13
+ def test_find_all
14
+ stub_request(:get, /incomeStatement/)
15
+ .to_return(
16
+ status: 200,
17
+ body: {
18
+ 'value': [
19
+ {
20
+ id: 1,
21
+ lineNumber: '1009'
22
+ }
23
+ ]
24
+ }.to_json
25
+ )
26
+
27
+ response = @income_statement.find_all
28
+ assert_equal response.first[:line_number], '1009'
29
+ end
30
+
31
+ def test_find_by_id
32
+ test_id = '09876'
33
+ stub_request(:get, /incomeStatement\(#{test_id}\)/)
34
+ .to_return(
35
+ status: 200,
36
+ body: {
37
+ id: test_id,
38
+ lineNumber: '1010'
39
+ }.to_json
40
+ )
41
+
42
+ response = @income_statement.find_by_id(test_id)
43
+ assert_equal response[:line_number], '1010'
44
+ end
45
+
46
+ def test_where
47
+ test_filter = "number eq '1020'"
48
+ stub_request(:get, /incomeStatement\?\$filter=#{test_filter}/)
49
+ .to_return(
50
+ status: 200,
51
+ body: {
52
+ 'value': [
53
+ {
54
+ id: '345',
55
+ lineNumber: '1011'
56
+ }
57
+ ]
58
+ }.to_json
59
+ )
60
+
61
+ response = @income_statement.where(test_filter)
62
+ assert_equal response.first[:line_number], '1011'
63
+ end
64
+
65
+ def test_create
66
+ assert_raises BusinessCentral::NoSupportedMethod do
67
+ @income_statement.create({})
68
+ end
69
+ end
70
+
71
+ def test_update
72
+ assert_raises BusinessCentral::NoSupportedMethod do
73
+ @income_statement.update('123', {})
74
+ end
75
+ end
76
+
77
+ def test_delete
78
+ assert_raises BusinessCentral::NoSupportedMethod do
79
+ @income_statement.destroy('123')
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,124 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ # rake test TEST=test/business_central/object/irs1099_code_test.rb
5
+
6
+ class BusinessCentral::Object::Irs1099CodeTest < Minitest::Test
7
+ def setup
8
+ @company_id = '123456'
9
+ @client = BusinessCentral::Client.new
10
+ @irs1099_code = @client.irs1099_code(company_id: @company_id)
11
+ end
12
+
13
+ def test_find_all
14
+ stub_request(:get, /irs1099Codes/)
15
+ .to_return(
16
+ status: 200,
17
+ body: {
18
+ 'value': [
19
+ {
20
+ id: 1,
21
+ displayName: 'code1'
22
+ }
23
+ ]
24
+ }.to_json
25
+ )
26
+
27
+ response = @irs1099_code.find_all
28
+ assert_equal response.first[:display_name], 'code1'
29
+ end
30
+
31
+ def test_find_by_id
32
+ test_id = '2'
33
+ stub_request(:get, /irs1099Codes\(#{test_id}\)/)
34
+ .to_return(
35
+ status: 200,
36
+ body: {
37
+ id: test_id,
38
+ displayName: 'code2'
39
+ }.to_json
40
+ )
41
+
42
+ response = @irs1099_code.find_by_id(test_id)
43
+ assert_equal response[:display_name], 'code2'
44
+ end
45
+
46
+ def test_where
47
+ test_filter = "displayName eq 'customer3'"
48
+ stub_request(:get, /irs1099Codes\?\$filter=#{test_filter}/)
49
+ .to_return(
50
+ status: 200,
51
+ body: {
52
+ 'value': [
53
+ {
54
+ id: 3,
55
+ displayName: 'code3'
56
+ }
57
+ ]
58
+ }.to_json
59
+ )
60
+
61
+ response = @irs1099_code.where(test_filter)
62
+ assert_equal response.first[:display_name], 'code3'
63
+ end
64
+
65
+ def test_create
66
+ stub_request(:post, /irs1099Codes/)
67
+ .to_return(
68
+ status: 200,
69
+ body: {
70
+ displayName: 'code4'
71
+ }.to_json
72
+ )
73
+
74
+ response = @irs1099_code.create(
75
+ display_name: 'code4'
76
+ )
77
+ assert_equal response[:display_name], 'code4'
78
+ end
79
+
80
+ def test_update
81
+ test_id = '2'
82
+ stub_request(:get, /irs1099Codes\(#{test_id}\)/)
83
+ .to_return(
84
+ status: 200,
85
+ body: {
86
+ etag: '3333',
87
+ id: test_id,
88
+ displayName: 'code5'
89
+ }.to_json
90
+ )
91
+
92
+ stub_request(:patch, /irs1099Codes\(#{test_id}\)/)
93
+ .to_return(
94
+ status: 200,
95
+ body: {
96
+ etag: '4444',
97
+ displayName: 'code6'
98
+ }.to_json
99
+ )
100
+
101
+ response = @irs1099_code.update(
102
+ test_id,
103
+ display_name: 'code6'
104
+ )
105
+ assert_equal response[:display_name], 'code6'
106
+ end
107
+
108
+ def test_delete
109
+ test_id = '33333'
110
+ stub_request(:get, /irs1099Codes\(#{test_id}\)/)
111
+ .to_return(
112
+ status: 200,
113
+ body: {
114
+ etag: '5555',
115
+ displayName: 'code7'
116
+ }.to_json
117
+ )
118
+
119
+ stub_request(:delete, /irs1099Codes\(#{test_id}\)/)
120
+ .to_return(status: 204)
121
+
122
+ assert @irs1099_code.destroy(test_id)
123
+ end
124
+ end
@@ -25,7 +25,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
25
25
  end
26
26
 
27
27
  def test_find_all
28
- stub_request(:get, /journalLines/)
28
+ stub_request(:get, %r{journals\(\d+\)\/journalLines})
29
29
  .to_return(
30
30
  status: 200,
31
31
  body: {
@@ -45,7 +45,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
45
45
 
46
46
  def test_find_by_id
47
47
  test_id = '2'
48
- stub_request(:get, /journalLines\(#{test_id}\)/)
48
+ stub_request(:get, %r{journals\(\d+\)\/journalLines\(#{test_id}\)})
49
49
  .to_return(
50
50
  status: 200,
51
51
  body: {
@@ -62,7 +62,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
62
62
 
63
63
  def test_where
64
64
  test_filter = "description eq 'journalLine3'"
65
- stub_request(:get, /journalLines\?\$filter=#{test_filter}/)
65
+ stub_request(:get, %r{journals\(\d+\)\/journalLines\?\$filter=#{test_filter}})
66
66
  .to_return(
67
67
  status: 200,
68
68
  body: {
@@ -82,7 +82,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
82
82
  end
83
83
 
84
84
  def test_create
85
- stub_request(:post, /journalLines/)
85
+ stub_request(:post, %r{journals\(\d+\)\/journalLines})
86
86
  .to_return(
87
87
  status: 200,
88
88
  body: {
@@ -101,7 +101,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
101
101
 
102
102
  def test_update
103
103
  test_id = '2'
104
- stub_request(:get, /journalLines\(#{test_id}\)/)
104
+ stub_request(:get, %r{journals\(\d+\)\/journalLines\(#{test_id}\)})
105
105
  .to_return(
106
106
  status: 200,
107
107
  body: {
@@ -113,7 +113,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
113
113
  }.to_json
114
114
  )
115
115
 
116
- stub_request(:patch, /journalLines\(#{test_id}\)/)
116
+ stub_request(:patch, %r{journals\(\d+\)\/journalLines\(#{test_id}\)})
117
117
  .to_return(
118
118
  status: 200,
119
119
  body: {
@@ -133,7 +133,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
133
133
 
134
134
  def test_delete
135
135
  test_id = '33333'
136
- stub_request(:get, /journalLines\(#{test_id}\)/)
136
+ stub_request(:get, %r{journals\(\d+\)\/journalLines\(#{test_id}\)})
137
137
  .to_return(
138
138
  status: 200,
139
139
  body: {
@@ -144,7 +144,7 @@ class BusinessCentral::Object::JournalLineTest < Minitest::Test
144
144
  }.to_json
145
145
  )
146
146
 
147
- stub_request(:delete, /journalLines\(#{test_id}\)/)
147
+ stub_request(:delete, %r{journals\(\d+\)\/journalLines\(#{test_id}\)})
148
148
  .to_return(status: 204)
149
149
 
150
150
  assert @journal_line.destroy(test_id)
@@ -121,4 +121,24 @@ class BusinessCentral::Object::JournalTest < Minitest::Test
121
121
 
122
122
  assert @journal.destroy(test_journal_id)
123
123
  end
124
+
125
+ def test_line_navigation
126
+ stub_request(:get, %r{journals\(\d+\)\/journalLines})
127
+ .to_return(
128
+ status: 200,
129
+ body: {
130
+ 'value': [
131
+ {
132
+ journalDisplayName: 'journal1',
133
+ lineNumber: 1000,
134
+ description: 'journalLine1'
135
+ }
136
+ ]
137
+ }.to_json
138
+ )
139
+
140
+ response = @client.journal(company_id: @company_id, id: '123')
141
+ .journal_line.find_all
142
+ assert_equal response.first[:line_number], 1000
143
+ end
124
144
  end
@@ -15,7 +15,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
15
15
  end
16
16
 
17
17
  def test_find_all
18
- stub_request(:get, /salesCreditMemoLines/)
18
+ stub_request(:get, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines})
19
19
  .to_return(
20
20
  status: 200,
21
21
  body: {
@@ -35,7 +35,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
35
35
 
36
36
  def test_find_by_id
37
37
  test_id = '09876'
38
- stub_request(:get, /salesCreditMemoLines\(#{test_id}\)/)
38
+ stub_request(:get, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\(#{test_id}\)})
39
39
  .to_return(
40
40
  status: 200,
41
41
  body: {
@@ -51,7 +51,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
51
51
 
52
52
  def test_where
53
53
  test_filter = "sequence eq '1020'"
54
- stub_request(:get, /salesCreditMemoLines\?\$filter=#{test_filter}/)
54
+ stub_request(:get, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\?\$filter=#{test_filter}})
55
55
  .to_return(
56
56
  status: 200,
57
57
  body: {
@@ -69,7 +69,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
69
69
  end
70
70
 
71
71
  def test_create
72
- stub_request(:post, /salesCreditMemoLines/)
72
+ stub_request(:post, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines})
73
73
  .to_return(
74
74
  status: 200,
75
75
  body: {
@@ -86,7 +86,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
86
86
 
87
87
  def test_update
88
88
  test_id = '011123'
89
- stub_request(:get, /salesCreditMemoLines\(#{test_id}\)/)
89
+ stub_request(:get, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\(#{test_id}\)})
90
90
  .to_return(
91
91
  status: 200,
92
92
  body: {
@@ -97,7 +97,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
97
97
  }.to_json
98
98
  )
99
99
 
100
- stub_request(:patch, /salesCreditMemoLines\(#{test_id}\)/)
100
+ stub_request(:patch, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\(#{test_id}\)})
101
101
  .to_return(
102
102
  status: 200,
103
103
  body: {
@@ -116,7 +116,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
116
116
 
117
117
  def test_delete
118
118
  test_id = '0111245'
119
- stub_request(:get, /salesCreditMemoLines\(#{test_id}\)/)
119
+ stub_request(:get, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\(#{test_id}\)})
120
120
  .to_return(
121
121
  status: 200,
122
122
  body: {
@@ -126,7 +126,7 @@ class BusinessCentral::Object::SalesCreditMemoLineTest < Minitest::Test
126
126
  }.to_json
127
127
  )
128
128
 
129
- stub_request(:delete, /salesCreditMemoLines\(#{test_id}\)/)
129
+ stub_request(:delete, %r{salesCreditMemos\(\d+\)\/salesCreditMemoLines\(#{test_id}\)})
130
130
  .to_return(status: 204)
131
131
 
132
132
  assert @sales_credit_memo_line.destroy(test_id)