xeroizer 2.15.3 → 2.15.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/LICENSE.txt +22 -1
- data/README.md +29 -2
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/xeroizer.rb +0 -1
- data/lib/xeroizer/exceptions.rb +17 -2
- data/lib/xeroizer/http.rb +21 -4
- data/lib/xeroizer/models/bank_transaction.rb +17 -5
- data/lib/xeroizer/models/contact.rb +17 -17
- data/lib/xeroizer/models/credit_note.rb +18 -18
- data/lib/xeroizer/models/invoice.rb +54 -32
- data/lib/xeroizer/models/line_item.rb +6 -4
- data/lib/xeroizer/models/manual_journal.rb +12 -12
- data/lib/xeroizer/models/payment.rb +11 -11
- data/lib/xeroizer/models/tax_rate.rb +1 -0
- data/lib/xeroizer/oauth.rb +24 -5
- data/lib/xeroizer/record/base.rb +25 -1
- data/lib/xeroizer/record/base_model.rb +84 -11
- data/lib/xeroizer/record/base_model_http_proxy.rb +2 -1
- data/lib/xeroizer/record/model_definition_helper.rb +3 -0
- data/lib/xeroizer/record/xml_helper.rb +6 -2
- data/lib/xeroizer/response.rb +14 -0
- data/test/acceptance/acceptance_test.rb +1 -1
- data/test/acceptance/bulk_operations_test.rb +48 -0
- data/test/unit/models/bank_transaction_model_parsing_test.rb +3 -1
- data/test/unit/models/invoice_test.rb +13 -12
- data/test/unit/record/base_model_test.rb +8 -0
- data/xeroizer.gemspec +7 -3
- metadata +63 -48
@@ -48,6 +48,6 @@ module AcceptanceTest
|
|
48
48
|
assert_not_nil ENV["CONSUMER_SECRET"], "No CONSUMER_SECRET environment variable specified."
|
49
49
|
assert_not_nil ENV["KEY_FILE"], "No KEY_FILE environment variable specified."
|
50
50
|
assert File.exists?(ENV["KEY_FILE"]), "The file <#{ENV["KEY_FILE"]}> does not exist."
|
51
|
-
OAuthCredentials.new ENV["CONSUMER_KEY"], ENV["CONSUMER_SECRET"], ENV["KEY_FILE"]
|
51
|
+
Xeroizer::OAuthCredentials.new ENV["CONSUMER_KEY"], ENV["CONSUMER_SECRET"], ENV["KEY_FILE"]
|
52
52
|
end
|
53
53
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
require "acceptance_test"
|
3
|
+
|
4
|
+
class BulkOperationsTest < Test::Unit::TestCase
|
5
|
+
include AcceptanceTest
|
6
|
+
|
7
|
+
def random_name
|
8
|
+
"test-person-#{rand 1000000000}"
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup
|
12
|
+
super
|
13
|
+
@client = Xeroizer::PrivateApplication.new(@consumer_key, @consumer_secret, @key_file)
|
14
|
+
end
|
15
|
+
|
16
|
+
can "create multiple invoices at once" do
|
17
|
+
c1, c2 = nil, nil
|
18
|
+
assert_true(
|
19
|
+
@client.Contact.batch_save do
|
20
|
+
c1 = @client.Contact.build(name: random_name)
|
21
|
+
c2 = @client.Contact.build(name: random_name)
|
22
|
+
end
|
23
|
+
)
|
24
|
+
[c1, c2].each {|c| assert_false c.new_record? }
|
25
|
+
end
|
26
|
+
|
27
|
+
can "create and update new records in bulk" do
|
28
|
+
c1, c2 = nil, nil
|
29
|
+
assert_true(
|
30
|
+
@client.Contact.batch_save do
|
31
|
+
c1 = @client.Contact.create(name: random_name)
|
32
|
+
c1.email_address = "foo@bar.com"
|
33
|
+
c2 = @client.Contact.build(name: random_name)
|
34
|
+
end
|
35
|
+
)
|
36
|
+
[c1, c2].each {|c| assert_false c.new_record? }
|
37
|
+
c1.download_complete_record!
|
38
|
+
assert_equal c1.email_address, "foo@bar.com"
|
39
|
+
end
|
40
|
+
|
41
|
+
can "return false from #batch_save if validation fails" do
|
42
|
+
assert_false(
|
43
|
+
@client.Contact.batch_save do
|
44
|
+
@client.Contact.build(email_address: "guy-with-no-name@example.com")
|
45
|
+
end
|
46
|
+
)
|
47
|
+
end
|
48
|
+
end
|
@@ -31,7 +31,9 @@ class BankTransactionModelParsingTest < Test::Unit::TestCase
|
|
31
31
|
|
32
32
|
assert_equal Date.parse("2010-07-30T00:00:00"), the_bank_transaction.date
|
33
33
|
assert_equal "Inclusive", the_bank_transaction.line_amount_types
|
34
|
-
|
34
|
+
|
35
|
+
assert_equal(Time.parse("2008-02-20T12:19:56.657Z"), the_bank_transaction.updated_date_utc)
|
36
|
+
|
35
37
|
assert_equal Date.parse("2010-07-30T00:00:00"), the_bank_transaction.fully_paid_on_date
|
36
38
|
assert_equal "d20b6c54-7f5d-4ce6-ab83-55f609719126", the_bank_transaction.bank_transaction_id
|
37
39
|
assert_equal "SPEND", the_bank_transaction.type
|
@@ -41,18 +41,6 @@ class InvoiceTest < Test::Unit::TestCase
|
|
41
41
|
|
42
42
|
context "invoice totals" do
|
43
43
|
|
44
|
-
should "raise error when trying to set totals directly" do
|
45
|
-
assert_raises Xeroizer::SettingTotalDirectlyNotSupported do
|
46
|
-
@invoice.sub_total = 100.0
|
47
|
-
end
|
48
|
-
assert_raises Xeroizer::SettingTotalDirectlyNotSupported do
|
49
|
-
@invoice.total_tax = 100.0
|
50
|
-
end
|
51
|
-
assert_raises Xeroizer::SettingTotalDirectlyNotSupported do
|
52
|
-
@invoice.total = 100.0
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
44
|
should "large-scale testing from API XML" do
|
57
45
|
invoices = @client.Invoice.all
|
58
46
|
invoices.each do | invoice |
|
@@ -109,4 +97,17 @@ class InvoiceTest < Test::Unit::TestCase
|
|
109
97
|
|
110
98
|
end
|
111
99
|
|
100
|
+
context "updated date" do
|
101
|
+
should "get the updated date as utc" do
|
102
|
+
invoices = @client.Invoice.all
|
103
|
+
|
104
|
+
assert_equal(Time.parse("2008-9-16T10:28:51.5Z"), invoices[0].updated_date_utc)
|
105
|
+
|
106
|
+
invoices.each do |invoice|
|
107
|
+
assert invoice.updated_date_utc.utc?, "updated_date_utc should be utc"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
|
112
113
|
end
|
@@ -47,4 +47,12 @@ class RecordBaseModelTest < Test::Unit::TestCase
|
|
47
47
|
|
48
48
|
end
|
49
49
|
|
50
|
+
context "InvalidPermissionError" do
|
51
|
+
should "also be catchable by the name 'InvaidPermissionError' for historical reasons" do
|
52
|
+
assert_raise(Xeroizer::Record::BaseModel::InvaidPermissionError) do
|
53
|
+
raise Xeroizer::Record::BaseModel::InvalidPermissionError
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
end
|
data/xeroizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "xeroizer"
|
8
|
-
s.version = "2.15.
|
8
|
+
s.version = "2.15.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Wayne Robinson"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-07-04"
|
13
13
|
s.description = "Ruby library for the Xero accounting system API."
|
14
14
|
s.email = "wayne.robinson@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -99,6 +99,7 @@ Gem::Specification.new do |s|
|
|
99
99
|
"test/acceptance/about_fetching_bank_transactions_test.rb",
|
100
100
|
"test/acceptance/acceptance_test.rb",
|
101
101
|
"test/acceptance/bank_transaction_reference_data.rb",
|
102
|
+
"test/acceptance/bulk_operations_test.rb",
|
102
103
|
"test/stub_responses/accounts.xml",
|
103
104
|
"test/stub_responses/api_exception.xml",
|
104
105
|
"test/stub_responses/bogus_oauth_error",
|
@@ -357,7 +358,7 @@ Gem::Specification.new do |s|
|
|
357
358
|
s.homepage = "http://github.com/waynerobinson/xeroizer"
|
358
359
|
s.licenses = ["MIT"]
|
359
360
|
s.require_paths = ["lib"]
|
360
|
-
s.rubygems_version = "1.8.
|
361
|
+
s.rubygems_version = "1.8.25"
|
361
362
|
s.summary = "Xero library"
|
362
363
|
|
363
364
|
if s.respond_to? :specification_version then
|
@@ -367,6 +368,7 @@ Gem::Specification.new do |s|
|
|
367
368
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
368
369
|
s.add_runtime_dependency(%q<oauth>, ["= 0.4.5"])
|
369
370
|
s.add_runtime_dependency(%q<activesupport>, [">= 0"])
|
371
|
+
s.add_runtime_dependency(%q<tzinfo>, [">= 0"])
|
370
372
|
s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
|
371
373
|
s.add_runtime_dependency(%q<i18n>, [">= 0"])
|
372
374
|
s.add_runtime_dependency(%q<builder>, [">= 2.1.2"])
|
@@ -379,6 +381,7 @@ Gem::Specification.new do |s|
|
|
379
381
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
380
382
|
s.add_dependency(%q<oauth>, ["= 0.4.5"])
|
381
383
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
384
|
+
s.add_dependency(%q<tzinfo>, [">= 0"])
|
382
385
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
383
386
|
s.add_dependency(%q<i18n>, [">= 0"])
|
384
387
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
@@ -392,6 +395,7 @@ Gem::Specification.new do |s|
|
|
392
395
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
393
396
|
s.add_dependency(%q<oauth>, ["= 0.4.5"])
|
394
397
|
s.add_dependency(%q<activesupport>, [">= 0"])
|
398
|
+
s.add_dependency(%q<tzinfo>, [">= 0"])
|
395
399
|
s.add_dependency(%q<nokogiri>, [">= 0"])
|
396
400
|
s.add_dependency(%q<i18n>, [">= 0"])
|
397
401
|
s.add_dependency(%q<builder>, [">= 2.1.2"])
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xeroizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 57
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 15
|
9
|
-
-
|
10
|
-
version: 2.15.
|
9
|
+
- 5
|
10
|
+
version: 2.15.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Wayne Robinson
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-07-04 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
|
21
|
+
name: builder
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
25
|
- - ">="
|
@@ -30,12 +30,12 @@ dependencies:
|
|
30
30
|
- 1
|
31
31
|
- 2
|
32
32
|
version: 2.1.2
|
33
|
+
prerelease: false
|
33
34
|
type: :runtime
|
34
|
-
|
35
|
-
version_requirements: *id001
|
35
|
+
requirement: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
38
|
-
|
37
|
+
name: oauth
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - "="
|
@@ -46,12 +46,12 @@ dependencies:
|
|
46
46
|
- 4
|
47
47
|
- 5
|
48
48
|
version: 0.4.5
|
49
|
+
prerelease: false
|
49
50
|
type: :runtime
|
50
|
-
|
51
|
-
version_requirements: *id002
|
51
|
+
requirement: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
-
|
54
|
-
|
53
|
+
name: activesupport
|
54
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
55
|
none: false
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
@@ -60,12 +60,12 @@ dependencies:
|
|
60
60
|
segments:
|
61
61
|
- 0
|
62
62
|
version: "0"
|
63
|
+
prerelease: false
|
63
64
|
type: :runtime
|
64
|
-
|
65
|
-
version_requirements: *id003
|
65
|
+
requirement: *id003
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
|
-
|
68
|
-
|
67
|
+
name: tzinfo
|
68
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
69
|
none: false
|
70
70
|
requirements:
|
71
71
|
- - ">="
|
@@ -74,12 +74,12 @@ dependencies:
|
|
74
74
|
segments:
|
75
75
|
- 0
|
76
76
|
version: "0"
|
77
|
+
prerelease: false
|
77
78
|
type: :runtime
|
78
|
-
|
79
|
-
version_requirements: *id004
|
79
|
+
requirement: *id004
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
|
82
|
-
|
81
|
+
name: nokogiri
|
82
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ">="
|
@@ -88,12 +88,26 @@ dependencies:
|
|
88
88
|
segments:
|
89
89
|
- 0
|
90
90
|
version: "0"
|
91
|
+
prerelease: false
|
91
92
|
type: :runtime
|
92
|
-
|
93
|
-
version_requirements: *id005
|
93
|
+
requirement: *id005
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
+
name: i18n
|
96
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
hash: 3
|
102
|
+
segments:
|
103
|
+
- 0
|
104
|
+
version: "0"
|
95
105
|
prerelease: false
|
96
|
-
|
106
|
+
type: :runtime
|
107
|
+
requirement: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: builder
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
97
111
|
none: false
|
98
112
|
requirements:
|
99
113
|
- - ">="
|
@@ -104,12 +118,12 @@ dependencies:
|
|
104
118
|
- 1
|
105
119
|
- 2
|
106
120
|
version: 2.1.2
|
121
|
+
prerelease: false
|
107
122
|
type: :runtime
|
108
|
-
|
109
|
-
version_requirements: *id006
|
123
|
+
requirement: *id007
|
110
124
|
- !ruby/object:Gem::Dependency
|
111
|
-
|
112
|
-
|
125
|
+
name: oauth
|
126
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
113
127
|
none: false
|
114
128
|
requirements:
|
115
129
|
- - ">="
|
@@ -120,12 +134,12 @@ dependencies:
|
|
120
134
|
- 3
|
121
135
|
- 6
|
122
136
|
version: 0.3.6
|
137
|
+
prerelease: false
|
123
138
|
type: :runtime
|
124
|
-
|
125
|
-
version_requirements: *id007
|
139
|
+
requirement: *id008
|
126
140
|
- !ruby/object:Gem::Dependency
|
127
|
-
|
128
|
-
|
141
|
+
name: activesupport
|
142
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
129
143
|
none: false
|
130
144
|
requirements:
|
131
145
|
- - ">="
|
@@ -134,12 +148,12 @@ dependencies:
|
|
134
148
|
segments:
|
135
149
|
- 0
|
136
150
|
version: "0"
|
151
|
+
prerelease: false
|
137
152
|
type: :runtime
|
138
|
-
|
139
|
-
version_requirements: *id008
|
153
|
+
requirement: *id009
|
140
154
|
- !ruby/object:Gem::Dependency
|
141
|
-
|
142
|
-
|
155
|
+
name: nokogiri
|
156
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
143
157
|
none: false
|
144
158
|
requirements:
|
145
159
|
- - ">="
|
@@ -148,12 +162,12 @@ dependencies:
|
|
148
162
|
segments:
|
149
163
|
- 0
|
150
164
|
version: "0"
|
165
|
+
prerelease: false
|
151
166
|
type: :runtime
|
152
|
-
|
153
|
-
version_requirements: *id009
|
167
|
+
requirement: *id010
|
154
168
|
- !ruby/object:Gem::Dependency
|
155
|
-
|
156
|
-
|
169
|
+
name: mocha
|
170
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
157
171
|
none: false
|
158
172
|
requirements:
|
159
173
|
- - ">="
|
@@ -162,12 +176,12 @@ dependencies:
|
|
162
176
|
segments:
|
163
177
|
- 0
|
164
178
|
version: "0"
|
179
|
+
prerelease: false
|
165
180
|
type: :development
|
166
|
-
|
167
|
-
version_requirements: *id010
|
181
|
+
requirement: *id011
|
168
182
|
- !ruby/object:Gem::Dependency
|
169
|
-
|
170
|
-
|
183
|
+
name: shoulda
|
184
|
+
version_requirements: &id012 !ruby/object:Gem::Requirement
|
171
185
|
none: false
|
172
186
|
requirements:
|
173
187
|
- - ">="
|
@@ -176,9 +190,9 @@ dependencies:
|
|
176
190
|
segments:
|
177
191
|
- 0
|
178
192
|
version: "0"
|
193
|
+
prerelease: false
|
179
194
|
type: :development
|
180
|
-
|
181
|
-
version_requirements: *id011
|
195
|
+
requirement: *id012
|
182
196
|
description: Ruby library for the Xero accounting system API.
|
183
197
|
email: wayne.robinson@gmail.com
|
184
198
|
executables: []
|
@@ -271,6 +285,7 @@ files:
|
|
271
285
|
- test/acceptance/about_fetching_bank_transactions_test.rb
|
272
286
|
- test/acceptance/acceptance_test.rb
|
273
287
|
- test/acceptance/bank_transaction_reference_data.rb
|
288
|
+
- test/acceptance/bulk_operations_test.rb
|
274
289
|
- test/stub_responses/accounts.xml
|
275
290
|
- test/stub_responses/api_exception.xml
|
276
291
|
- test/stub_responses/bogus_oauth_error
|
@@ -554,7 +569,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
554
569
|
requirements: []
|
555
570
|
|
556
571
|
rubyforge_project:
|
557
|
-
rubygems_version: 1.8.
|
572
|
+
rubygems_version: 1.8.25
|
558
573
|
signing_key:
|
559
574
|
specification_version: 3
|
560
575
|
summary: Xero library
|