netsuite 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/netsuite.rb +17 -6
- data/lib/netsuite/actions/add.rb +7 -4
- data/lib/netsuite/actions/get.rb +1 -1
- data/lib/netsuite/actions/initialize.rb +1 -1
- data/lib/netsuite/namespaces/list_acct.rb +11 -0
- data/lib/netsuite/namespaces/list_rel.rb +11 -0
- data/lib/netsuite/namespaces/platform_common.rb +11 -0
- data/lib/netsuite/namespaces/platform_core.rb +11 -0
- data/lib/netsuite/namespaces/tran_sales.rb +11 -0
- data/lib/netsuite/records/bill_address.rb +3 -1
- data/lib/netsuite/records/classification.rb +27 -0
- data/lib/netsuite/records/customer.rb +4 -3
- data/lib/netsuite/records/customer_addressbook_list.rb +3 -2
- data/lib/netsuite/records/invoice.rb +18 -15
- data/lib/netsuite/records/invoice_item.rb +34 -0
- data/lib/netsuite/records/invoice_item_list.rb +11 -12
- data/lib/netsuite/records/non_inventory_sale_item.rb +4 -2
- data/lib/netsuite/records/record_ref.rb +8 -2
- data/lib/netsuite/records/ship_address.rb +3 -1
- data/lib/netsuite/support/attributes.rb +22 -0
- data/lib/netsuite/support/fields.rb +54 -0
- data/lib/netsuite/support/record_refs.rb +33 -0
- data/lib/netsuite/support/records.rb +40 -0
- data/lib/netsuite/{savon_support.rb → support/requests.rb} +2 -2
- data/lib/netsuite/version.rb +1 -1
- data/spec/netsuite/records/bill_address_spec.rb +37 -0
- data/spec/netsuite/records/classification_spec.rb +37 -0
- data/spec/netsuite/records/customer_addressbook_list_spec.rb +53 -28
- data/spec/netsuite/records/invoice_item_list_spec.rb +13 -13
- data/spec/netsuite/records/invoice_item_spec.rb +58 -0
- data/spec/netsuite/records/invoice_spec.rb +33 -83
- data/spec/netsuite/records/non_inventory_sale_item_spec.rb +21 -0
- data/spec/netsuite/records/record_ref_spec.rb +26 -0
- data/spec/netsuite/records/ship_address_spec.rb +21 -0
- data/spec/netsuite/support/attributes_spec.rb +5 -0
- data/spec/netsuite/support/fields_spec.rb +60 -0
- data/spec/netsuite/support/record_refs_spec.rb +5 -0
- data/spec/netsuite/{record_support_spec.rb → support/records_spec.rb} +6 -5
- data/spec/netsuite/{savon_support_spec.rb → support/requests_spec.rb} +2 -2
- data/spec/support/read_only_field_matcher.rb +7 -0
- metadata +32 -19
- data/lib/netsuite/attribute_support.rb +0 -16
- data/lib/netsuite/field_support.rb +0 -36
- data/lib/netsuite/record_ref_support.rb +0 -31
- data/lib/netsuite/record_support.rb +0 -17
- data/spec/netsuite/attribute_support_spec.rb +0 -5
- data/spec/netsuite/field_support_spec.rb +0 -34
- data/spec/netsuite/record_ref_support_spec.rb +0 -5
@@ -61,4 +61,25 @@ describe NetSuite::Records::NonInventorySaleItem do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
describe '#to_record' do
|
65
|
+
before do
|
66
|
+
item.handling_cost = 100.0
|
67
|
+
item.is_online = true
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'can represent itself as a SOAP record' do
|
71
|
+
record = {
|
72
|
+
'listAcct:handlingCost' => 100.0,
|
73
|
+
'listAcct:isOnline' => true
|
74
|
+
}
|
75
|
+
item.to_record.should eql(record)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#record_type' do
|
80
|
+
it 'returns a string of the SOAP type' do
|
81
|
+
item.record_type.should eql('listAcct:NonInventorySaleItem')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
64
85
|
end
|
@@ -58,4 +58,30 @@ describe NetSuite::Records::RecordRef do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
describe 'initialize from record' do
|
62
|
+
it 'initializes a new ref with the proper attributes from the record' do
|
63
|
+
record = NetSuite::Records::Classification.new(:is_inactive => false, :name => 'Retail', :internal_id => '9')
|
64
|
+
record_ref = NetSuite::Records::RecordRef.new(record)
|
65
|
+
record_ref.should be_kind_of(NetSuite::Records::RecordRef)
|
66
|
+
record_ref.internal_id.should eql('9')
|
67
|
+
record_ref.type.should eql('classification')
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#to_record' do
|
72
|
+
it 'can represent itself as a SOAP record' do
|
73
|
+
record_ref = NetSuite::Records::RecordRef.new(:something => 'blah')
|
74
|
+
record = {
|
75
|
+
'platformCore:something' => 'blah'
|
76
|
+
}
|
77
|
+
record_ref.to_record.should eql(record)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#record_type' do
|
82
|
+
it 'returns a string of the SOAP type' do
|
83
|
+
record_ref.record_type.should eql('platformCore:RecordRef')
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
61
87
|
end
|
@@ -12,4 +12,25 @@ describe NetSuite::Records::ShipAddress do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
+
describe '#to_record' do
|
16
|
+
before do
|
17
|
+
ship_address.ship_attention = 'Mr. Smith'
|
18
|
+
ship_address.ship_zip = '90007'
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'can represent itself as a SOAP record' do
|
22
|
+
record = {
|
23
|
+
'platformCommon:shipAttention' => 'Mr. Smith',
|
24
|
+
'platformCommon:shipZip' => '90007'
|
25
|
+
}
|
26
|
+
ship_address.to_record.should eql(record)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#record_type' do
|
31
|
+
it 'returns a string of the SOAP record type' do
|
32
|
+
ship_address.record_type.should eql('platformCommon:ShipAddress')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
15
36
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NetSuite::Support::Fields do
|
4
|
+
let(:klass) { Class.new.send(:include, NetSuite::Support::Fields) }
|
5
|
+
let(:instance) { klass.new }
|
6
|
+
|
7
|
+
describe '.fields' do
|
8
|
+
context 'with arguments' do
|
9
|
+
it 'calls .field with each argument passed to it' do
|
10
|
+
[:one, :two, :three].each do |field|
|
11
|
+
klass.should_receive(:field).with(field)
|
12
|
+
end
|
13
|
+
klass.fields(:one, :two, :three)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'without arguments' do
|
18
|
+
it 'returns a Set of the field arguments' do
|
19
|
+
arguments = [:one, :two, :three]
|
20
|
+
klass.fields(*arguments)
|
21
|
+
klass.fields.should eql(Set.new(arguments))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.field' do
|
27
|
+
it 'defines instance accessor methods for the given field' do
|
28
|
+
klass.field(:one)
|
29
|
+
instance.one = 1
|
30
|
+
instance.one.should eql(1)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '.read_only_fields' do
|
35
|
+
context 'with arguments' do
|
36
|
+
it 'calls .read_only_field with each argument passed to it' do
|
37
|
+
[:one, :two, :three].each do |field|
|
38
|
+
klass.should_receive(:read_only_field).with(field)
|
39
|
+
end
|
40
|
+
klass.read_only_fields(:one, :two, :three)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'without arguments' do
|
45
|
+
it 'returns a Set of the read_only_field arguments' do
|
46
|
+
arguments = [:one, :two, :three]
|
47
|
+
klass.read_only_fields(*arguments)
|
48
|
+
klass.read_only_fields.should eql(Set.new(arguments))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '.read_only_field' do
|
54
|
+
it 'defines instance accessor methods for the given field' do
|
55
|
+
klass.should_receive(:field).with(:one)
|
56
|
+
klass.read_only_field(:one)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -3,7 +3,8 @@ require 'spec_helper'
|
|
3
3
|
module Foo
|
4
4
|
module Bar
|
5
5
|
class Baz
|
6
|
-
include NetSuite::
|
6
|
+
include NetSuite::Support::Fields
|
7
|
+
include NetSuite::Support::Records
|
7
8
|
|
8
9
|
def attributes
|
9
10
|
{ :source => 'Google', :total => 100.0 }
|
@@ -12,21 +13,21 @@ module Foo
|
|
12
13
|
end
|
13
14
|
end
|
14
15
|
|
15
|
-
describe NetSuite::
|
16
|
+
describe NetSuite::Support::Records do
|
16
17
|
let(:instance) { Foo::Bar::Baz.new }
|
17
18
|
|
18
19
|
describe '#record_type' do
|
19
20
|
it 'returns a hash of attributes to be used in a SOAP request' do
|
20
21
|
instance.to_record.should eql({
|
21
|
-
'
|
22
|
-
'
|
22
|
+
'platformCore:source' => 'Google',
|
23
|
+
'platformCore:total' => 100.0
|
23
24
|
})
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
28
|
describe '#record_type' do
|
28
29
|
it 'returns a string of the record type to be used in a SOAP request' do
|
29
|
-
instance.record_type.should eql('
|
30
|
+
instance.record_type.should eql('platformCore:Baz')
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netsuite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 9
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 11
|
10
|
+
version: 0.0.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Moran
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-01-
|
18
|
+
date: 2012-01-11 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: savon
|
@@ -103,42 +103,51 @@ files:
|
|
103
103
|
- lib/netsuite/actions/add.rb
|
104
104
|
- lib/netsuite/actions/get.rb
|
105
105
|
- lib/netsuite/actions/initialize.rb
|
106
|
-
- lib/netsuite/attribute_support.rb
|
107
106
|
- lib/netsuite/configuration.rb
|
108
107
|
- lib/netsuite/errors.rb
|
109
|
-
- lib/netsuite/
|
110
|
-
- lib/netsuite/
|
111
|
-
- lib/netsuite/
|
108
|
+
- lib/netsuite/namespaces/list_acct.rb
|
109
|
+
- lib/netsuite/namespaces/list_rel.rb
|
110
|
+
- lib/netsuite/namespaces/platform_common.rb
|
111
|
+
- lib/netsuite/namespaces/platform_core.rb
|
112
|
+
- lib/netsuite/namespaces/tran_sales.rb
|
112
113
|
- lib/netsuite/records/bill_address.rb
|
114
|
+
- lib/netsuite/records/classification.rb
|
113
115
|
- lib/netsuite/records/customer.rb
|
114
116
|
- lib/netsuite/records/customer_addressbook_list.rb
|
115
117
|
- lib/netsuite/records/invoice.rb
|
118
|
+
- lib/netsuite/records/invoice_item.rb
|
116
119
|
- lib/netsuite/records/invoice_item_list.rb
|
117
120
|
- lib/netsuite/records/non_inventory_sale_item.rb
|
118
121
|
- lib/netsuite/records/record_ref.rb
|
119
122
|
- lib/netsuite/records/ship_address.rb
|
120
123
|
- lib/netsuite/response.rb
|
121
|
-
- lib/netsuite/
|
124
|
+
- lib/netsuite/support/attributes.rb
|
125
|
+
- lib/netsuite/support/fields.rb
|
126
|
+
- lib/netsuite/support/record_refs.rb
|
127
|
+
- lib/netsuite/support/records.rb
|
128
|
+
- lib/netsuite/support/requests.rb
|
122
129
|
- lib/netsuite/version.rb
|
123
130
|
- netsuite.gemspec
|
124
131
|
- spec/netsuite/actions/add_spec.rb
|
125
132
|
- spec/netsuite/actions/get_spec.rb
|
126
133
|
- spec/netsuite/actions/initialize_spec.rb
|
127
|
-
- spec/netsuite/attribute_support_spec.rb
|
128
134
|
- spec/netsuite/configuration_spec.rb
|
129
|
-
- spec/netsuite/field_support_spec.rb
|
130
|
-
- spec/netsuite/record_ref_support_spec.rb
|
131
|
-
- spec/netsuite/record_support_spec.rb
|
132
135
|
- spec/netsuite/records/bill_address_spec.rb
|
136
|
+
- spec/netsuite/records/classification_spec.rb
|
133
137
|
- spec/netsuite/records/customer_addressbook_list_spec.rb
|
134
138
|
- spec/netsuite/records/customer_spec.rb
|
135
139
|
- spec/netsuite/records/invoice_item_list_spec.rb
|
140
|
+
- spec/netsuite/records/invoice_item_spec.rb
|
136
141
|
- spec/netsuite/records/invoice_spec.rb
|
137
142
|
- spec/netsuite/records/non_inventory_sale_item_spec.rb
|
138
143
|
- spec/netsuite/records/record_ref_spec.rb
|
139
144
|
- spec/netsuite/records/ship_address_spec.rb
|
140
145
|
- spec/netsuite/response_spec.rb
|
141
|
-
- spec/netsuite/
|
146
|
+
- spec/netsuite/support/attributes_spec.rb
|
147
|
+
- spec/netsuite/support/fields_spec.rb
|
148
|
+
- spec/netsuite/support/record_refs_spec.rb
|
149
|
+
- spec/netsuite/support/records_spec.rb
|
150
|
+
- spec/netsuite/support/requests_spec.rb
|
142
151
|
- spec/netsuite_spec.rb
|
143
152
|
- spec/spec_helper.rb
|
144
153
|
- spec/support/configuration.rb
|
@@ -148,6 +157,7 @@ files:
|
|
148
157
|
- spec/support/fixtures/get/get_customer.xml
|
149
158
|
- spec/support/fixtures/get/get_invoice.xml
|
150
159
|
- spec/support/fixtures/initialize/initialize_invoice_from_customer.xml
|
160
|
+
- spec/support/read_only_field_matcher.rb
|
151
161
|
- spec/support/record_ref_matcher.rb
|
152
162
|
- spec/support/savon.rb
|
153
163
|
- wsdl/2011_02.wsdl
|
@@ -188,21 +198,23 @@ test_files:
|
|
188
198
|
- spec/netsuite/actions/add_spec.rb
|
189
199
|
- spec/netsuite/actions/get_spec.rb
|
190
200
|
- spec/netsuite/actions/initialize_spec.rb
|
191
|
-
- spec/netsuite/attribute_support_spec.rb
|
192
201
|
- spec/netsuite/configuration_spec.rb
|
193
|
-
- spec/netsuite/field_support_spec.rb
|
194
|
-
- spec/netsuite/record_ref_support_spec.rb
|
195
|
-
- spec/netsuite/record_support_spec.rb
|
196
202
|
- spec/netsuite/records/bill_address_spec.rb
|
203
|
+
- spec/netsuite/records/classification_spec.rb
|
197
204
|
- spec/netsuite/records/customer_addressbook_list_spec.rb
|
198
205
|
- spec/netsuite/records/customer_spec.rb
|
199
206
|
- spec/netsuite/records/invoice_item_list_spec.rb
|
207
|
+
- spec/netsuite/records/invoice_item_spec.rb
|
200
208
|
- spec/netsuite/records/invoice_spec.rb
|
201
209
|
- spec/netsuite/records/non_inventory_sale_item_spec.rb
|
202
210
|
- spec/netsuite/records/record_ref_spec.rb
|
203
211
|
- spec/netsuite/records/ship_address_spec.rb
|
204
212
|
- spec/netsuite/response_spec.rb
|
205
|
-
- spec/netsuite/
|
213
|
+
- spec/netsuite/support/attributes_spec.rb
|
214
|
+
- spec/netsuite/support/fields_spec.rb
|
215
|
+
- spec/netsuite/support/record_refs_spec.rb
|
216
|
+
- spec/netsuite/support/records_spec.rb
|
217
|
+
- spec/netsuite/support/requests_spec.rb
|
206
218
|
- spec/netsuite_spec.rb
|
207
219
|
- spec/spec_helper.rb
|
208
220
|
- spec/support/configuration.rb
|
@@ -212,5 +224,6 @@ test_files:
|
|
212
224
|
- spec/support/fixtures/get/get_customer.xml
|
213
225
|
- spec/support/fixtures/get/get_invoice.xml
|
214
226
|
- spec/support/fixtures/initialize/initialize_invoice_from_customer.xml
|
227
|
+
- spec/support/read_only_field_matcher.rb
|
215
228
|
- spec/support/record_ref_matcher.rb
|
216
229
|
- spec/support/savon.rb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module NetSuite
|
2
|
-
module AttributeSupport
|
3
|
-
|
4
|
-
def attributes
|
5
|
-
@attributes ||= {}
|
6
|
-
end
|
7
|
-
private :attributes
|
8
|
-
|
9
|
-
def initialize_from_attributes_hash(attributes = {})
|
10
|
-
Hash[attributes.select { |k,v| self.class.fields.include?(k) }].each do |k,v|
|
11
|
-
send("#{k}=", v)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module NetSuite
|
2
|
-
module FieldSupport
|
3
|
-
include AttributeSupport
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
base.send(:extend, ClassMethods)
|
7
|
-
end
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
|
11
|
-
def fields(*args)
|
12
|
-
if args.empty?
|
13
|
-
@fields ||= Set.new
|
14
|
-
else
|
15
|
-
args.each do |arg|
|
16
|
-
field arg
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def field(name)
|
22
|
-
name_sym = name.to_sym
|
23
|
-
fields << name_sym
|
24
|
-
define_method(name_sym) do
|
25
|
-
attributes[name_sym]
|
26
|
-
end
|
27
|
-
|
28
|
-
define_method("#{name_sym}=") do |value|
|
29
|
-
attributes[name_sym] = value
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module NetSuite
|
2
|
-
module RecordRefSupport
|
3
|
-
|
4
|
-
def self.included(base)
|
5
|
-
base.extend(ClassMethods)
|
6
|
-
end
|
7
|
-
|
8
|
-
module ClassMethods
|
9
|
-
|
10
|
-
def record_refs(*names)
|
11
|
-
names.each do |name|
|
12
|
-
record_ref name
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def record_ref(name)
|
17
|
-
name_sym = name.to_sym
|
18
|
-
fields << name_sym
|
19
|
-
define_method "#{name}=" do |attrs|
|
20
|
-
attributes[name_sym] = NetSuite::Records::RecordRef.new(attrs)
|
21
|
-
end
|
22
|
-
|
23
|
-
define_method name_sym do
|
24
|
-
attributes[name_sym]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module NetSuite
|
2
|
-
module RecordSupport
|
3
|
-
include AttributeSupport
|
4
|
-
|
5
|
-
def to_record
|
6
|
-
attributes.inject({}) do |hash, (k,v)|
|
7
|
-
hash.store("listRel:#{k.to_s.lower_camelcase}", v)
|
8
|
-
hash
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def record_type
|
13
|
-
"listRel:#{self.class.to_s.split('::').last}"
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|