xero_gateway 2.3.0 → 2.4.0

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.
@@ -3,14 +3,45 @@ require File.join(File.dirname(__FILE__), '../test_helper.rb')
3
3
  class InvoiceTest < Test::Unit::TestCase
4
4
 
5
5
  context "with line item totals" do
6
+ setup do
7
+ # make sure the invoices think they have a gateway
8
+ @invoice = create_test_invoice(
9
+ invoice_id: "a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999",
10
+ line_items_downloaded: false,
11
+ total: 6_969_00,
12
+ total_tax: 1_045.35,
13
+ sub_total: 5_923.65
14
+ )
15
+ @invoice.gateway = stub
16
+ end
6
17
 
7
18
  should "allow setting and reading these as instance variables without downloading line items" do
8
- invoice = create_test_invoice(:line_items_downloaded => false, :total => 6969_00)
19
+ assert !@invoice.line_items_downloaded?
9
20
 
10
- assert !invoice.line_items_downloaded?
11
21
  XeroGateway::Invoice.any_instance.expects(:download_line_items).never
12
- assert_equal 6969_00, invoice.total
22
+ assert_equal 6969_00, @invoice.total
23
+ assert_equal 1_045.35, @invoice.total_tax
24
+ assert_equal 5_923.65, @invoice.sub_total
25
+ end
26
+
27
+ should "download line items if we call #line_items" do
28
+ XeroGateway::Invoice.any_instance.expects(:download_line_items).once.returns([])
29
+ assert_equal [], @invoice.line_items
13
30
  end
31
+
32
+ should "also work when creating an invoice from XML" do
33
+ invoices_response_xml = File.open(File.join(File.dirname(__FILE__), "..", "stub_responses", "invoices.xml")).read
34
+ invoice_element = REXML::XPath.first(REXML::Document.new(invoices_response_xml), "/Response/Invoices/Invoice")
35
+ from_xml = XeroGateway::Invoice.from_xml(invoice_element)
36
+ from_xml.gateway = stub()
37
+
38
+ assert !from_xml.line_items_downloaded?
39
+ XeroGateway::Invoice.any_instance.expects(:download_line_items).never
40
+ assert_equal 1125.0, from_xml.total
41
+ assert_equal 125.0, from_xml.total_tax
42
+ assert_equal 1000.0, from_xml.sub_total
43
+ end
44
+
14
45
  end
15
46
 
16
47
  context "building and parsing XML" do
@@ -32,7 +63,7 @@ class InvoiceTest < Test::Unit::TestCase
32
63
  should "work for optional params" do
33
64
  invoice = create_test_invoice(:url => 'http://example.com?with=params&and=more')
34
65
  invoice_element = REXML::XPath.first(REXML::Document.new(invoice.to_xml), "/Invoice")
35
- assert_match /<Url>http:\/\/example.com\?with=params&amp;and=more<\/Url>/, invoice_element.to_s
66
+ assert_match(/<Url>http:\/\/example.com\?with=params&amp;and=more<\/Url>/, invoice_element.to_s)
36
67
 
37
68
  parsed_invoice = XeroGateway::Invoice.from_xml(invoice_element)
38
69
  assert_equal 'http://example.com?with=params&and=more', parsed_invoice.url
@@ -43,41 +74,41 @@ class InvoiceTest < Test::Unit::TestCase
43
74
  def test_invoice_sub_total_calculation
44
75
  invoice = create_test_invoice(:line_items_downloaded => true)
45
76
  line_item = invoice.line_items.first
46
-
77
+
47
78
  # Make sure that everything adds up to begin with.
48
- expected_sub_total = invoice.line_items.inject(BigDecimal.new('0')) { | sum, line_item | line_item.line_amount }
79
+ expected_sub_total = invoice.line_items.inject(BigDecimal.new('0')) { | sum, l | l.line_amount }
49
80
  assert_equal(expected_sub_total, invoice.sub_total)
50
-
81
+
51
82
  # Change the sub_total and check that it doesn't modify anything.
52
83
  invoice.sub_total = expected_sub_total * 10
53
84
  assert_equal(expected_sub_total, invoice.sub_total)
54
-
55
- # Change the amount of the first line item and make sure that
85
+
86
+ # Change the amount of the first line item and make sure that
56
87
  # everything still continues to add up.
57
88
  line_item.unit_amount = line_item.unit_amount + 10
58
89
  assert_not_equal(expected_sub_total, invoice.sub_total)
59
- expected_sub_total = invoice.line_items.inject(BigDecimal.new('0')) { | sum, line_item | line_item.line_amount }
90
+ expected_sub_total = invoice.line_items.inject(BigDecimal.new('0')) { | sum, l | l.line_amount }
60
91
  assert_equal(expected_sub_total, invoice.sub_total)
61
92
  end
62
-
93
+
63
94
  # Tests the total_tax calculation and that setting it manually doesn't modify the data.
64
95
  def test_invoice_sub_total_calculation2
65
96
  invoice = create_test_invoice(:line_items_downloaded => true)
66
97
  line_item = invoice.line_items.first
67
-
98
+
68
99
  # Make sure that everything adds up to begin with.
69
- expected_total_tax = invoice.line_items.inject(BigDecimal.new('0')) { | sum, line_item | line_item.tax_amount }
100
+ expected_total_tax = invoice.line_items.inject(BigDecimal.new('0')) { | sum, l | l.tax_amount }
70
101
  assert_equal(expected_total_tax, invoice.total_tax)
71
-
102
+
72
103
  # Change the total_tax and check that it doesn't modify anything.
73
104
  invoice.total_tax = expected_total_tax * 10
74
105
  assert_equal(expected_total_tax, invoice.total_tax)
75
-
76
- # Change the tax_amount of the first line item and make sure that
106
+
107
+ # Change the tax_amount of the first line item and make sure that
77
108
  # everything still continues to add up.
78
109
  line_item.tax_amount = line_item.tax_amount + 10
79
110
  assert_not_equal(expected_total_tax, invoice.total_tax)
80
- expected_total_tax = invoice.line_items.inject(BigDecimal.new('0')) { | sum, line_item | line_item.tax_amount }
111
+ expected_total_tax = invoice.line_items.inject(BigDecimal.new('0')) { | sum, l | l.tax_amount }
81
112
  assert_equal(expected_total_tax, invoice.total_tax)
82
113
  end
83
114
 
@@ -86,16 +117,16 @@ class InvoiceTest < Test::Unit::TestCase
86
117
  invoice = create_test_invoice(:line_items_downloaded => true)
87
118
  assert invoice.line_items_downloaded?
88
119
  line_item = invoice.line_items.first
89
-
120
+
90
121
  # Make sure that everything adds up to begin with.
91
122
  expected_total = invoice.sub_total + invoice.total_tax
92
123
  assert_equal(expected_total, invoice.total)
93
-
124
+
94
125
  # Change the total and check that it doesn't modify anything.
95
126
  invoice.total = expected_total * 10
96
127
  assert_equal(expected_total.to_f, invoice.total.to_f)
97
-
98
- # Change the quantity of the first line item and make sure that
128
+
129
+ # Change the quantity of the first line item and make sure that
99
130
  # everything still continues to add up.
100
131
  line_item.quantity = line_item.quantity + 5
101
132
  assert_not_equal(expected_total, invoice.total)
@@ -107,53 +138,53 @@ class InvoiceTest < Test::Unit::TestCase
107
138
  def test_line_amount_calculation
108
139
  invoice = create_test_invoice
109
140
  line_item = invoice.line_items.first
110
-
141
+
111
142
  # Make sure that everything adds up to begin with.
112
143
  expected_amount = line_item.quantity * line_item.unit_amount
113
144
  assert_equal(expected_amount, line_item.line_amount)
114
-
145
+
115
146
  # Change the line_amount and check that it doesn't modify anything.
116
147
  line_item.line_amount = expected_amount * 10
117
148
  assert_equal(expected_amount, line_item.line_amount)
118
-
149
+
119
150
  # Change the quantity and check that the line_amount has been updated.
120
151
  quantity = line_item.quantity + 2
121
152
  line_item.quantity = quantity
122
153
  assert_not_equal(expected_amount, line_item.line_amount)
123
154
  assert_equal(quantity * line_item.unit_amount, line_item.line_amount)
124
155
  end
125
-
156
+
126
157
  # Ensure that the totalling methods don't raise exceptions, even when
127
158
  # invoice.line_items is empty.
128
159
  def test_totalling_methods_when_line_items_empty
129
160
  invoice = create_test_invoice
130
161
  invoice.line_items = []
131
-
162
+
132
163
  assert_nothing_raised(Exception) {
133
164
  assert_equal(BigDecimal.new('0'), invoice.sub_total)
134
165
  assert_equal(BigDecimal.new('0'), invoice.total_tax)
135
166
  assert_equal(BigDecimal.new('0'), invoice.total)
136
167
  }
137
168
  end
138
-
169
+
139
170
  def test_invoice_type_helper_methods
140
171
  # Test accounts receivable invoices.
141
172
  invoice = create_test_invoice({:invoice_type => 'ACCREC'})
142
173
  assert_equal(true, invoice.accounts_receivable?, "Accounts RECEIVABLE invoice doesn't think it is.")
143
174
  assert_equal(false, invoice.accounts_payable?, "Accounts RECEIVABLE invoice thinks it's payable.")
144
-
175
+
145
176
  # Test accounts payable invoices.
146
177
  invoice = create_test_invoice({:invoice_type => 'ACCPAY'})
147
178
  assert_equal(false, invoice.accounts_receivable?, "Accounts PAYABLE invoice doesn't think it is.")
148
179
  assert_equal(true, invoice.accounts_payable?, "Accounts PAYABLE invoice thinks it's receivable.")
149
180
  end
150
-
151
-
181
+
182
+
152
183
  # Make sure that the create_test_invoice method is working correctly
153
184
  # with all the defaults and overrides.
154
185
  def test_create_test_invoice_defaults_working
155
186
  invoice = create_test_invoice
156
-
187
+
157
188
  # Test invoice defaults.
158
189
  assert_equal('ACCREC', invoice.invoice_type)
159
190
  assert_kind_of(Date, invoice.date)
@@ -162,19 +193,19 @@ class InvoiceTest < Test::Unit::TestCase
162
193
  assert_equal('12345', invoice.invoice_number)
163
194
  assert_equal('MY REFERENCE FOR THIS INVOICE', invoice.reference)
164
195
  assert_equal("Exclusive", invoice.line_amount_types)
165
-
196
+
166
197
  # Test the contact defaults.
167
198
  assert_equal('00000000-0000-0000-0000-000000000000', invoice.contact.contact_id)
168
199
  assert_equal('CONTACT NAME', invoice.contact.name)
169
-
200
+
170
201
  # Test address defaults.
171
202
  assert_equal('DEFAULT', invoice.contact.address.address_type)
172
203
  assert_equal('LINE 1 OF THE ADDRESS', invoice.contact.address.line_1)
173
-
204
+
174
205
  # Test phone defaults.
175
206
  assert_equal('DEFAULT', invoice.contact.phone.phone_type)
176
207
  assert_equal('12345678', invoice.contact.phone.number)
177
-
208
+
178
209
  # Test the line_item defaults.
179
210
  assert_equal('A LINE ITEM', invoice.line_items.first.description)
180
211
  assert_equal('200', invoice.line_items.first.account_code)
@@ -187,19 +218,19 @@ class InvoiceTest < Test::Unit::TestCase
187
218
  # Test overriding an invoice parameter (assume works for all).
188
219
  invoice = create_test_invoice({:invoice_type => 'ACCPAY'})
189
220
  assert_equal('ACCPAY', invoice.invoice_type)
190
-
221
+
191
222
  # Test overriding a contact/address/phone parameter (assume works for all).
192
223
  invoice = create_test_invoice({}, {:name => 'OVERRIDDEN NAME', :address => {:line_1 => 'OVERRIDDEN LINE 1'}, :phone => {:number => '999'}})
193
224
  assert_equal('OVERRIDDEN NAME', invoice.contact.name)
194
225
  assert_equal('OVERRIDDEN LINE 1', invoice.contact.address.line_1)
195
226
  assert_equal('999', invoice.contact.phone.number)
196
-
227
+
197
228
  # Test overriding line_items with hash.
198
229
  invoice = create_test_invoice({}, {}, {:description => 'OVERRIDDEN LINE ITEM'})
199
230
  assert_equal(1, invoice.line_items.size)
200
231
  assert_equal('OVERRIDDEN LINE ITEM', invoice.line_items.first.description)
201
232
  assert_equal(BigDecimal.new('100'), invoice.line_items.first.unit_amount)
202
-
233
+
203
234
  # Test overriding line_items with array of 2 line_items.
204
235
  invoice = create_test_invoice({}, {}, [
205
236
  {:description => 'OVERRIDDEN ITEM 1'},
@@ -211,28 +242,28 @@ class InvoiceTest < Test::Unit::TestCase
211
242
  assert_equal('OVERRIDDEN ITEM 2', invoice.line_items[1].description)
212
243
  assert_equal(BigDecimal.new('200'), invoice.line_items[1].unit_amount)
213
244
  end
214
-
245
+
215
246
  def test_auto_creation_of_associated_contact
216
247
  invoice = create_test_invoice({}, nil) # no contact
217
- assert_nil(invoice.instance_variable_get("@contact"))
218
-
248
+ assert(!invoice.instance_variable_defined?("@contact"))
249
+
219
250
  new_contact = invoice.contact
220
251
  assert_kind_of(XeroGateway::Contact, new_contact)
221
252
  end
222
-
253
+
223
254
  def test_add_line_item
224
255
  invoice = create_test_invoice({}, {}, nil) # no line_items
225
256
  assert_equal(0, invoice.line_items.size)
226
-
257
+
227
258
  line_item_params = {:description => "Test Item 1", :unit_amount => 100}
228
-
259
+
229
260
  # Test adding line item by hash
230
261
  line_item = invoice.add_line_item(line_item_params)
231
262
  assert_kind_of(XeroGateway::LineItem, line_item)
232
263
  assert_equal(line_item_params[:description], line_item.description)
233
264
  assert_equal(line_item_params[:unit_amount], line_item.unit_amount)
234
265
  assert_equal(1, invoice.line_items.size)
235
-
266
+
236
267
  # Test adding line item by XeroGateway::LineItem
237
268
  line_item = invoice.add_line_item(line_item_params)
238
269
  assert_kind_of(XeroGateway::LineItem, line_item)
@@ -253,9 +284,14 @@ class InvoiceTest < Test::Unit::TestCase
253
284
  end
254
285
 
255
286
  def test_optional_params
256
- invoice = create_test_invoice(:url => 'http://example.com', :branding_theme_id => 'a94a78db-5cc6-4e26-a52b-045237e56e6e')
287
+ eur_code = "EUR"
288
+ eur_rate = 1.80
289
+
290
+ invoice = create_test_invoice(:url => 'http://example.com', :branding_theme_id => 'a94a78db-5cc6-4e26-a52b-045237e56e6e', :currency_code => eur_code, :currency_rate => eur_rate)
257
291
  assert_equal 'http://example.com', invoice.url
258
292
  assert_equal 'a94a78db-5cc6-4e26-a52b-045237e56e6e', invoice.branding_theme_id
293
+ assert_equal eur_code, invoice.currency_code
294
+ assert_equal eur_rate, invoice.currency_rate
259
295
  end
260
296
 
261
297
  def test_updated_date_utc
@@ -265,7 +301,7 @@ class InvoiceTest < Test::Unit::TestCase
265
301
  end
266
302
 
267
303
  private
268
-
304
+
269
305
  def create_test_invoice(invoice_params = {}, contact_params = {}, line_item_params = [])
270
306
  unless invoice_params.nil?
271
307
  invoice_params = {
@@ -279,36 +315,36 @@ class InvoiceTest < Test::Unit::TestCase
279
315
  }.merge(invoice_params)
280
316
  end
281
317
  invoice = XeroGateway::Invoice.new(invoice_params || {})
282
-
318
+
283
319
  unless contact_params.nil?
284
320
  # Strip out :address key from contact_params to use as the default address.
285
321
  stripped_address = {
286
322
  :address_type => 'DEFAULT',
287
323
  :line_1 => 'LINE 1 OF THE ADDRESS'
288
324
  }.merge(contact_params.delete(:address) || {})
289
-
325
+
290
326
  # Strip out :phone key from contact_params to use at the default phone.
291
327
  stripped_phone = {
292
328
  :phone_type => 'DEFAULT',
293
329
  :number => '12345678'
294
330
  }.merge(contact_params.delete(:phone) || {})
295
-
331
+
296
332
  contact_params = {
297
333
  :contact_id => '00000000-0000-0000-0000-000000000000', # Just any valid GUID
298
334
  :name => "CONTACT NAME",
299
335
  :first_name => "Bob",
300
336
  :last_name => "Builder"
301
337
  }.merge(contact_params)
302
-
338
+
303
339
  # Create invoice.contact from contact_params.
304
340
  invoice.contact = XeroGateway::Contact.new(contact_params)
305
341
  invoice.contact.address = XeroGateway::Address.new(stripped_address)
306
342
  invoice.contact.phone = XeroGateway::Phone.new(stripped_phone)
307
343
  end
308
-
344
+
309
345
  unless line_item_params.nil?
310
346
  line_item_params = [line_item_params].flatten # always use an array, even if only a single hash passed in
311
-
347
+
312
348
  # At least one line item, make first have some defaults.
313
349
  line_item_params << {} if line_item_params.size == 0
314
350
  line_item_params[0] = {
@@ -318,13 +354,13 @@ class InvoiceTest < Test::Unit::TestCase
318
354
  :tax_amount => BigDecimal.new("12.5"),
319
355
  :tracking => XeroGateway::TrackingCategory.new(:name => "blah", :options => "hello")
320
356
  }.merge(line_item_params[0])
321
-
357
+
322
358
  # Create invoice.line_items from line_item_params
323
359
  line_item_params.each do | line_item |
324
360
  invoice.add_line_item(line_item)
325
361
  end
326
362
  end
327
-
363
+
328
364
  invoice
329
365
  end
330
366
 
@@ -10,7 +10,7 @@ class ManualJournalTest < Test::Unit::TestCase
10
10
  # test transaction defaults
11
11
  assert_equal 'POSTED', manual_journal.status
12
12
  assert_kind_of Date, manual_journal.date
13
- assert_equal 'test narration', manual_journal.narration
13
+ assert_equal 'test narration', manual_journal.narration
14
14
 
15
15
  # Test the journal_line defaults.
16
16
  journal_line = manual_journal.journal_lines.first
@@ -49,8 +49,8 @@ class ManualJournalTest < Test::Unit::TestCase
49
49
  assert_equal(journal_line_params[:line_amount], journal_line.line_amount)
50
50
  assert_equal(4, @manual_journal.journal_lines.size)
51
51
 
52
- # Test that having only 1 journal line fails.
53
- @manual_journal.journal_lines = []
52
+ # Test that having only 1 journal line fails.
53
+ @manual_journal.journal_lines = []
54
54
  @manual_journal.add_journal_line(journal_line_params)
55
55
  assert !@manual_journal.valid?
56
56
  end
@@ -63,10 +63,10 @@ class ManualJournalTest < Test::Unit::TestCase
63
63
  manual_journal_as_xml = manual_journal.to_xml
64
64
  manual_journal_element = REXML::XPath.first(REXML::Document.new(manual_journal_as_xml), "/ManualJournal")
65
65
 
66
- # checking for mandatory fields
66
+ # checking for mandatory fields
67
67
  assert_xml_field manual_journal_element, 'Date'
68
68
  assert_xml_field manual_journal_element, 'Narration', :value => 'test narration'
69
- assert_xml_field manual_journal_element, 'Status', :value => 'POSTED'
69
+ assert_xml_field manual_journal_element, 'Status', :value => 'POSTED'
70
70
 
71
71
  parsed_manual_journal = XeroGateway::ManualJournal.from_xml(manual_journal_element)
72
72
  assert_equal(manual_journal, parsed_manual_journal)
@@ -86,8 +86,8 @@ class ManualJournalTest < Test::Unit::TestCase
86
86
  private
87
87
 
88
88
  def assert_xml_field(xml, field_name, options={})
89
- assert_match /#{field_name}/, xml.to_s, "Didn't find the field #{field_name} in the XML document!"
90
- assert_match /#{field_name}.*#{options[:value]}.*#{field_name}/, xml.to_s, "The field #{field_name} was expected to be '#{options[:value]}'!" if options[:value]
89
+ assert_match(/#{field_name}/, xml.to_s, "Didn't find the field #{field_name} in the XML document!")
90
+ assert_match(/#{field_name}.*#{options[:value]}.*#{field_name}/, xml.to_s, "The field #{field_name} was expected to be '#{options[:value]}'!") if options[:value]
91
91
  end
92
92
 
93
93
  end
@@ -1,11 +1,11 @@
1
1
  require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
2
 
3
3
  class OrganisationTest < Test::Unit::TestCase
4
-
4
+
5
5
  # Tests that an organisation can be converted into XML that Xero can understand, and then converted back to an organisation
6
6
  def test_build_and_parse_xml
7
7
  org = create_test_organisation
8
-
8
+
9
9
  # Generate the XML message
10
10
  org_as_xml = org.to_xml
11
11
 
@@ -14,14 +14,59 @@ class OrganisationTest < Test::Unit::TestCase
14
14
 
15
15
  # Build a new account from the XML
16
16
  result_org = XeroGateway::Organisation.from_xml(org_element)
17
-
17
+
18
18
  # Check the account details
19
19
  assert_equal org, result_org
20
20
  end
21
-
22
-
21
+
22
+ def test_organisation_with_addresses
23
+ org = create_test_organisation
24
+ org.add_address(
25
+ :address_type => 'POBOX',
26
+ :line_1 => 'NEW LINE 1',
27
+ :line_2 => 'NEW LINE 2',
28
+ :line_3 => 'NEW LINE 3',
29
+ :line_4 => 'NEW LINE 4',
30
+ :city => 'NEW CITY',
31
+ :region => 'NEW REGION',
32
+ :post_code => '5555',
33
+ :country => 'Australia'
34
+ )
35
+
36
+ org_as_xml = org.to_xml
37
+
38
+ assert org_as_xml.include?("<Addresses><Address>")
39
+ assert org_as_xml.include?("NEW REGION")
40
+
41
+ org_element = REXML::XPath.first(REXML::Document.new(org_as_xml), "/Organisation")
42
+ result_org = XeroGateway::Organisation.from_xml(org_element)
43
+
44
+ assert_equal org, result_org
45
+ end
46
+
47
+ test "should raise if you add an unsupported type as an address" do
48
+ org = create_test_organisation
49
+ org.addresses = [ { :a => 123 }]
50
+
51
+ assert_raises "UnsupportedAttributeType" do
52
+ org.to_xml
53
+ end
54
+ end
55
+
56
+ test "works with an empty addresses attribute" do
57
+ org = create_test_organisation
58
+ org.addresses = []
59
+
60
+ assert org_as_xml = org.to_xml
61
+
62
+ org_element = REXML::XPath.first(REXML::Document.new(org_as_xml), "/Organisation")
63
+ result_org = XeroGateway::Organisation.from_xml(org_element)
64
+
65
+ assert_equal org, result_org
66
+ end
67
+
23
68
  private
24
-
69
+
25
70
  def create_test_organisation
26
71
  XeroGateway::Organisation.new.tap do |org|
27
72
  org.name = "Demo Company (NZ)"
@@ -36,4 +81,4 @@ class OrganisationTest < Test::Unit::TestCase
36
81
  org.line_of_business = "Graphic Design & Web Development"
37
82
  end
38
83
  end
39
- end
84
+ end
@@ -1,11 +1,11 @@
1
1
  require File.join(File.dirname(__FILE__), '../test_helper.rb')
2
2
 
3
3
  class TaxRateTest < Test::Unit::TestCase
4
-
4
+
5
5
  # Tests that a tax rate can be converted into XML that Xero can understand, and then converted back to a tax rate
6
6
  def test_build_and_parse_xml
7
7
  tax_rate = create_test_tax_rate
8
-
8
+
9
9
  # Generate the XML message
10
10
  tax_rate_as_xml = tax_rate.to_xml
11
11
 
@@ -14,18 +14,19 @@ class TaxRateTest < Test::Unit::TestCase
14
14
 
15
15
  # Build a new account from the XML
16
16
  result_tax_rate = XeroGateway::TaxRate.from_xml(tax_rate_element)
17
-
17
+
18
18
  # Check the account details
19
19
  assert_equal tax_rate, result_tax_rate
20
20
  end
21
-
22
-
21
+
22
+
23
23
  private
24
-
24
+
25
25
  def create_test_tax_rate
26
26
  XeroGateway::TaxRate.new.tap do |tax_rate|
27
27
  tax_rate.name = "GST on Expenses"
28
28
  tax_rate.tax_type = "INPUT"
29
+ tax_rate.status = "ACTIVE"
29
30
  tax_rate.can_apply_to_assets = true
30
31
  tax_rate.can_apply_to_equity = true
31
32
  tax_rate.can_apply_to_expenses = true
@@ -35,4 +36,4 @@ class TaxRateTest < Test::Unit::TestCase
35
36
  tax_rate.effective_rate = 12.500
36
37
  end
37
38
  end
38
- end
39
+ end
data/xero_gateway.gemspec CHANGED
@@ -18,7 +18,12 @@ Gem::Specification.new do |s|
18
18
 
19
19
  s.add_dependency "builder", ">= 3.2.2"
20
20
  s.add_dependency "oauth", ">= 0.3.6"
21
- s.add_dependency "activesupport"
21
+
22
+ if RUBY_VERSION > "1.9.3"
23
+ s.add_dependency "activesupport"
24
+ else
25
+ s.add_dependency "activesupport", "< 5"
26
+ end
22
27
 
23
28
  s.add_development_dependency "bundler"
24
29
  s.add_development_dependency "rake"
@@ -26,6 +31,6 @@ Gem::Specification.new do |s|
26
31
  s.add_development_dependency "test-unit"
27
32
  s.add_development_dependency "mocha"
28
33
  s.add_development_dependency "shoulda"
29
- s.add_development_dependency "libxml-ruby"
34
+ s.add_development_dependency "libxml-ruby", "2.7.0"
30
35
 
31
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xero_gateway
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Connor
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-09-15 00:00:00.000000000 Z
13
+ date: 2017-07-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -142,16 +142,16 @@ dependencies:
142
142
  name: libxml-ruby
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - ">="
145
+ - - '='
146
146
  - !ruby/object:Gem::Version
147
- version: '0'
147
+ version: 2.7.0
148
148
  type: :development
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
- - - ">="
152
+ - - '='
153
153
  - !ruby/object:Gem::Version
154
- version: '0'
154
+ version: 2.7.0
155
155
  description: Enables Ruby based applications to communicate with the Xero API
156
156
  email:
157
157
  - me@nikwakelin.com
@@ -166,6 +166,7 @@ files:
166
166
  - Rakefile
167
167
  - examples/oauth.rb
168
168
  - examples/partner_app.rb
169
+ - examples/private_app.rb
169
170
  - lib/oauth/oauth_consumer.rb
170
171
  - lib/xero_gateway.rb
171
172
  - lib/xero_gateway/account.rb
@@ -269,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
270
  version: '0'
270
271
  requirements: []
271
272
  rubyforge_project:
272
- rubygems_version: 2.5.1
273
+ rubygems_version: 2.6.11
273
274
  signing_key:
274
275
  specification_version: 4
275
276
  summary: Enables Ruby based applications to communicate with the Xero API