xeroizer 2.15.3 → 2.15.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- assert_equal Date.parse("2008-02-20T12:19:56.657"), the_bank_transaction.updated_date_utc
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.3"
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 = "2012-12-07"
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.24"
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: 53
4
+ hash: 57
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 15
9
- - 3
10
- version: 2.15.3
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: 2012-12-07 00:00:00 Z
18
+ date: 2013-07-04 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- prerelease: false
22
- requirement: &id001 !ruby/object:Gem::Requirement
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
- name: builder
35
- version_requirements: *id001
35
+ requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
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
- name: oauth
51
- version_requirements: *id002
51
+ requirement: *id002
52
52
  - !ruby/object:Gem::Dependency
53
- prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
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
- name: activesupport
65
- version_requirements: *id003
65
+ requirement: *id003
66
66
  - !ruby/object:Gem::Dependency
67
- prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
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
- name: nokogiri
79
- version_requirements: *id004
79
+ requirement: *id004
80
80
  - !ruby/object:Gem::Dependency
81
- prerelease: false
82
- requirement: &id005 !ruby/object:Gem::Requirement
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
- name: i18n
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
- requirement: &id006 !ruby/object:Gem::Requirement
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
- name: builder
109
- version_requirements: *id006
123
+ requirement: *id007
110
124
  - !ruby/object:Gem::Dependency
111
- prerelease: false
112
- requirement: &id007 !ruby/object:Gem::Requirement
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
- name: oauth
125
- version_requirements: *id007
139
+ requirement: *id008
126
140
  - !ruby/object:Gem::Dependency
127
- prerelease: false
128
- requirement: &id008 !ruby/object:Gem::Requirement
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
- name: activesupport
139
- version_requirements: *id008
153
+ requirement: *id009
140
154
  - !ruby/object:Gem::Dependency
141
- prerelease: false
142
- requirement: &id009 !ruby/object:Gem::Requirement
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
- name: nokogiri
153
- version_requirements: *id009
167
+ requirement: *id010
154
168
  - !ruby/object:Gem::Dependency
155
- prerelease: false
156
- requirement: &id010 !ruby/object:Gem::Requirement
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
- name: mocha
167
- version_requirements: *id010
181
+ requirement: *id011
168
182
  - !ruby/object:Gem::Dependency
169
- prerelease: false
170
- requirement: &id011 !ruby/object:Gem::Requirement
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
- name: shoulda
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.24
572
+ rubygems_version: 1.8.25
558
573
  signing_key:
559
574
  specification_version: 3
560
575
  summary: Xero library