activenetsuite 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/.rspec +1 -0
  4. data/CHANGELOG +0 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +51 -0
  7. data/History.txt +3 -0
  8. data/Manifest.txt +60 -0
  9. data/README.rdoc +14 -0
  10. data/Rakefile +14 -0
  11. data/activenetsuite.gemspec +30 -0
  12. data/lib/activenetsuite.rb +30 -0
  13. data/lib/activenetsuite/accounting/account.rb +11 -0
  14. data/lib/activenetsuite/accounting/non_inventory_sale_item.rb +10 -0
  15. data/lib/activenetsuite/core/custom_field_list.rb +7 -0
  16. data/lib/activenetsuite/core/custom_field_ref.rb +8 -0
  17. data/lib/activenetsuite/core/deleted_record.rb +10 -0
  18. data/lib/activenetsuite/core/get_deleted_result.rb +13 -0
  19. data/lib/activenetsuite/core/record.rb +254 -0
  20. data/lib/activenetsuite/core/record_ref.rb +35 -0
  21. data/lib/activenetsuite/core/search_record.rb +97 -0
  22. data/lib/activenetsuite/core/search_result.rb +12 -0
  23. data/lib/activenetsuite/core/status.rb +50 -0
  24. data/lib/activenetsuite/helpers/client.rb +135 -0
  25. data/lib/activenetsuite/helpers/error.rb +7 -0
  26. data/lib/activenetsuite/helpers/method_inflector.rb +78 -0
  27. data/lib/activenetsuite/helpers/response_methods.rb +21 -0
  28. data/lib/activenetsuite/helpers/search_response_methods.rb +62 -0
  29. data/lib/activenetsuite/messages/add_response.rb +8 -0
  30. data/lib/activenetsuite/messages/delete_list_response.rb +19 -0
  31. data/lib/activenetsuite/messages/delete_response.rb +8 -0
  32. data/lib/activenetsuite/messages/get_deleted_response.rb +23 -0
  33. data/lib/activenetsuite/messages/get_deleted_result.rb +21 -0
  34. data/lib/activenetsuite/messages/get_response.rb +13 -0
  35. data/lib/activenetsuite/messages/read_response.rb +7 -0
  36. data/lib/activenetsuite/messages/search_more_with_id_response.rb +8 -0
  37. data/lib/activenetsuite/messages/search_response.rb +8 -0
  38. data/lib/activenetsuite/messages/update_response.rb +8 -0
  39. data/lib/activenetsuite/messages/write_response.rb +16 -0
  40. data/lib/activenetsuite/relationships/partner.rb +18 -0
  41. data/lib/activenetsuite/relationships/vendor.rb +14 -0
  42. data/lib/activenetsuite/sales/cash_refund.rb +12 -0
  43. data/lib/activenetsuite/sales/cash_sale.rb +12 -0
  44. data/lib/activenetsuite/soap/NetSuiteServiceClient.rb +978 -0
  45. data/lib/activenetsuite/soap/default.rb +68163 -0
  46. data/lib/activenetsuite/soap/defaultDriver.rb +419 -0
  47. data/lib/activenetsuite/soap/defaultMappingRegistry.rb +62549 -0
  48. data/lib/activenetsuite/version.rb +3 -0
  49. data/spec/lib/activenetsuite/accounting/non_inventory_sale_item_spec.rb +9 -0
  50. data/spec/lib/activenetsuite/core/record_ref_spec.rb +56 -0
  51. data/spec/lib/activenetsuite/core/record_spec.rb +298 -0
  52. data/spec/lib/activenetsuite/core/search_record_spec.rb +50 -0
  53. data/spec/lib/activenetsuite/core/search_result_spec.rb +26 -0
  54. data/spec/lib/activenetsuite/helpers/client_spec.rb +115 -0
  55. data/spec/lib/activenetsuite/helpers/method_inflector_spec.rb +85 -0
  56. data/spec/lib/activenetsuite/helpers/search_response_methods_spec.rb +50 -0
  57. data/spec/lib/activenetsuite/messages/search_response_spec.rb +5 -0
  58. data/spec/lib/activenetsuite/relationships/partner_spec.rb +22 -0
  59. data/spec/lib/activenetsuite/relationships/vendor_spec.rb +14 -0
  60. data/spec/lib/activenetsuite/sales/cash_refund_spec.rb +10 -0
  61. data/spec/lib/activenetsuite/sales/cash_sale_spec.rb +10 -0
  62. data/spec/spec_helper.rb +17 -0
  63. metadata +138 -0
@@ -0,0 +1,3 @@
1
+ module ActiveNetsuite
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe NonInventorySaleItem do
4
+ describe '.basic_search_class' do
5
+ subject { described_class.basic_search_class }
6
+ it { should eq ItemSearchBasic }
7
+ end
8
+ end
9
+
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+
3
+ describe RecordRef do
4
+ let(:ref) do
5
+ ref = described_class.new
6
+ ref.type = 'record'
7
+ ref.internal_id = 12
8
+ ref.external_id = 45
9
+ ref
10
+ end
11
+
12
+ describe '#==' do
13
+ subject { this == that }
14
+
15
+ let :this do
16
+ this = RecordRef.new
17
+ this.internal_id = 12
18
+ this.external_id = 34
19
+ this.type = 'record'
20
+ this
21
+ end
22
+
23
+ let :that do
24
+ that = RecordRef.new
25
+ that.internal_id = 12
26
+ that.external_id = 34
27
+ that.type = 'record'
28
+ that
29
+ end
30
+
31
+ context 'when all attributes match' do
32
+ it { should be_true }
33
+ end
34
+
35
+ context 'when all attributes match' do
36
+ before { that.internal_id = 56 }
37
+ it { should be_false }
38
+ end
39
+ end
40
+
41
+ describe '#record' do
42
+ subject { ref.record }
43
+
44
+ it { should be_a Record }
45
+ its(:internal_id) { should eq 12 }
46
+ its(:external_id) { should eq 45 }
47
+ end
48
+
49
+ describe '#delete' do
50
+ subject { ref.delete }
51
+ it do
52
+ Record.should_receive(:delete).with([ref])
53
+ subject
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,298 @@
1
+ require 'spec_helper'
2
+
3
+ class ActiveNetsuite::Record
4
+ AttrExternalId = XSD::QName.new(nil, "externalId")
5
+ AttrInternalId = XSD::QName.new(nil, "internalId")
6
+
7
+ def __xmlattr
8
+ @__xmlattr ||= {}
9
+ end
10
+
11
+ def xmlattr_internalId
12
+ __xmlattr[AttrInternalId]
13
+ end
14
+
15
+ def xmlattr_internalId=(value)
16
+ __xmlattr[AttrInternalId] = value
17
+ end
18
+
19
+ def xmlattr_externalId
20
+ __xmlattr[AttrExternalId]
21
+ end
22
+
23
+ def xmlattr_externalId=(value)
24
+ __xmlattr[AttrExternalId] = value
25
+ end
26
+
27
+ attr_accessor :foo
28
+ attr_accessor :bar
29
+ end
30
+
31
+ class ActiveNetsuite::RecordSearchBasic; end
32
+
33
+ describe Record do
34
+ let(:model) { Record.new args }
35
+ let(:args) { nil }
36
+ let(:client) { double }
37
+ before { Record.client = client }
38
+
39
+ describe '#add' do
40
+ subject { model.add }
41
+
42
+ before do
43
+ model.client.stub(:add) { result }
44
+ end
45
+ let(:result) { double success?: success, internal_id: :internal_id }
46
+ let(:success) { true }
47
+
48
+ it { should eq result }
49
+
50
+ context 'when success' do
51
+ let(:success) { true }
52
+ it { expect { subject }.to change { model.internal_id }.to(:internal_id) }
53
+ end
54
+
55
+ context 'when not success' do
56
+ let(:success) { false }
57
+ it { expect { subject }.to_not \
58
+ change { model.internal_id }.to(:internal_id) }
59
+ end
60
+ end
61
+
62
+ describe '#update' do
63
+ subject { model.update }
64
+
65
+ before { model.client.stub(:update).with(model) { result } }
66
+ let(:result) { double }
67
+
68
+ it { should be result }
69
+ end
70
+
71
+ describe '#delete' do
72
+ subject { model.delete }
73
+
74
+ before do
75
+ client.stub(:delete) { result }
76
+ model.internal_id = 100
77
+ end
78
+ let(:result) { double success?: success }
79
+ let(:success) { true }
80
+ it { should be result }
81
+
82
+ context 'when it is success' do
83
+ let(:success) { true }
84
+ it { expect { subject }.to change { model.internal_id }.to(nil) }
85
+ end
86
+
87
+ context 'when it is failure' do
88
+ let(:success) { false }
89
+ it { expect { subject }.to_not change { model.internal_id }.from(100) }
90
+ end
91
+ end
92
+
93
+ describe '#client' do
94
+ subject { model.client }
95
+ before { model.class.client = client }
96
+ let(:client) { double }
97
+
98
+ it { should be client }
99
+ end
100
+
101
+ describe '#load' do
102
+ subject { model.load }
103
+ before { model.instance_variable_set(:@loaded, loaded) }
104
+ let(:loaded) { double }
105
+
106
+ it { should be model }
107
+
108
+ context 'when already loaded' do
109
+ let(:loaded) { true }
110
+
111
+ it { should be model }
112
+ it do
113
+ client.should_not_receive(:get)
114
+ subject
115
+ end
116
+ end
117
+
118
+ context 'when internal_id is set' do
119
+ let(:loaded) { false }
120
+
121
+ before do
122
+ model.internal_id = 123
123
+ client.stub(:get) { double record: record }
124
+ end
125
+
126
+ let(:record) do
127
+ double getters: %i(foo bar),
128
+ foo: :foo,
129
+ bar: :bar
130
+ end
131
+
132
+ it { expect { subject }.to change { model.loaded? }.to(true) }
133
+ it { expect { subject }.to change { model.foo }.to(:foo) }
134
+ it { expect { subject }.to change { model.bar }.to(:bar) }
135
+ end
136
+ end
137
+
138
+ describe '#loaded?' do
139
+ subject { model.loaded? }
140
+ before { model.instance_variable_set(:@loaded, true) }
141
+ it { should be_true }
142
+ end
143
+
144
+ describe '#ref' do
145
+ subject { model.ref }
146
+
147
+ it { should be_a RecordRef }
148
+ its(:type) { should eq "record" }
149
+ its(:internal_id) { should eq model.internal_id }
150
+ end
151
+
152
+ describe '#setters' do
153
+ subject { model.setters }
154
+ it do
155
+ should include *%i(foo= bar= nullFieldList=
156
+ xmlattr_externalId= xmlattr_internalId=)
157
+ end
158
+ end
159
+
160
+ describe '#getters' do
161
+ subject { model.getters }
162
+ it do
163
+ should include *%i(foo bar xmlattr_externalId xmlattr_internalId)
164
+ end
165
+ end
166
+
167
+ describe '.delete' do
168
+ subject { described_class.delete(objects) }
169
+
170
+ let(:ids) { [10, 20] }
171
+
172
+ let(:recs) do
173
+ ids.map do |id|
174
+ rec = Record.new
175
+ rec.internal_id = id
176
+ rec
177
+ end
178
+ end
179
+
180
+ let(:refs) do
181
+ ids.map do |id|
182
+ ref = RecordRef.new
183
+ ref.internal_id = id
184
+ ref.type = 'record'
185
+ ref
186
+ end
187
+ end
188
+
189
+ context 'when internal ids given' do
190
+ let(:objects) { ids }
191
+
192
+ it do
193
+ described_class.client.should_receive(:delete_list) do |args|
194
+ args == refs
195
+ end
196
+ subject
197
+ end
198
+ end
199
+
200
+ context 'when Records given' do
201
+ let(:objects) { recs }
202
+
203
+ it do
204
+ described_class.client.should_receive(:delete_list) do |args|
205
+ args == refs
206
+ end
207
+ subject
208
+ end
209
+ end
210
+
211
+ context 'when Refs given' do
212
+ let(:objects) { refs }
213
+
214
+ it do
215
+ described_class.client.should_receive(:delete_list) do |args|
216
+ args == refs
217
+ end
218
+ subject
219
+ end
220
+ end
221
+ end
222
+
223
+ describe '.client' do
224
+ subject { Record.client }
225
+ before { Record.client = client }
226
+ it { should be client }
227
+ end
228
+
229
+ describe '.client=' do
230
+ subject { Record.client = client }
231
+ before { Record.client = nil }
232
+ it { expect { subject }.to change { Record.client }.to(client) }
233
+ end
234
+
235
+ describe '.find' do
236
+ subject { Record.find 123 }
237
+ before { client.stub(:get).with(ref) { response } }
238
+ let :ref do
239
+ ref = RecordRef.new
240
+ ref.type = 'record'
241
+ ref.internal_id = 123
242
+ ref
243
+ end
244
+ let(:response) { double record: record }
245
+
246
+ context 'when record found' do
247
+ let(:record) { double }
248
+ it { should eq record }
249
+ end
250
+
251
+ context 'when record not found' do
252
+ let(:record) { nil }
253
+ it { expect { subject }.to raise_error NotFoundError,
254
+ 'type: record, internal_id: 123, external_id: ' }
255
+ end
256
+
257
+ context 'when record found' do
258
+ let(:record) { double }
259
+ it { should be record }
260
+ end
261
+ end
262
+
263
+ describe '.find_by_internal_id' do
264
+ subject { Record.find_by_internal_id 123 }
265
+ before { client.stub(:get).with(ref) { response } }
266
+ let :ref do
267
+ ref = RecordRef.new
268
+ ref.type = 'record'
269
+ ref.internal_id = 123
270
+ ref
271
+ end
272
+ let(:response) { double record: :record }
273
+ it { should eq :record }
274
+ end
275
+
276
+ describe '.find_by_external_id' do
277
+ subject { Record.find_by_external_id 'boo' }
278
+
279
+ before { client.stub(:get).with(ref) { response } }
280
+
281
+ let :ref do
282
+ ref = RecordRef.new
283
+ ref.type = 'record'
284
+ ref.external_id = 'boo'
285
+ ref.internal_id = nil
286
+ ref
287
+ end
288
+ let(:response) { double record: record }
289
+ let(:record) { double }
290
+
291
+ it { should eq record }
292
+ end
293
+
294
+ describe '.basic_search_class' do
295
+ subject { Record.basic_search_class }
296
+ it { should be RecordSearchBasic }
297
+ end
298
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe SearchRecord do
4
+ class SearchRecord
5
+ attr_accessor :foo
6
+ end
7
+
8
+ let(:search) do
9
+ search = SearchRecord.new
10
+ search.record_class = Record
11
+ search
12
+ end
13
+
14
+ before do
15
+ Record.stub(:client) { client }
16
+ SearchRecord.stub(:inflected_method) { :foo }
17
+ end
18
+
19
+ describe '#each' do
20
+ subject { search.each }
21
+ let(:client) { double search: response }
22
+ let(:response) { %i(a b c) }
23
+ it do
24
+ search.response.should_receive(:each).and_yield(response)
25
+ subject
26
+ end
27
+ end
28
+
29
+ describe '#where' do
30
+ subject { search.where *args }
31
+ let(:args) { double }
32
+
33
+ context 'when foo: "bar" given' do
34
+ let(:args) { [{foo: 'bar'}] }
35
+ let :where do
36
+ where = SearchRecord.new
37
+ where.foo = SearchStringField.new
38
+ where.foo.xmlattr_operator = SearchStringFieldOperator::Is
39
+ where.foo.searchValue = 'bar'
40
+ where
41
+ end
42
+
43
+ it { should be_a SearchRecord }
44
+ its(:foo) { should be_a SearchStringField }
45
+ its('foo.xmlattr_operator') { should eq SearchStringFieldOperator::Is }
46
+ its('foo.searchValue') { 'bar' }
47
+ end
48
+ end
49
+ end
50
+
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe SearchResult do
4
+ let(:result) { SearchResult.new }
5
+
6
+ describe '#has_more?' do
7
+ subject { result.has_more? }
8
+ before do
9
+ result.page_index = page_index
10
+ result.total_pages = total_pages
11
+ end
12
+
13
+ context 'when page_index < total_pages' do
14
+ let(:page_index) { 10 }
15
+ let(:total_pages) { 20 }
16
+ it { should be_true }
17
+ end
18
+
19
+ context 'when page_index = total_pages' do
20
+ let(:page_index) { 10 }
21
+ let(:total_pages) { 10 }
22
+ it { should be_false }
23
+ end
24
+ end
25
+ end
26
+