tlconnor-xero_gateway 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.textile CHANGED
@@ -1,6 +1,7 @@
1
- h2. 1.0.1, releases 01/12/2008
1
+ h2. 1.0.1, releases 02/12/2008
2
2
 
3
- # Added implementation of GET /api.xro/1.0/accounts
3
+ * Added implementation of GET /api.xro/1.0/accounts
4
+ * Replaced Invoice.id, Contact.id etc with Invoice.invoice_id, Contact.contact_id to avoid Object.id errors
4
5
 
5
6
 
6
7
  h2. 1.0.0, released 01/12/2008
data/README.textile CHANGED
@@ -20,31 +20,39 @@ h2. Usage
20
20
 
21
21
  h2. Implemented interface methods
22
22
 
23
+
24
+
23
25
  h3. GET /api.xro/1.0/contact (get_contact_by_id)
24
26
 
25
- Example:
27
+ Gets a contact record for a specific Xero organisation
26
28
  <pre><code>
27
29
  result = gateway.get_contact_by_id(contact_id)
28
30
  contact = result.contact if result.success?
29
31
  </code></pre>
30
32
 
33
+
34
+
31
35
  h3. GET /api.xro/1.0/contact (get_contact_by_number)
32
36
 
33
- Example:
37
+ Gets a contact record for a specific Xero organisation
34
38
  <pre><code>
35
39
  gateway.get_contact_by_number(contact_number)
36
40
  </code></pre>
37
41
 
42
+
43
+
38
44
  h3. GET /api.xro/1.0/contacts (get_contacts)
39
45
 
40
- Example:
46
+ Gets all contact records for a particular Xero customer.
41
47
  <pre><code>
42
48
  gateway.get_contacts(:type => :all, :sort => :name, :direction => :desc)
43
49
  </code></pre>
44
50
 
51
+
52
+
45
53
  h3. PUT /api.xro/1.0/contact
46
54
 
47
- Example:
55
+ Saves a contact record for a particular Xero customer. If the contact record does not exist (based on either ContactID or ContactNumber) then it’s created, otherwise it’s updated.
48
56
  <pre><code>
49
57
  contact = XeroGateway::Contact.new
50
58
  contact.name = "The contacts name"
@@ -60,30 +68,38 @@ Example:
60
68
  gateway.create_contact(contact)
61
69
  </code></pre>
62
70
 
71
+
72
+
63
73
  h3. GET /api.xro/1.0/invoice (get_invoice_by_id)
64
74
 
65
- Example:
75
+ Gets an invoice record for a specific Xero organisation
66
76
  <pre><code>
67
77
  gateway.get_invoice_by_id(invoice_id)
68
78
  </code></pre>
69
79
 
80
+
81
+
70
82
  h3. GET /api.xro/1.0/invoice (get_invoice_by_number)
71
83
 
72
- Example:
84
+ Gets an invoice record for a specific Xero organisation
73
85
  <pre><code>
74
86
  gateway.get_invoice_by_number(invoice_number)
75
87
  </code></pre>
76
88
 
89
+
90
+
77
91
  h3. GET /api.xro/1.0/invoices (get_invoices)
78
92
 
79
- Example:
93
+ Gets all invoice records for a particular Xero customer.
80
94
  <pre><code>
81
95
  gateway.get_invoices(modified_since = nil)
82
96
  </code></pre>
83
97
 
98
+
99
+
84
100
  h3. PUT /api.xro/1.0/invoice
85
101
 
86
- Example:
102
+ Inserts an invoice for a specific organization in Xero. (Currently only adding new invoices is allowed).
87
103
  <pre><code>
88
104
  invoice = XeroGateway::Invoice.new({
89
105
  :invoice_type => "ACCREC",
@@ -111,9 +127,11 @@ Example:
111
127
  gateway.create_invoice(invoice)
112
128
  </code></pre>
113
129
 
130
+
131
+
114
132
  h3. GET /api.xro/1.0/accounts
115
133
 
116
- Example:
134
+ Gets all accounts for a specific organization in Xero.
117
135
  <pre><code>
118
136
  gateway.get_accounts
119
137
  </code></pre>
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Account
17
3
  attr_accessor :code, :name, :type, :tax_type, :description
@@ -24,11 +10,10 @@ module XeroGateway
24
10
  end
25
11
 
26
12
  def ==(other)
27
- equal = true
28
13
  [:code, :name, :type, :tax_type, :description].each do |field|
29
- equal &&= (send(field) == other.send(field))
14
+ return false if send(field) != other.send(field)
30
15
  end
31
- return equal
16
+ return true
32
17
  end
33
18
  end
34
19
  end
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Address
17
3
  attr_accessor :address_type, :line_1, :line_2, :line_3, :line_4, :city, :region, :post_code, :country
@@ -37,11 +23,10 @@ module XeroGateway
37
23
  end
38
24
 
39
25
  def ==(other)
40
- equal = true
41
26
  [:address_type, :line_1, :line_2, :line_3, :line_4, :city, :region, :post_code, :country].each do |field|
42
- equal &&= (send(field) == other.send(field))
27
+ return false if send(field) != other.send(field)
43
28
  end
44
- return equal
29
+ return true
45
30
  end
46
31
  end
47
32
  end
@@ -1,20 +1,6 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Contact
17
- attr_accessor :id, :contact_number, :status, :name, :email, :addresses, :phones, :updated_at
3
+ attr_accessor :contact_id, :contact_number, :status, :name, :email, :addresses, :phones, :updated_at
18
4
 
19
5
  def initialize(params = {})
20
6
  params = {}.merge(params)
@@ -44,11 +30,10 @@ module XeroGateway
44
30
  end
45
31
 
46
32
  def ==(other)
47
- equal = true
48
33
  [:contact_number, :status, :name, :email, :addresses, :phones].each do |field|
49
- equal &&= (send(field) == other.send(field))
34
+ return false if send(field) != other.send(field)
50
35
  end
51
- return equal
36
+ return true
52
37
  end
53
38
  end
54
- end
39
+ end
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Dates
17
3
  def self.included(base)
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Gateway
17
3
  include Http
@@ -260,7 +246,7 @@ module XeroGateway
260
246
 
261
247
  def build_response(response_document)
262
248
  response = XeroGateway::Response.new({
263
- :id => REXML::XPath.first(response_document, "/Response/ID").text,
249
+ :response_id => REXML::XPath.first(response_document, "/Response/ID").text,
264
250
  :status => REXML::XPath.first(response_document, "/Response/Status").text,
265
251
  :provider => REXML::XPath.first(response_document, "/Response/ProviderName").text,
266
252
  :date_time => REXML::XPath.first(response_document, "/Response/DateTimeUTC").text,
@@ -1,21 +1,7 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Http
17
- OPEN_TIMEOUT = 10
18
- READ_TIMEOUT = 60
3
+ OPEN_TIMEOUT = 10 unless defined? OPEN_TIMEOUT
4
+ READ_TIMEOUT = 60 unless defined? READ_TIMEOUT
19
5
 
20
6
  def http_get(url, extra_params = {})
21
7
  params = {:apiKey => @api_key, :xeroKey => @customer_key}
@@ -1,21 +1,7 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Invoice
17
3
  # All accessible fields
18
- attr_accessor :id, :invoice_number, :invoice_type, :invoice_status, :date, :due_date, :reference, :tax_inclusive, :includes_tax, :sub_total, :total_tax, :total, :line_items, :contact
4
+ attr_accessor :invoice_id, :invoice_number, :invoice_type, :invoice_status, :date, :due_date, :reference, :tax_inclusive, :includes_tax, :sub_total, :total_tax, :total, :line_items, :contact
19
5
 
20
6
  def initialize(params = {})
21
7
  params = {
@@ -34,15 +20,13 @@ module XeroGateway
34
20
  end
35
21
 
36
22
  def ==(other)
37
- equal = true
38
23
  ["invoice_number", "invoice_type", "invoice_status", "reference", "tax_inclusive", "includes_tax", "sub_total", "total_tax", "total", "contact", "line_items"].each do |field|
39
- equal &&= (send(field) == other.send(field))
24
+ return false if send(field) != other.send(field)
40
25
  end
41
26
  ["date", "due_date"].each do |field|
42
- equal &&= (send(field).to_s == other.send(field).to_s)
27
+ return false if send(field).to_s != other.send(field).to_s
43
28
  end
44
-
45
- return equal
29
+ return true
46
30
  end
47
31
  end
48
32
  end
@@ -1,21 +1,7 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class LineItem
17
3
  # All accessible fields
18
- attr_accessor :id, :description, :quantity, :unit_amount, :tax_type, :tax_amount, :line_amount, :account_code, :tracking_category, :tracking_option
4
+ attr_accessor :line_item_id, :description, :quantity, :unit_amount, :tax_type, :tax_amount, :line_amount, :account_code, :tracking_category, :tracking_option
19
5
 
20
6
  def initialize(params = {})
21
7
  params = {
@@ -29,12 +15,11 @@ module XeroGateway
29
15
  end
30
16
 
31
17
  def ==(other)
32
- return true
33
- equal = true
34
18
  [:description, :quantity, :unit_amount, :tax_type, :tax_amount, :line_amount, :account_code, :tracking_category, :tracking_option].each do |field|
35
- equal &&= (send(field) == other.send(field))
19
+ puts field if send(field) != other.send(field)
20
+ return false if send(field) != other.send(field)
36
21
  end
37
- return equal
22
+ return true
38
23
  end
39
24
  end
40
25
  end
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Messages
17
3
  class AccountMessage
@@ -37,7 +23,7 @@ module XeroGateway
37
23
  line_item = LineItem.new
38
24
  line_item_element.children.each do |element|
39
25
  case(element.name)
40
- when "LineItemID" then line_item.id = element.text
26
+ when "LineItemID" then line_item.line_item_id = element.text
41
27
  when "Description" then line_item.description = element.text
42
28
  when "Quantity" then line_item.quantity = element.text.to_i
43
29
  when "UnitAmount" then line_item.unit_amount = BigDecimal.new(element.text)
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Messages
17
3
  class ContactMessage
@@ -21,7 +7,7 @@ module XeroGateway
21
7
  b = Builder::XmlMarkup.new
22
8
 
23
9
  b.Contact {
24
- b.ContactID contact.id if contact.id
10
+ b.ContactID contact.contact_id if contact.contact_id
25
11
  b.ContactNumber contact.contact_number if contact.contact_number
26
12
  b.Name contact.name
27
13
  b.EmailAddress contact.email if contact.email
@@ -58,7 +44,7 @@ module XeroGateway
58
44
  contact = Contact.new
59
45
  contact_element.children.each do |element|
60
46
  case(element.name)
61
- when "ContactID" then contact.id = element.text
47
+ when "ContactID" then contact.contact_id = element.text
62
48
  when "ContactNumber" then contact.contact_number = element.text
63
49
  when "ContactStatus" then contact.status = element.text
64
50
  when "Name" then contact.name = element.text
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Messages
17
3
  class InvoiceMessage
@@ -24,7 +10,7 @@ module XeroGateway
24
10
  b.Invoice {
25
11
  b.InvoiceType invoice.invoice_type
26
12
  b.Contact {
27
- b.ContactID invoice.contact.id if invoice.contact.id
13
+ b.ContactID invoice.contact.contact_id if invoice.contact.contact_id
28
14
  b.Name invoice.contact.name
29
15
  b.EmailAddress invoice.contact.email if invoice.contact.email
30
16
  b.Addresses {
@@ -90,7 +76,7 @@ module XeroGateway
90
76
  invoice_element.children.each do |element|
91
77
  case(element.name)
92
78
  when "InvoiceStatus" then invoice.invoice_status = element.text
93
- when "InvoiceID" then invoice.id = element.text
79
+ when "InvoiceID" then invoice.invoice_id = element.text
94
80
  when "InvoiceNumber" then invoice.invoice_number = element.text
95
81
  when "InvoiceType" then invoice.invoice_type = element.text
96
82
  when "InvoiceDate" then invoice.date = parse_date_time(element.text)
@@ -114,7 +100,7 @@ module XeroGateway
114
100
  line_item = LineItem.new
115
101
  line_item_element.children.each do |element|
116
102
  case(element.name)
117
- when "LineItemID" then line_item.id = element.text
103
+ when "LineItemID" then line_item.line_item_id = element.text
118
104
  when "Description" then line_item.description = element.text
119
105
  when "Quantity" then line_item.quantity = element.text.to_i
120
106
  when "UnitAmount" then line_item.unit_amount = BigDecimal.new(element.text)
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  module Money
17
3
  def self.included(base)
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Phone
17
3
  attr_accessor :phone_type, :number, :area_code, :country_code
@@ -28,11 +14,10 @@ module XeroGateway
28
14
  end
29
15
 
30
16
  def ==(other)
31
- equal = true
32
17
  [:phone_type, :number, :area_code, :country_code].each do |field|
33
- equal &&= (send(field) == other.send(field))
18
+ return false if send(field) != other.send(field)
34
19
  end
35
- return equal
20
+ return true
36
21
  end
37
22
  end
38
23
  end
@@ -1,20 +1,6 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  module XeroGateway
16
2
  class Response
17
- attr_accessor :id, :status, :errors, :provider, :date_time, :response_item, :request_params, :request_xml, :response_xml
3
+ attr_accessor :response_id, :status, :errors, :provider, :date_time, :response_item, :request_params, :request_xml, :response_xml
18
4
 
19
5
  alias_method :invoice, :response_item
20
6
  alias_method :invoices, :response_item
data/lib/xero_gateway.rb CHANGED
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  require 'cgi'
16
2
  require "uri"
17
3
  require 'net/https'
@@ -1 +1 @@
1
- <?xml version="1.0"?><Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ID><Status>OK</Status><ProviderName>YOUR PROVIDER</ProviderName><DateTimeUTC>2008-10-09T02:40:54.3997437Z</DateTimeUTC><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactNumber>12345</ContactNumber><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact></Response>
1
+ <?xml version="1.0"?><Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ID><Status>OK</Status><ProviderName>YOUR PROVIDER</ProviderName><DateTimeUTC>2008-10-09T02:40:54.3997437Z</DateTimeUTC><Contact><ContactID>e8d9ecd8-c17a-49c4-a445-708875ccb042</ContactID><ContactNumber>12345</ContactNumber><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>DEFAULT</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2>LINE 2 OF THE ADDRESS</AddressLine2><AddressLine3>LINE 3 OF THE ADDRESS</AddressLine3><AddressLine4>LINE 4 OF THE ADDRESS</AddressLine4><City>WELLINGTON</City><Region>WELLINGTON</Region><PostalCode>6021</PostalCode><Country>NEW ZEALAND</Country></Address></Addresses><Phones><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber>12345</PhoneNumber></Phone></Phones></Contact></Response>
@@ -1 +1 @@
1
- <?xml version="1.0"?><Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ID><Status>OK</Status><ProviderName>YOUR PROVIDER</ProviderName><DateTimeUTC>2008-10-09T02:40:54.3997437Z</DateTimeUTC><Contacts><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact></Contacts></Response>
1
+ <?xml version="1.0"?><Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><ID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ID><Status>OK</Status><ProviderName>YOUR PROVIDER</ProviderName><DateTimeUTC>2008-10-09T02:40:54.3997437Z</DateTimeUTC><Contacts><Contact><ContactID>a99a9aaa-9999-99a9-9aa9-aaaaaa9a9999</ContactID><ContactStatus>ACTIVE</ContactStatus><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>POBOX</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2/><AddressLine3/><AddressLine4/><City>Somewhere</City><Region/><PostalCode/><Country>Some Country</Country></Address></Addresses><Phones><Phone><PhoneType>MOBILE</PhoneType><PhoneNumber>1234567</PhoneNumber><PhoneAreaCode>123</PhoneAreaCode><PhoneCountryCode/></Phone><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>FAX</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone><Phone><PhoneType>DDI</PhoneType><PhoneNumber/><PhoneAreaCode/><PhoneCountryCode/></Phone></Phones></Contact><Contact><ContactID>e8d9ecd8-c17a-49c4-a445-708875ccb042</ContactID><ContactNumber>12345</ContactNumber><Name>CONTACT NAME</Name><EmailAddress>bob@example.com</EmailAddress><Addresses><Address><AddressType>DEFAULT</AddressType><AddressLine1>LINE 1 OF THE ADDRESS</AddressLine1><AddressLine2>LINE 2 OF THE ADDRESS</AddressLine2><AddressLine3>LINE 3 OF THE ADDRESS</AddressLine3><AddressLine4>LINE 4 OF THE ADDRESS</AddressLine4><City>WELLINGTON</City><Region>WELLINGTON</Region><PostalCode>6021</PostalCode><Country>NEW ZEALAND</Country></Address></Addresses><Phones><Phone><PhoneType>DEFAULT</PhoneType><PhoneNumber>12345</PhoneNumber></Phone></Phones></Contact></Contacts></Response>
data/test/test_helper.rb CHANGED
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  require "rubygems"
16
2
 
17
3
  require 'test/unit'
@@ -20,3 +6,4 @@ require 'mocha'
20
6
  require 'libxml'
21
7
 
22
8
  require File.dirname(__FILE__) + '/../lib/xero_gateway.rb'
9
+ require File.dirname(__FILE__) + '/integration/integration_test_methods.rb'
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  require File.join(File.dirname(__FILE__), '../../test_helper.rb')
16
2
 
17
3
  class ContactMessageTest < Test::Unit::TestCase
@@ -50,7 +36,7 @@ class ContactMessageTest < Test::Unit::TestCase
50
36
  private
51
37
 
52
38
  def create_test_contact
53
- contact = XeroGateway::Contact.new(:id => "55555")
39
+ contact = XeroGateway::Contact.new(:contact_id => "55555")
54
40
  contact.contact_number = "aaa111"
55
41
  contact.name = "CONTACT NAME"
56
42
  contact.email = "someone@somewhere.com"
@@ -1,17 +1,3 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
1
  require File.join(File.dirname(__FILE__), '../../test_helper.rb')
16
2
 
17
3
  class InvoiceMessageTest < Test::Unit::TestCase
@@ -59,7 +45,7 @@ class InvoiceMessageTest < Test::Unit::TestCase
59
45
  invoice.total_tax = BigDecimal.new("125")
60
46
  invoice.total = BigDecimal.new("1125")
61
47
 
62
- invoice.contact = XeroGateway::Contact.new(:id => 55555)
48
+ invoice.contact = XeroGateway::Contact.new(:contact_id => 55555)
63
49
  invoice.contact.name = "CONTACT NAME"
64
50
  invoice.contact.address.address_type = "THE ADDRESS TYPE FOR THE CONTACT"
65
51
  invoice.contact.address.line_1 = "LINE 1 OF THE ADDRESS"
@@ -67,6 +53,7 @@ class InvoiceMessageTest < Test::Unit::TestCase
67
53
 
68
54
  invoice.line_items << XeroGateway::LineItem.new({
69
55
  :description => "A LINE ITEM",
56
+ :account_code => "200",
70
57
  :unit_amount => BigDecimal.new("100"),
71
58
  :tax_amount => BigDecimal.new("12.5"),
72
59
  :line_amount => BigDecimal.new("125")
data/xero_gateway.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "xero_gateway"
3
- s.version = "1.0.0"
3
+ s.version = "1.0.1"
4
4
  s.date = "2008-12-01"
5
5
  s.summary = "Enables ruby based applications to communicate with the Xero API"
6
6
  s.email = "tlconnor@gmail.com"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tlconnor-xero_gateway
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Connor
@@ -1,166 +0,0 @@
1
- # Copyright (c) 2008 Tim Connor <tlconnor@gmail.com>
2
- #
3
- # Permission to use, copy, modify, and/or distribute this software for any
4
- # purpose with or without fee is hereby granted, provided that the above
5
- # copyright notice and this permission notice appear in all copies.
6
- #
7
- # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
10
- # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
- # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
- # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
15
- require File.dirname(__FILE__) + '/../test_helper'
16
-
17
- class GatewayTest < Test::Unit::TestCase
18
- # If false, the tests will be run against the Xero test environment
19
- STUB_XERO_CALLS = true
20
-
21
- # If the requests are not stubbed, enter your API key and you test company customer key here
22
- API_KEY = "OWFKZTA4YZNHYWNKNDDJM2JKNZQWOW"
23
- CUSTOMER_KEY = "YWZIMZQ3ZGVJMME1NDCWNTK3YWZMNW"
24
-
25
-
26
- def setup
27
- @gateway = XeroGateway::Gateway.new(
28
- :customer_key => CUSTOMER_KEY,
29
- :api_key => API_KEY
30
- )
31
-
32
- if STUB_XERO_CALLS
33
- @gateway.xero_url = "DUMMY_URL"
34
- # Stub out the HTTP request
35
- @gateway.stubs(:http_get).with {|url, params| url =~ /contact$/ }.returns(get_file_as_string("contact.xml"))
36
- @gateway.stubs(:http_get).with {|url, params| url =~ /contacts$/ }.returns(get_file_as_string("contacts.xml"))
37
- @gateway.stubs(:http_get).with {|url, params| url =~ /invoice$/ }.returns(get_file_as_string("invoice.xml"))
38
- @gateway.stubs(:http_get).with {|url, params| url =~ /invoices$/ }.returns(get_file_as_string("invoices.xml"))
39
- @gateway.stubs(:http_get).with {|url, params| url =~ /accounts$/ }.returns(get_file_as_string("accounts.xml"))
40
- @gateway.stubs(:http_put).with {|url, body, params| url =~ /invoice$/ }.returns(get_file_as_string("invoice.xml"))
41
- @gateway.stubs(:http_put).with {|url, body, params| url =~ /contact$/ }.returns(get_file_as_string("contact.xml"))
42
-
43
-
44
- end
45
- end
46
-
47
- def dummy_invoice
48
- invoice = XeroGateway::Invoice.new({
49
- :invoice_type => "ACCREC",
50
- :due_date => Date.today + 20,
51
- :invoice_number => STUB_XERO_CALLS ? "INV-0001" : "#{Time.now.to_i}",
52
- :reference => "YOUR REFERENCE (NOT NECESSARILY UNIQUE!)",
53
- :sub_total => 1000,
54
- :total_tax => 125,
55
- :total => 1125
56
- })
57
- invoice.contact = dummy_contact
58
- invoice.line_items << XeroGateway::LineItem.new(
59
- :description => "THE DESCRIPTION OF THE LINE ITEM",
60
- :unit_amount => 1000,
61
- :tax_amount => 125,
62
- :line_amount => 1000,
63
- :tracking_category => "THE TRACKING CATEGORY FOR THE LINE ITEM",
64
- :tracking_option => "THE TRACKING OPTION FOR THE LINE ITEM"
65
- )
66
- invoice
67
- end
68
-
69
- def dummy_contact
70
- contact = XeroGateway::Contact.new(:name => STUB_XERO_CALLS ? "CONTACT NAME" : "THE NAME OF THE CONTACT #{Time.now.to_i}")
71
- contact.contact_number = STUB_XERO_CALLS ? "12345" : "#{Time.now.to_i}"
72
- contact.email = "whoever@something.com"
73
- contact.phone.number = "12345"
74
- contact.address.line_1 = "LINE 1 OF THE ADDRESS"
75
- contact.address.line_2 = "LINE 2 OF THE ADDRESS"
76
- contact.address.line_3 = "LINE 3 OF THE ADDRESS"
77
- contact.address.line_4 = "LINE 4 OF THE ADDRESS"
78
- contact.address.city = "WELLINGTON"
79
- contact.address.region = "WELLINGTON"
80
- contact.address.country = "NEW ZEALAND"
81
- contact.address.post_code = "6021"
82
-
83
- contact
84
- end
85
-
86
- def get_file_as_string(filename)
87
- data = ''
88
- f = File.open(File.dirname(__FILE__) + "/stub_responses/" + filename, "r")
89
- f.each_line do |line|
90
- data += line
91
- end
92
- f.close
93
- return data
94
- end
95
-
96
- def test_create_and_get_contact
97
- contact = dummy_contact
98
-
99
- create_contact_result = @gateway.create_contact(contact)
100
- assert create_contact_result.success?
101
-
102
- contact_from_create_request = create_contact_result.contact
103
- assert contact_from_create_request.name == contact.name
104
-
105
- get_contact_by_id_result = @gateway.get_contact_by_id(contact_from_create_request.id)
106
- assert get_contact_by_id_result.success?
107
- assert get_contact_by_id_result.contact.name == contact.name
108
-
109
- get_contact_by_number_result = @gateway.get_contact_by_number(contact.contact_number)
110
- assert get_contact_by_number_result.success?
111
- assert get_contact_by_number_result.contact.name == contact.name
112
- end
113
-
114
- def test_create_and_get_invoice
115
- invoice = dummy_invoice
116
-
117
- result = @gateway.create_invoice(invoice)
118
- assert result.success?
119
-
120
- invoice_from_create_request = result.invoice
121
- assert invoice_from_create_request.invoice_number == invoice.invoice_number
122
-
123
- result = @gateway.get_invoice_by_id(invoice_from_create_request.id)
124
- assert result.success?
125
- assert result.invoice.invoice_number == invoice_from_create_request.invoice_number
126
-
127
- result = @gateway.get_invoice_by_number(invoice_from_create_request.invoice_number)
128
- assert result.success?
129
- assert result.invoice.id == invoice_from_create_request.id
130
- end
131
-
132
- def test_get_contacts
133
- result = @gateway.get_contacts
134
- assert result.success?
135
- assert result.contacts.size > 0
136
- end
137
-
138
- def test_get_invoices
139
- # Create a test invoice
140
- invoice = dummy_invoice
141
- @gateway.create_invoice(invoice)
142
-
143
- # Check that it is returned
144
- result = @gateway.get_invoices
145
- assert result.success?
146
- assert result.invoices.collect {|response_invoice| response_invoice.invoice_number}.include?(invoice.invoice_number)
147
- end
148
-
149
- def test_get_invoices_with_modified_since_date
150
- # Create a test invoice
151
- invoice = dummy_invoice
152
- @gateway.create_invoice(invoice)
153
-
154
- # Check that it is returned
155
- result = @gateway.get_invoices(Date.today - 1)
156
- assert result.success?
157
- assert result.invoices.collect {|response_invoice| response_invoice.invoice_number}.include?(invoice.invoice_number)
158
- end
159
-
160
- def test_get_accounts
161
- result = @gateway.get_accounts
162
- assert result.success?
163
- assert result.accounts.size > 0
164
- assert_equal XeroGateway::Account, result.accounts.first.class
165
- end
166
- end