blinksale 0.1.0 → 0.2.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.
- data/Gemfile +4 -2
- data/Gemfile.lock +9 -3
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/blinksale.gemspec +22 -9
- data/lib/blinksale.rb +9 -7
- data/lib/clients.rb +57 -0
- data/lib/invoices.rb +5 -5
- data/spec/blinksale_spec.rb +49 -0
- data/spec/fixtures/invoice_collection.xml +23 -0
- data/spec/fixtures/invoice_single.xml +58 -0
- data/spec/invoice_spec.rb +31 -0
- data/spec/invoices_spec.rb +54 -0
- data/spec/spec_helper.rb +12 -0
- metadata +55 -14
data/Gemfile
CHANGED
@@ -2,13 +2,15 @@ source "http://rubygems.org"
|
|
2
2
|
# Add dependencies required to use your gem here.
|
3
3
|
# Example:
|
4
4
|
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem "rest-client"
|
6
|
-
gem "nokogiri"
|
5
|
+
gem "rest-client", "~> 1.6.3"
|
6
|
+
gem "nokogiri", "~> 1.4.6"
|
7
7
|
|
8
8
|
# Add dependencies to develop your gem here.
|
9
9
|
# Include everything needed to run rake, tests, features, etc.
|
10
10
|
group :development do
|
11
11
|
gem "rspec", "~> 2.3.0"
|
12
|
+
gem "mocha", "~> 0.9.12"
|
12
13
|
gem "bundler", "~> 1.0.0"
|
13
14
|
gem "jeweler", "~> 1.6.2"
|
15
|
+
gem "simplecov", "~> 0.4.2"
|
14
16
|
end
|
data/Gemfile.lock
CHANGED
@@ -8,7 +8,8 @@ GEM
|
|
8
8
|
git (>= 1.2.5)
|
9
9
|
rake
|
10
10
|
mime-types (1.16)
|
11
|
-
|
11
|
+
mocha (0.9.12)
|
12
|
+
nokogiri (1.4.6)
|
12
13
|
rake (0.9.2)
|
13
14
|
rest-client (1.6.3)
|
14
15
|
mime-types (>= 1.16)
|
@@ -20,6 +21,9 @@ GEM
|
|
20
21
|
rspec-expectations (2.3.0)
|
21
22
|
diff-lcs (~> 1.1.2)
|
22
23
|
rspec-mocks (2.3.0)
|
24
|
+
simplecov (0.4.2)
|
25
|
+
simplecov-html (~> 0.4.4)
|
26
|
+
simplecov-html (0.4.4)
|
23
27
|
|
24
28
|
PLATFORMS
|
25
29
|
ruby
|
@@ -27,6 +31,8 @@ PLATFORMS
|
|
27
31
|
DEPENDENCIES
|
28
32
|
bundler (~> 1.0.0)
|
29
33
|
jeweler (~> 1.6.2)
|
30
|
-
|
31
|
-
|
34
|
+
mocha (~> 0.9.12)
|
35
|
+
nokogiri (~> 1.4.6)
|
36
|
+
rest-client (~> 1.6.3)
|
32
37
|
rspec (~> 2.3.0)
|
38
|
+
simplecov (~> 0.4.2)
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/blinksale.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{blinksale}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tomasz Werbicki"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-28}
|
13
13
|
s.description = %q{Basic Blinksale invoice fetcher.}
|
14
14
|
s.email = %q{tomasz@werbicki.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -27,7 +27,14 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"blinksale.gemspec",
|
29
29
|
"lib/blinksale.rb",
|
30
|
-
"lib/
|
30
|
+
"lib/clients.rb",
|
31
|
+
"lib/invoices.rb",
|
32
|
+
"spec/blinksale_spec.rb",
|
33
|
+
"spec/fixtures/invoice_collection.xml",
|
34
|
+
"spec/fixtures/invoice_single.xml",
|
35
|
+
"spec/invoice_spec.rb",
|
36
|
+
"spec/invoices_spec.rb",
|
37
|
+
"spec/spec_helper.rb"
|
31
38
|
]
|
32
39
|
s.homepage = %q{http://github.com/neaf/blinksale}
|
33
40
|
s.licenses = ["MIT"]
|
@@ -40,24 +47,30 @@ Gem::Specification.new do |s|
|
|
40
47
|
s.specification_version = 3
|
41
48
|
|
42
49
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
43
|
-
s.add_runtime_dependency(%q<rest-client>, ["
|
44
|
-
s.add_runtime_dependency(%q<nokogiri>, ["
|
50
|
+
s.add_runtime_dependency(%q<rest-client>, ["~> 1.6.3"])
|
51
|
+
s.add_runtime_dependency(%q<nokogiri>, ["~> 1.4.6"])
|
45
52
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
53
|
+
s.add_development_dependency(%q<mocha>, ["~> 0.9.12"])
|
46
54
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
47
55
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
56
|
+
s.add_development_dependency(%q<simplecov>, ["~> 0.4.2"])
|
48
57
|
else
|
49
|
-
s.add_dependency(%q<rest-client>, ["
|
50
|
-
s.add_dependency(%q<nokogiri>, ["
|
58
|
+
s.add_dependency(%q<rest-client>, ["~> 1.6.3"])
|
59
|
+
s.add_dependency(%q<nokogiri>, ["~> 1.4.6"])
|
51
60
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
61
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
52
62
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
53
63
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
64
|
+
s.add_dependency(%q<simplecov>, ["~> 0.4.2"])
|
54
65
|
end
|
55
66
|
else
|
56
|
-
s.add_dependency(%q<rest-client>, ["
|
57
|
-
s.add_dependency(%q<nokogiri>, ["
|
67
|
+
s.add_dependency(%q<rest-client>, ["~> 1.6.3"])
|
68
|
+
s.add_dependency(%q<nokogiri>, ["~> 1.4.6"])
|
58
69
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
70
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.12"])
|
59
71
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
60
72
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
73
|
+
s.add_dependency(%q<simplecov>, ["~> 0.4.2"])
|
61
74
|
end
|
62
75
|
end
|
63
76
|
|
data/lib/blinksale.rb
CHANGED
@@ -1,25 +1,27 @@
|
|
1
1
|
require 'rest-client'
|
2
2
|
require 'invoices'
|
3
|
+
require 'clients'
|
3
4
|
|
4
5
|
module Blinksale
|
5
|
-
class
|
6
|
+
class Service
|
6
7
|
attr_reader :subdomain, :username, :password, :rest_resource
|
8
|
+
attr_reader :invoices, :clients
|
7
9
|
|
8
10
|
def initialize(subdomain, username, password)
|
9
11
|
@subdomain = subdomain
|
10
12
|
@username = username
|
11
13
|
@password = password
|
14
|
+
|
12
15
|
@rest_resource = RestClient::Resource.new(base_url,
|
13
|
-
username,
|
14
|
-
password)
|
16
|
+
:user => username,
|
17
|
+
:password => password)
|
18
|
+
|
19
|
+
@invoices = Blinksale::Invoices.new(self)
|
20
|
+
@clients = Blinksale::Clients.new(self)
|
15
21
|
end
|
16
22
|
|
17
23
|
def base_url
|
18
24
|
"https://#{ subdomain }.blinksale.com"
|
19
25
|
end
|
20
|
-
|
21
|
-
def invoices
|
22
|
-
@invoices ||= Blinksale::Invoices.new(self)
|
23
|
-
end
|
24
26
|
end
|
25
27
|
end
|
data/lib/clients.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require "nokogiri"
|
2
|
+
|
3
|
+
module Blinksale
|
4
|
+
class Client
|
5
|
+
attr_accessor :name, :address1, :address2, :city, :state, :zip_code, :country, :phone
|
6
|
+
|
7
|
+
def self.from_node(node)
|
8
|
+
self.new.tap do |i|
|
9
|
+
i.id = node.attributes["uri"].content[/\d+$/].to_i
|
10
|
+
i.name = node.xpath('xmlns:name').first.content
|
11
|
+
i.address1 = node.xpath("xmlns:address1").first.content.to_f
|
12
|
+
i.address2 = node.xpath("xmlns:address2").first.content.to_f
|
13
|
+
i.city = node.xpath("xmlns:city").first.content.to_f
|
14
|
+
i.state = node.xpath("xmlns:state").first.content.to_f
|
15
|
+
i.zip_code = node.xpath("xmlns:zip").first.content.to_f
|
16
|
+
i.country = node.xpath("xmlns:country").first.content.to_f
|
17
|
+
i.phone = node.xpath("xmlns:phone").first.content.to_f
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Clients
|
23
|
+
attr_reader :service
|
24
|
+
|
25
|
+
def initialize(service)
|
26
|
+
@service = service
|
27
|
+
end
|
28
|
+
|
29
|
+
def all(params = {})
|
30
|
+
headers = {
|
31
|
+
:content_type => "application/vnd.blinksale+xml",
|
32
|
+
:accept => "application/vnd.blinksale+xml"
|
33
|
+
}
|
34
|
+
xml = service.rest_resource["clients"].get(
|
35
|
+
:params => params,
|
36
|
+
:headers => headers
|
37
|
+
)
|
38
|
+
doc = Nokogiri::XML(xml)
|
39
|
+
doc.xpath('//xmlns:client').map do |node|
|
40
|
+
Client.from_node(node)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def get(id, params = {})
|
45
|
+
headers = {
|
46
|
+
:content_type => "application/vnd.blinksale+xml",
|
47
|
+
:accept => "application/vnd.blinksale+xml"
|
48
|
+
}
|
49
|
+
xml = service.rest_resource["clients/#{ id }"].get(
|
50
|
+
:params => params,
|
51
|
+
:headers => headers
|
52
|
+
)
|
53
|
+
doc = Nokogiri::XML(xml)
|
54
|
+
Invoice.from_node(doc.xpath('//xmlns:client').first)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/invoices.rb
CHANGED
@@ -18,10 +18,10 @@ module Blinksale
|
|
18
18
|
end
|
19
19
|
|
20
20
|
class Invoices
|
21
|
-
attr_reader :
|
21
|
+
attr_reader :service
|
22
22
|
|
23
|
-
def initialize(
|
24
|
-
@
|
23
|
+
def initialize(service)
|
24
|
+
@service = service
|
25
25
|
end
|
26
26
|
|
27
27
|
def all(params = {})
|
@@ -29,7 +29,7 @@ module Blinksale
|
|
29
29
|
:content_type => "application/vnd.blinksale+xml",
|
30
30
|
:accept => "application/vnd.blinksale+xml"
|
31
31
|
}
|
32
|
-
xml =
|
32
|
+
xml = service.rest_resource["invoices"].get(
|
33
33
|
:params => params,
|
34
34
|
:headers => headers
|
35
35
|
)
|
@@ -44,7 +44,7 @@ module Blinksale
|
|
44
44
|
:content_type => "application/vnd.blinksale+xml",
|
45
45
|
:accept => "application/vnd.blinksale+xml"
|
46
46
|
}
|
47
|
-
xml =
|
47
|
+
xml = service.rest_resource["invoices/#{ id }"].get(
|
48
48
|
:params => params,
|
49
49
|
:headers => headers
|
50
50
|
)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
2
|
+
|
3
|
+
describe Blinksale::Service do
|
4
|
+
let(:service) do
|
5
|
+
Blinksale::Service.new("test-host", "test-username", "test-password")
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "#base_url" do
|
9
|
+
it "returns full url for given subdomain" do
|
10
|
+
service.base_url.should eql("https://test-host.blinksale.com")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#rest_resource" do
|
15
|
+
it "returns instantiated RestClient resource" do
|
16
|
+
service.rest_resource.should be_an_instance_of(RestClient::Resource)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "resource" do
|
20
|
+
let(:resource) { service.rest_resource }
|
21
|
+
|
22
|
+
it "has proper credentials set" do
|
23
|
+
resource.url.should eql(service.base_url)
|
24
|
+
resource.options[:user].should eql("test-username")
|
25
|
+
resource.options[:password].should eql("test-password")
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#invoices" do
|
31
|
+
it "returns Invoices instance" do
|
32
|
+
service.invoices.should be_an_instance_of(Blinksale::Invoices)
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "Invoices instance" do
|
36
|
+
let(:invoices) { service.invoices }
|
37
|
+
|
38
|
+
it "has proper service set" do
|
39
|
+
invoices.service.should eql(service)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#clients" do
|
45
|
+
it "returns Clients instance" do
|
46
|
+
service.clients.should be_an_instance_of(Blinksale::Clients)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<invoices xmlns="http://www.blinksale.com/api">
|
3
|
+
<invoice status="open" uri="http://example.blinksale.com/invoices/1" total="20.00" total_due="10.00">
|
4
|
+
<client name="Acme">http://example.blinksale.com/clients/1</client>
|
5
|
+
|
6
|
+
<number>100001</number>
|
7
|
+
<date>2006-09-19</date>
|
8
|
+
<terms due_date="2006-10-04">15</terms>
|
9
|
+
<currency>USD</currency>
|
10
|
+
|
11
|
+
<tags>brian, consulting</tags>
|
12
|
+
</invoice>
|
13
|
+
<invoice status="open" uri="http://example.blinksale.com/invoices/1" total="20.00" total_due="10.00">
|
14
|
+
<client name="Acme">http://example.blinksale.com/clients/2</client>
|
15
|
+
|
16
|
+
<number>100002</number>
|
17
|
+
<date>2006-09-19</date>
|
18
|
+
<terms due_date="2006-10-04">15</terms>
|
19
|
+
<currency>USD</currency>
|
20
|
+
|
21
|
+
<tags>brian, consulting</tags>
|
22
|
+
</invoice>
|
23
|
+
</invoices>
|
@@ -0,0 +1,58 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<invoice xmlns="http://www.blinksale.com/api" uri="http://example.blinksale.com/invoices/1"
|
3
|
+
status="pastdue" subtotal="20.00" total="20.00" paid="10.00" total_due="10.00"
|
4
|
+
surplus="0.00" updated_at="2006-09-20T17:27:48Z" created_at="2006-06-27T22:43:13Z">
|
5
|
+
<client name="Acme">http://example.blinksale.com/clients/2</client>
|
6
|
+
<number>100001</number>
|
7
|
+
|
8
|
+
<po_number>123456</po_number>
|
9
|
+
<date>2006-06-27</date>
|
10
|
+
<terms due_date="2006-07-12">15</terms>
|
11
|
+
<currency>USD</currency>
|
12
|
+
|
13
|
+
<tax amount="0.00">8.75%</tax>
|
14
|
+
<freight>0.00</freight>
|
15
|
+
<late_fee amount="0.00">0%</late_fee>
|
16
|
+
<tags>bob, scott</tags>
|
17
|
+
|
18
|
+
<lines total="882.00">
|
19
|
+
<line>
|
20
|
+
<name>French Hens</name>
|
21
|
+
<quantity>3.0</quantity>
|
22
|
+
<units>Product</units>
|
23
|
+
|
24
|
+
<unit_price>19.00</unit_price>
|
25
|
+
<taxed>false</taxed>
|
26
|
+
</line>
|
27
|
+
<line>
|
28
|
+
<name>Piper-Piping</name>
|
29
|
+
|
30
|
+
<quantity>11.0</quantity>
|
31
|
+
<units>Service</units>
|
32
|
+
<unit_price>75.00</unit_price>
|
33
|
+
<taxed>false</taxed>
|
34
|
+
|
35
|
+
</line>
|
36
|
+
</lines>
|
37
|
+
<deliveries uri="http://example.blinksale.com/invoices/1/deliveries">
|
38
|
+
<delivery uri="http://example.blinksale.com/invoices/1/deliveries/3" created_at="2006-09-22T23:51:42Z">
|
39
|
+
<body>Here's the invoice for the latest work - thanks!</body>
|
40
|
+
|
41
|
+
<recipient name="John Doe" email="john@acme.com">http://example.blinksale.com/clients/2/people/2</recipient>
|
42
|
+
<recipient name="Bob Smith" email="bob@example.com">http://example.blinksale.com/users/1</recipient>
|
43
|
+
</delivery>
|
44
|
+
</deliveries>
|
45
|
+
<payments uri="http://example.blinksale.com/invoices/1/payments" total="10.00">
|
46
|
+
|
47
|
+
<payment uri="http://example.blinksale.com/invoices/1/payments/5" created_at="2006-09-25T18:01:33Z">
|
48
|
+
<amount>10.00</amount>
|
49
|
+
<date>2006-09-25</date>
|
50
|
+
<payment_method>Check</method>
|
51
|
+
|
52
|
+
<number>10001</number>
|
53
|
+
</payment>
|
54
|
+
</payments>
|
55
|
+
<notes>Please reference this invoice number in your check memo.</notes>
|
56
|
+
<include_payment_link>true</include_payment_link>
|
57
|
+
|
58
|
+
</invoice>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
2
|
+
|
3
|
+
single_xml = File.read(File.expand_path(File.dirname(__FILE__) + "/fixtures/invoice_single.xml"))
|
4
|
+
|
5
|
+
describe Blinksale::Invoice do
|
6
|
+
describe ".from_node" do
|
7
|
+
let(:node) do
|
8
|
+
Nokogiri::XML(single_xml).xpath("//xmlns:invoice").first
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns Invoice instance" do
|
12
|
+
Blinksale::Invoice.from_node(node).should be_an_instance_of(Blinksale::Invoice)
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "invoice" do
|
16
|
+
let(:invoice) do
|
17
|
+
Blinksale::Invoice.from_node(node)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "has proper attributes set" do
|
21
|
+
invoice.id.should eql(1)
|
22
|
+
invoice.number.should eql("100001")
|
23
|
+
invoice.total_amount.should eql(20.0)
|
24
|
+
invoice.due_amount.should eql(10.0)
|
25
|
+
invoice.issued_on.should eql(Date.new(2006, 6, 27))
|
26
|
+
invoice.due_on.should eql(Date.new(2006, 7, 12))
|
27
|
+
invoice.currency.should eql("USD")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
2
|
+
|
3
|
+
single_xml = File.read(File.expand_path(File.dirname(__FILE__) + "/fixtures/invoice_single.xml"))
|
4
|
+
collection_xml = File.read(File.expand_path(File.dirname(__FILE__) + "/fixtures/invoice_collection.xml"))
|
5
|
+
|
6
|
+
describe Blinksale::Invoices do
|
7
|
+
let(:service) do
|
8
|
+
Blinksale::Service.new("test-host", "test-username", "test-password")
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:invoices) { service.invoices }
|
12
|
+
|
13
|
+
it "has proper service set" do
|
14
|
+
invoices.service.should eql(service)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#all" do
|
18
|
+
before(:each) do
|
19
|
+
RestClient::Resource.any_instance.stubs(:get).returns(collection_xml)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "returns invoices collection" do
|
23
|
+
invoices.all.first.should be_an_instance_of(Blinksale::Invoice)
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "invoices" do
|
27
|
+
let(:invoice) { invoices.all.first }
|
28
|
+
|
29
|
+
it "have proper attributes set" do
|
30
|
+
invoice.number = "100001"
|
31
|
+
invoice.issued_on = Date.new(2006, 9, 19)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#get" do
|
37
|
+
before(:each) do
|
38
|
+
RestClient::Resource.any_instance.stubs(:get).returns(single_xml)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "returns invoice instance" do
|
42
|
+
invoices.get(1).should be_an_instance_of(Blinksale::Invoice)
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "invoice" do
|
46
|
+
let(:invoice) { invoices.get(1) }
|
47
|
+
|
48
|
+
it "have proper attributes set" do
|
49
|
+
invoice.number = "100001"
|
50
|
+
invoice.issued_on = Date.new(2006, 9, 19)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
|
+
require 'rspec'
|
4
|
+
require 'blinksale'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
config.mock_with :mocha
|
12
|
+
end
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 2
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tomasz Werbicki
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-06-
|
17
|
+
date: 2011-06-28 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -22,11 +22,13 @@ dependencies:
|
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
23
|
none: false
|
24
24
|
requirements:
|
25
|
-
- -
|
25
|
+
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
segments:
|
28
|
-
-
|
29
|
-
|
28
|
+
- 1
|
29
|
+
- 6
|
30
|
+
- 3
|
31
|
+
version: 1.6.3
|
30
32
|
type: :runtime
|
31
33
|
prerelease: false
|
32
34
|
version_requirements: *id001
|
@@ -35,11 +37,13 @@ dependencies:
|
|
35
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
36
38
|
none: false
|
37
39
|
requirements:
|
38
|
-
- -
|
40
|
+
- - ~>
|
39
41
|
- !ruby/object:Gem::Version
|
40
42
|
segments:
|
41
|
-
-
|
42
|
-
|
43
|
+
- 1
|
44
|
+
- 4
|
45
|
+
- 6
|
46
|
+
version: 1.4.6
|
43
47
|
type: :runtime
|
44
48
|
prerelease: false
|
45
49
|
version_requirements: *id002
|
@@ -59,8 +63,23 @@ dependencies:
|
|
59
63
|
prerelease: false
|
60
64
|
version_requirements: *id003
|
61
65
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
66
|
+
name: mocha
|
63
67
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ~>
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
- 9
|
75
|
+
- 12
|
76
|
+
version: 0.9.12
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: bundler
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
64
83
|
none: false
|
65
84
|
requirements:
|
66
85
|
- - ~>
|
@@ -72,10 +91,10 @@ dependencies:
|
|
72
91
|
version: 1.0.0
|
73
92
|
type: :development
|
74
93
|
prerelease: false
|
75
|
-
version_requirements: *
|
94
|
+
version_requirements: *id005
|
76
95
|
- !ruby/object:Gem::Dependency
|
77
96
|
name: jeweler
|
78
|
-
requirement: &
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
79
98
|
none: false
|
80
99
|
requirements:
|
81
100
|
- - ~>
|
@@ -87,7 +106,22 @@ dependencies:
|
|
87
106
|
version: 1.6.2
|
88
107
|
type: :development
|
89
108
|
prerelease: false
|
90
|
-
version_requirements: *
|
109
|
+
version_requirements: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: simplecov
|
112
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
segments:
|
118
|
+
- 0
|
119
|
+
- 4
|
120
|
+
- 2
|
121
|
+
version: 0.4.2
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: *id007
|
91
125
|
description: Basic Blinksale invoice fetcher.
|
92
126
|
email: tomasz@werbicki.net
|
93
127
|
executables: []
|
@@ -108,7 +142,14 @@ files:
|
|
108
142
|
- VERSION
|
109
143
|
- blinksale.gemspec
|
110
144
|
- lib/blinksale.rb
|
145
|
+
- lib/clients.rb
|
111
146
|
- lib/invoices.rb
|
147
|
+
- spec/blinksale_spec.rb
|
148
|
+
- spec/fixtures/invoice_collection.xml
|
149
|
+
- spec/fixtures/invoice_single.xml
|
150
|
+
- spec/invoice_spec.rb
|
151
|
+
- spec/invoices_spec.rb
|
152
|
+
- spec/spec_helper.rb
|
112
153
|
has_rdoc: true
|
113
154
|
homepage: http://github.com/neaf/blinksale
|
114
155
|
licenses:
|
@@ -123,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
123
164
|
requirements:
|
124
165
|
- - ">="
|
125
166
|
- !ruby/object:Gem::Version
|
126
|
-
hash:
|
167
|
+
hash: -1490968728677671447
|
127
168
|
segments:
|
128
169
|
- 0
|
129
170
|
version: "0"
|