ns_connector 0.0.6
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.
- data/Gemfile +13 -0
- data/Gemfile.lock +80 -0
- data/Guardfile +9 -0
- data/HACKING +31 -0
- data/LICENSE.txt +7 -0
- data/README.rdoc +191 -0
- data/Rakefile +45 -0
- data/VERSION +1 -0
- data/lib/ns_connector.rb +4 -0
- data/lib/ns_connector/attaching.rb +42 -0
- data/lib/ns_connector/chunked_searching.rb +111 -0
- data/lib/ns_connector/config.rb +66 -0
- data/lib/ns_connector/errors.rb +79 -0
- data/lib/ns_connector/field_store.rb +19 -0
- data/lib/ns_connector/hash.rb +11 -0
- data/lib/ns_connector/resource.rb +288 -0
- data/lib/ns_connector/resources.rb +3 -0
- data/lib/ns_connector/resources/contact.rb +279 -0
- data/lib/ns_connector/resources/customer.rb +355 -0
- data/lib/ns_connector/resources/invoice.rb +466 -0
- data/lib/ns_connector/restlet.rb +137 -0
- data/lib/ns_connector/sublist.rb +21 -0
- data/lib/ns_connector/sublist_item.rb +25 -0
- data/misc/failed_sublist_saving_patch +547 -0
- data/scripts/run_restlet +25 -0
- data/scripts/test_shell +21 -0
- data/spec/attaching_spec.rb +48 -0
- data/spec/chunked_searching_spec.rb +75 -0
- data/spec/config_spec.rb +43 -0
- data/spec/resource_spec.rb +340 -0
- data/spec/resources/contact_spec.rb +8 -0
- data/spec/resources/customer_spec.rb +8 -0
- data/spec/resources/invoice_spec.rb +20 -0
- data/spec/restlet_spec.rb +135 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/sublist_item_spec.rb +25 -0
- data/spec/sublist_spec.rb +45 -0
- data/spec/support/mock_data.rb +10 -0
- data/support/read_only_test +63 -0
- data/support/restlet.js +384 -0
- data/support/super_dangerous_write_test +85 -0
- metadata +221 -0
@@ -0,0 +1,85 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# XXX XXX XXX XXX XXX XXX XXX Warning! XXX XXX XXX XXX XXX XXX XXX XXX XXX
|
3
|
+
#
|
4
|
+
# This *will* write to NetSuite, and delete things. If there is a bug here, we
|
5
|
+
# will probably leave things behind, accidentaly delete important production
|
6
|
+
# data and generally break shit.
|
7
|
+
#
|
8
|
+
# So, in summary, don't run this anywhere you mind losing data.
|
9
|
+
#
|
10
|
+
# XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX XXX
|
11
|
+
|
12
|
+
$: << File.join(
|
13
|
+
File.dirname(__FILE__),
|
14
|
+
'..', 'lib'
|
15
|
+
)
|
16
|
+
|
17
|
+
require 'ns_connector'
|
18
|
+
require 'rspec/autorun'
|
19
|
+
|
20
|
+
unless ARGV.size == 1 then
|
21
|
+
warn "Usage: #{$0} <config as ruby code>"
|
22
|
+
warn "Warning! This script will probably destroy production data, "\
|
23
|
+
"it is only intended for testing"
|
24
|
+
end
|
25
|
+
|
26
|
+
# We shift the argument off here, or it gets passed to the RSpec runner
|
27
|
+
NSConnector::Config.set_config!(eval(ARGV.shift))
|
28
|
+
|
29
|
+
def customer_id
|
30
|
+
NSConnector::Config[:valid_customer_id]
|
31
|
+
end
|
32
|
+
|
33
|
+
def delete_id id
|
34
|
+
NSConnector::Restlet.execute!(
|
35
|
+
:action => 'delete',
|
36
|
+
:type_id => 'contact',
|
37
|
+
:fields => ['id'],
|
38
|
+
:data => {
|
39
|
+
:id => id
|
40
|
+
}
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'create' do
|
45
|
+
it 'returns the saved record' do
|
46
|
+
resource = NSConnector::Restlet.execute!(
|
47
|
+
:action => 'create',
|
48
|
+
:type_id => 'contact',
|
49
|
+
:fields => ['id', 'firstname'],
|
50
|
+
:data => {
|
51
|
+
:firstname => '__test__'
|
52
|
+
}
|
53
|
+
)
|
54
|
+
|
55
|
+
# Cleanup
|
56
|
+
at_exit do
|
57
|
+
warn "Cleaning up contact id: #{resource['id']}"
|
58
|
+
delete_id(resource['id'])
|
59
|
+
end
|
60
|
+
|
61
|
+
expect(resource).to be_a(Hash)
|
62
|
+
expect(resource['id']).to be_a(String)
|
63
|
+
expect(resource['id']).to_not be_empty
|
64
|
+
expect(resource['firstname']).to eql('__test__')
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe 'update' do
|
69
|
+
it 'returns the updated record' do
|
70
|
+
resource = NSConnector::Restlet.execute!(
|
71
|
+
:action => 'update',
|
72
|
+
:type_id => 'contact',
|
73
|
+
:fields => ['id', 'firstname'],
|
74
|
+
:data => {
|
75
|
+
:id => customer_id,
|
76
|
+
:firstname => 'Testguy'
|
77
|
+
}
|
78
|
+
)
|
79
|
+
|
80
|
+
expect(resource).to be_a(Hash)
|
81
|
+
expect(resource['id']).to be_a(String)
|
82
|
+
expect(resource['id']).to_not be_empty
|
83
|
+
expect(resource['firstname']).to eql('Testguy')
|
84
|
+
end
|
85
|
+
end
|
metadata
ADDED
@@ -0,0 +1,221 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ns_connector
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Christian Marie <pingu@anchor.com.au>
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: webmock
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: jeweler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: bundler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rdoc
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: pry-debugger
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: guard-rspec
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
description: This library provides an interface to NetSuite via'RESTlets'. This appears
|
143
|
+
to be a quicker and more reliableway of interfacing with NetSuite records than the
|
144
|
+
SOAP API.
|
145
|
+
email:
|
146
|
+
executables: []
|
147
|
+
extensions: []
|
148
|
+
extra_rdoc_files:
|
149
|
+
- LICENSE.txt
|
150
|
+
- README.rdoc
|
151
|
+
files:
|
152
|
+
- Gemfile
|
153
|
+
- Gemfile.lock
|
154
|
+
- Guardfile
|
155
|
+
- HACKING
|
156
|
+
- LICENSE.txt
|
157
|
+
- README.rdoc
|
158
|
+
- Rakefile
|
159
|
+
- VERSION
|
160
|
+
- lib/ns_connector.rb
|
161
|
+
- lib/ns_connector/attaching.rb
|
162
|
+
- lib/ns_connector/chunked_searching.rb
|
163
|
+
- lib/ns_connector/config.rb
|
164
|
+
- lib/ns_connector/errors.rb
|
165
|
+
- lib/ns_connector/field_store.rb
|
166
|
+
- lib/ns_connector/hash.rb
|
167
|
+
- lib/ns_connector/resource.rb
|
168
|
+
- lib/ns_connector/resources.rb
|
169
|
+
- lib/ns_connector/resources/contact.rb
|
170
|
+
- lib/ns_connector/resources/customer.rb
|
171
|
+
- lib/ns_connector/resources/invoice.rb
|
172
|
+
- lib/ns_connector/restlet.rb
|
173
|
+
- lib/ns_connector/sublist.rb
|
174
|
+
- lib/ns_connector/sublist_item.rb
|
175
|
+
- misc/failed_sublist_saving_patch
|
176
|
+
- scripts/run_restlet
|
177
|
+
- scripts/test_shell
|
178
|
+
- spec/attaching_spec.rb
|
179
|
+
- spec/chunked_searching_spec.rb
|
180
|
+
- spec/config_spec.rb
|
181
|
+
- spec/resource_spec.rb
|
182
|
+
- spec/resources/contact_spec.rb
|
183
|
+
- spec/resources/customer_spec.rb
|
184
|
+
- spec/resources/invoice_spec.rb
|
185
|
+
- spec/restlet_spec.rb
|
186
|
+
- spec/spec_helper.rb
|
187
|
+
- spec/sublist_item_spec.rb
|
188
|
+
- spec/sublist_spec.rb
|
189
|
+
- spec/support/mock_data.rb
|
190
|
+
- support/read_only_test
|
191
|
+
- support/restlet.js
|
192
|
+
- support/super_dangerous_write_test
|
193
|
+
homepage: ''
|
194
|
+
licenses:
|
195
|
+
- MIT
|
196
|
+
post_install_message:
|
197
|
+
rdoc_options: []
|
198
|
+
require_paths:
|
199
|
+
- lib
|
200
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
segments:
|
207
|
+
- 0
|
208
|
+
hash: 2425652984816094111
|
209
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
211
|
+
requirements:
|
212
|
+
- - ! '>='
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
requirements: []
|
216
|
+
rubyforge_project:
|
217
|
+
rubygems_version: 1.8.23
|
218
|
+
signing_key:
|
219
|
+
specification_version: 3
|
220
|
+
summary: An interface to NetSuite records via RESTlets.
|
221
|
+
test_files: []
|