invoicexpress 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +3 -3
- data/lib/invoicexpress/client.rb +1 -1
- data/lib/invoicexpress/client/invoices.rb +1 -3
- data/lib/invoicexpress/configuration.rb +2 -0
- data/lib/invoicexpress/connection.rb +0 -1
- data/lib/invoicexpress/error.rb +4 -1
- data/lib/invoicexpress/request.rb +13 -3
- data/lib/invoicexpress/version.rb +1 -1
- data/spec/invoicexpress/client/charts_spec.rb +4 -4
- data/spec/invoicexpress/client/clients_spec.rb +1 -1
- data/spec/invoicexpress/client/credit_notes_spec.rb +3 -3
- data/spec/invoicexpress/client/invoices_spec.rb +4 -4
- data/spec/invoicexpress/client/purchase_orders_spec.rb +4 -4
- data/spec/invoicexpress/client/schedules_spec.rb +1 -1
- data/spec/invoicexpress/client/sequences_spec.rb +1 -1
- data/spec/invoicexpress/client/simplified_invoices_spec.rb +4 -4
- data/spec/invoicexpress/client/taxes_spec.rb +1 -1
- data/spec/invoicexpress/client/users_spec.rb +3 -3
- data/spec/invoicexpress/request_spec.rb +72 -0
- metadata +72 -86
data/README.md
CHANGED
@@ -41,7 +41,7 @@ Run bundle, the project should need:
|
|
41
41
|
* Sim. Invoices - 100%
|
42
42
|
* Credit Notes - 100%
|
43
43
|
* Purch. Orders - 100%
|
44
|
-
|
44
|
+
|
45
45
|
## Documentation
|
46
46
|
|
47
47
|
We've included docs for all methods. Refer to the doc folder and client section.
|
@@ -51,9 +51,9 @@ We've included docs for all methods. Refer to the doc folder and client section.
|
|
51
51
|
If using from inside a rails project use:
|
52
52
|
|
53
53
|
require 'invoicexpress'
|
54
|
-
|
54
|
+
|
55
55
|
client = Invoicexpress::Client.new(
|
56
|
-
:
|
56
|
+
:account_name => "yourusername",
|
57
57
|
:api_key => "yourapikey"
|
58
58
|
)
|
59
59
|
|
data/lib/invoicexpress/client.rb
CHANGED
@@ -3,7 +3,7 @@ require 'invoicexpress/models'
|
|
3
3
|
module Invoicexpress
|
4
4
|
class Client
|
5
5
|
module Invoices
|
6
|
-
|
6
|
+
|
7
7
|
# Returns all your invoices
|
8
8
|
#
|
9
9
|
# @option options [Integer] page (1) You can ask a specific page of invoices
|
@@ -106,8 +106,6 @@ module Invoicexpress
|
|
106
106
|
def invoice_email(invoice_id, message, options={})
|
107
107
|
email_invoice(invoice_id, message, options)
|
108
108
|
end
|
109
|
-
|
110
|
-
|
111
109
|
end
|
112
110
|
end
|
113
111
|
end
|
@@ -7,6 +7,7 @@ module Invoicexpress
|
|
7
7
|
:adapter,
|
8
8
|
:faraday_config_block,
|
9
9
|
:api_endpoint,
|
10
|
+
:account_name,
|
10
11
|
:screen_name,
|
11
12
|
:proxy,
|
12
13
|
:api_key,
|
@@ -44,6 +45,7 @@ module Invoicexpress
|
|
44
45
|
self.api_endpoint = DEFAULT_API_ENDPOINT
|
45
46
|
self.user_agent = DEFAULT_USER_AGENT
|
46
47
|
self.api_key = nil
|
48
|
+
self.account_name = nil
|
47
49
|
self.screen_name = nil
|
48
50
|
self.proxy = nil
|
49
51
|
end
|
data/lib/invoicexpress/error.rb
CHANGED
@@ -38,7 +38,7 @@ module Invoicexpress
|
|
38
38
|
private
|
39
39
|
|
40
40
|
def build_error_message
|
41
|
-
return nil
|
41
|
+
return nil if @response.nil?
|
42
42
|
|
43
43
|
message = if response_body
|
44
44
|
if response_body.respond_to?(:errors)
|
@@ -65,4 +65,7 @@ module Invoicexpress
|
|
65
65
|
|
66
66
|
# Raised when Invoicexpress server goes dark (500 HTTP status code)
|
67
67
|
class InternalServerError < Error; end
|
68
|
+
|
69
|
+
# Raised when Invoicexpress server address could not be resolved
|
70
|
+
class BadAddress < Error; end
|
68
71
|
end
|
@@ -22,8 +22,8 @@ module Invoicexpress
|
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
25
|
-
|
26
|
-
# Executes the request, checking if
|
25
|
+
|
26
|
+
# Executes the request, checking if it was successful
|
27
27
|
#
|
28
28
|
# @return [Boolean] True on success, false otherwise
|
29
29
|
def boolean_from_response(method, path, options={})
|
@@ -34,7 +34,7 @@ module Invoicexpress
|
|
34
34
|
|
35
35
|
def request(method, path, options={})
|
36
36
|
token = options.delete(:api_key) || api_key
|
37
|
-
url = options.delete(:endpoint) || (api_endpoint %
|
37
|
+
url = options.delete(:endpoint) || (api_endpoint % account_domain)
|
38
38
|
klass = options.delete(:klass) || raise(ArgumentError, "Need a HappyMapper class to parse")
|
39
39
|
|
40
40
|
conn_options = {
|
@@ -57,7 +57,17 @@ module Invoicexpress
|
|
57
57
|
end
|
58
58
|
|
59
59
|
response
|
60
|
+
rescue Faraday::ConnectionFailed => e
|
61
|
+
unless e.message.match(/getaddrinfo/).nil?
|
62
|
+
raise Invoicexpress::BadAddress.new,
|
63
|
+
"Did you forget to set your account_name? Error: #{e.message}"
|
64
|
+
end
|
65
|
+
|
66
|
+
raise e
|
60
67
|
end
|
61
68
|
|
69
|
+
def account_domain
|
70
|
+
account_name || screen_name
|
71
|
+
end
|
62
72
|
end
|
63
73
|
end
|
@@ -3,7 +3,7 @@ require 'helper'
|
|
3
3
|
describe Invoicexpress::Client::Charts do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@client = Invoicexpress::Client.new(:
|
6
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
7
7
|
end
|
8
8
|
|
9
9
|
describe ".invoicing_chart" do
|
@@ -29,10 +29,10 @@ describe Invoicexpress::Client::Charts do
|
|
29
29
|
chart.graphs.count.should ==4
|
30
30
|
#count values
|
31
31
|
chart.graphs.first.values.count.should ==7
|
32
|
-
|
32
|
+
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
describe ".top_clients" do
|
37
37
|
it "Returns the top 5 clients." do
|
38
38
|
stub_get("/api/charts/top-clients.xml").
|
@@ -43,7 +43,7 @@ describe Invoicexpress::Client::Charts do
|
|
43
43
|
chart.clients.size.should ==1
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
describe ".top_debtors" do
|
48
48
|
it "Returns the top 5 debtors." do
|
49
49
|
stub_get("/api/charts/top-debtors.xml").
|
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe Invoicexpress::Client::CreditNotes do
|
4
4
|
before do
|
5
|
-
@client = Invoicexpress::Client.new(:
|
5
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
6
6
|
end
|
7
7
|
|
8
8
|
describe ".credit_notes" do
|
@@ -21,7 +21,7 @@ describe Invoicexpress::Client::CreditNotes do
|
|
21
21
|
stub_post("/credit_notes.xml").
|
22
22
|
to_return(xml_response("credit_notes.create.xml"))
|
23
23
|
|
24
|
-
|
24
|
+
|
25
25
|
cnote = Invoicexpress::Models::CreditNote.new(
|
26
26
|
:date => Date.new(2013, 5, 1),
|
27
27
|
:due_date => Date.new(2013, 6, 1),
|
@@ -84,7 +84,7 @@ describe Invoicexpress::Client::CreditNotes do
|
|
84
84
|
expect { cnote = @client.update_credit_note_state(1423940, state) }.to_not raise_error
|
85
85
|
end
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
describe ".credit_note_mail" do
|
89
89
|
it "sends the credit note through email" do
|
90
90
|
stub_put("/credit_notes/1423940/email-document.xml").
|
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe Invoicexpress::Client::Invoices do
|
4
4
|
before do
|
5
|
-
@client = Invoicexpress::Client.new(:
|
5
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
6
6
|
end
|
7
7
|
|
8
8
|
describe ".invoices" do
|
@@ -21,7 +21,7 @@ describe Invoicexpress::Client::Invoices do
|
|
21
21
|
stub_post("/invoices.xml").
|
22
22
|
to_return(xml_response("invoices.create.xml"))
|
23
23
|
|
24
|
-
|
24
|
+
|
25
25
|
object = Invoicexpress::Models::Invoice.new(
|
26
26
|
:date => Date.new(2013, 6, 18),
|
27
27
|
:due_date => Date.new(2013, 6, 18),
|
@@ -79,7 +79,7 @@ describe Invoicexpress::Client::Invoices do
|
|
79
79
|
}.to raise_error(ArgumentError)
|
80
80
|
end
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
describe ".update_invoice_state" do
|
84
84
|
it "updates the state" do
|
85
85
|
stub_put("/invoices/1503698/change-state.xml").
|
@@ -91,7 +91,7 @@ describe Invoicexpress::Client::Invoices do
|
|
91
91
|
expect { @client.update_invoice_state(1503698, state) }.to_not raise_error
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
describe ".email_invoice" do
|
96
96
|
it "sends the invoice through email" do
|
97
97
|
stub_put("/invoice/1503698/email-invoice.xml").
|
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe Invoicexpress::Client::PurchaseOrders do
|
4
4
|
before do
|
5
|
-
@client = Invoicexpress::Client.new(:
|
5
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
6
6
|
end
|
7
7
|
|
8
8
|
describe ".purchase_orders" do
|
@@ -20,7 +20,7 @@ describe Invoicexpress::Client::PurchaseOrders do
|
|
20
20
|
it "creates a new purchase order" do
|
21
21
|
stub_post("/purchase_orders.xml").
|
22
22
|
to_return(xml_response("po.create.xml"))
|
23
|
-
|
23
|
+
|
24
24
|
object = Invoicexpress::Models::PurchaseOrder.new(
|
25
25
|
:date => Date.new(2013, 5, 30),
|
26
26
|
:due_date => Date.new(2013, 8, 8),
|
@@ -82,7 +82,7 @@ describe Invoicexpress::Client::PurchaseOrders do
|
|
82
82
|
}.to raise_error(ArgumentError)
|
83
83
|
end
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
|
87
87
|
describe ".update_purchase_order_state" do
|
88
88
|
it "updates the state" do
|
@@ -96,7 +96,7 @@ describe Invoicexpress::Client::PurchaseOrders do
|
|
96
96
|
expect { item = @client.update_purchase_order_state(1430338, state) }.to_not raise_error
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
describe ".simplified_invoice_mail" do
|
101
101
|
it "sends the invoice through email" do
|
102
102
|
stub_put("/purchase_orders/1430338/email-document.xml").
|
@@ -2,7 +2,7 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe Invoicexpress::Client::SimplifiedInvoices do
|
4
4
|
before do
|
5
|
-
@client = Invoicexpress::Client.new(:
|
5
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
6
6
|
end
|
7
7
|
|
8
8
|
describe ".simplified_invoices" do
|
@@ -21,7 +21,7 @@ describe Invoicexpress::Client::SimplifiedInvoices do
|
|
21
21
|
stub_post("/simplified_invoices.xml").
|
22
22
|
to_return(xml_response("simplified_invoices.create.xml"))
|
23
23
|
|
24
|
-
|
24
|
+
|
25
25
|
object = Invoicexpress::Models::SimplifiedInvoice.new(
|
26
26
|
:date => Date.new(2013, 5, 1),
|
27
27
|
:due_date => Date.new(2013, 6, 1),
|
@@ -84,7 +84,7 @@ describe Invoicexpress::Client::SimplifiedInvoices do
|
|
84
84
|
}.to raise_error(ArgumentError)
|
85
85
|
end
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
88
|
describe ".update_simplified_invoice_state" do
|
89
89
|
it "updates the state" do
|
90
90
|
stub_put("/simplified_invoices/1425061/change-state.xml").
|
@@ -96,7 +96,7 @@ describe Invoicexpress::Client::SimplifiedInvoices do
|
|
96
96
|
expect { item = @client.update_simplified_invoice_state(1425061, state) }.to_not raise_error
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
describe ".simplified_invoice_mail" do
|
101
101
|
it "sends the invoice through email" do
|
102
102
|
stub_put("/simplified_invoices/1425061/email-document.xml").
|
@@ -3,7 +3,7 @@ require 'helper'
|
|
3
3
|
describe Invoicexpress::Client::Clients do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@client = Invoicexpress::Client.new(:
|
6
|
+
@client = Invoicexpress::Client.new(:account_name => "thinkorangeteste")
|
7
7
|
end
|
8
8
|
|
9
9
|
describe ".login" do
|
@@ -27,12 +27,12 @@ describe Invoicexpress::Client::Clients do
|
|
27
27
|
list.first.name.should == "thinkorangeteste"
|
28
28
|
end
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
describe ".change-account" do
|
32
32
|
it "changes the current account to the account id submitted" do
|
33
33
|
stub_put("/users/change-account.xml").
|
34
34
|
to_return(xml_response("users.change-account.xml"))
|
35
|
-
|
35
|
+
|
36
36
|
expect { cnote = @client.change_account(13233) }.to_not raise_error
|
37
37
|
end
|
38
38
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
RSpec.describe Invoicexpress::Request do
|
4
|
+
let (:path) { '' }
|
5
|
+
let (:klass) { Class.new { include HappyMapper } }
|
6
|
+
|
7
|
+
shared_examples 'an account_name validator' do
|
8
|
+
context 'given a client with no account_name' do
|
9
|
+
let (:client) { Invoicexpress.new }
|
10
|
+
|
11
|
+
before do
|
12
|
+
stub_request(:any, 'https://.app.invoicexpress.com/')
|
13
|
+
.to_raise(Faraday::ConnectionFailed.new(
|
14
|
+
'getaddrinfo: nodename nor servname provided, or not known'))
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'raises a BadAddress error with a helpful suggestion' do
|
18
|
+
expect { subject }.to raise_error(
|
19
|
+
Invoicexpress::BadAddress, /forget.+account_name/)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
context 'given a client with options' do
|
24
|
+
let (:client) { Invoicexpress.new options }
|
25
|
+
|
26
|
+
before { stub_request :any, 'https://test.app.invoicexpress.com/' }
|
27
|
+
|
28
|
+
context 'given an account_name' do
|
29
|
+
let (:options) { { account_name: 'test' } }
|
30
|
+
|
31
|
+
it 'sets the correct account subdomain' do
|
32
|
+
subject
|
33
|
+
assert_requested :any, 'https://test.app.invoicexpress.com/', times: 1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'given an screen_name' do
|
38
|
+
let (:options) { { screen_name: 'test' } }
|
39
|
+
|
40
|
+
it 'sets the correct account subdomain' do
|
41
|
+
subject
|
42
|
+
assert_requested :any, 'https://test.app.invoicexpress.com/', times: 1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '.delete' do
|
49
|
+
subject (:delete) { client.delete path, klass: klass }
|
50
|
+
it_behaves_like 'an account_name validator'
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '.get' do
|
54
|
+
subject (:get) { client.get path, klass: klass }
|
55
|
+
it_behaves_like 'an account_name validator'
|
56
|
+
end
|
57
|
+
|
58
|
+
describe '.patch' do
|
59
|
+
subject (:patch) { client.patch path, klass: klass }
|
60
|
+
it_behaves_like 'an account_name validator'
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '.post' do
|
64
|
+
subject (:post) { client.post path, klass: klass }
|
65
|
+
it_behaves_like 'an account_name validator'
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '.put' do
|
69
|
+
subject (:put) { client.put path, klass: klass }
|
70
|
+
it_behaves_like 'an account_name validator'
|
71
|
+
end
|
72
|
+
end
|
metadata
CHANGED
@@ -1,93 +1,87 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: invoicexpress
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 8
|
10
|
-
version: 0.1.8
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Think Orange
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2015-12-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: bundler
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
18
|
+
requirements:
|
27
19
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 0
|
33
|
-
version: "1.0"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.0'
|
34
22
|
type: :development
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: faraday
|
38
23
|
prerelease: false
|
39
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
40
33
|
none: false
|
41
|
-
requirements:
|
34
|
+
requirements:
|
42
35
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
- 8
|
48
|
-
version: "0.8"
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.8'
|
49
38
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: faraday_middleware
|
53
39
|
prerelease: false
|
54
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.8'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: faraday_middleware
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
55
49
|
none: false
|
56
|
-
requirements:
|
50
|
+
requirements:
|
57
51
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
- 9
|
63
|
-
version: "0.9"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0.9'
|
64
54
|
type: :runtime
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: happymapper
|
68
55
|
prerelease: false
|
69
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.9'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: happymapper
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
70
65
|
none: false
|
71
|
-
requirements:
|
66
|
+
requirements:
|
72
67
|
- - ~>
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
|
75
|
-
segments:
|
76
|
-
- 0
|
77
|
-
- 4
|
78
|
-
version: "0.4"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0.4'
|
79
70
|
type: :runtime
|
80
|
-
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0.4'
|
81
78
|
description: Simple wrapper for invoicexpress.com API
|
82
|
-
email:
|
79
|
+
email:
|
83
80
|
- info@thinkorange.pt
|
84
81
|
executables: []
|
85
|
-
|
86
82
|
extensions: []
|
87
|
-
|
88
83
|
extra_rdoc_files: []
|
89
|
-
|
90
|
-
files:
|
84
|
+
files:
|
91
85
|
- CHANGELOG.md
|
92
86
|
- README.md
|
93
87
|
- Rakefile
|
@@ -185,44 +179,34 @@ files:
|
|
185
179
|
- spec/invoicexpress/client/users_spec.rb
|
186
180
|
- spec/invoicexpress/client_spec.rb
|
187
181
|
- spec/invoicexpress/models/item_spec.rb
|
182
|
+
- spec/invoicexpress/request_spec.rb
|
188
183
|
- spec/invoicexpress_spec.rb
|
189
|
-
has_rdoc: true
|
190
184
|
homepage: http://invoicexpress.com
|
191
|
-
licenses:
|
185
|
+
licenses:
|
192
186
|
- MIT
|
193
187
|
post_install_message:
|
194
188
|
rdoc_options: []
|
195
|
-
|
196
|
-
require_paths:
|
189
|
+
require_paths:
|
197
190
|
- lib
|
198
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
199
192
|
none: false
|
200
|
-
requirements:
|
201
|
-
- -
|
202
|
-
- !ruby/object:Gem::Version
|
203
|
-
|
204
|
-
|
205
|
-
- 0
|
206
|
-
version: "0"
|
207
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ! '>='
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
198
|
none: false
|
209
|
-
requirements:
|
210
|
-
- -
|
211
|
-
- !ruby/object:Gem::Version
|
212
|
-
hash: 23
|
213
|
-
segments:
|
214
|
-
- 1
|
215
|
-
- 3
|
216
|
-
- 6
|
199
|
+
requirements:
|
200
|
+
- - ! '>='
|
201
|
+
- !ruby/object:Gem::Version
|
217
202
|
version: 1.3.6
|
218
203
|
requirements: []
|
219
|
-
|
220
204
|
rubyforge_project:
|
221
|
-
rubygems_version: 1.
|
205
|
+
rubygems_version: 1.8.23.2
|
222
206
|
signing_key:
|
223
207
|
specification_version: 3
|
224
208
|
summary: Simple wrapper for invoicexpress.com API
|
225
|
-
test_files:
|
209
|
+
test_files:
|
226
210
|
- spec/fixtures/charts.invoicing.xml
|
227
211
|
- spec/fixtures/charts.quarterly-results.xml
|
228
212
|
- spec/fixtures/charts.top-clients.xml
|
@@ -280,4 +264,6 @@ test_files:
|
|
280
264
|
- spec/invoicexpress/client/users_spec.rb
|
281
265
|
- spec/invoicexpress/client_spec.rb
|
282
266
|
- spec/invoicexpress/models/item_spec.rb
|
267
|
+
- spec/invoicexpress/request_spec.rb
|
283
268
|
- spec/invoicexpress_spec.rb
|
269
|
+
has_rdoc:
|