get_invoice 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 +1 -0
- data/Gemfile.lock +4 -0
- data/VERSION +1 -1
- data/{invoicer.gemspec → get_invoice.gemspec} +10 -3
- data/lib/invoicer.rb +1 -0
- data/lib/services/harvest/invoice.rb +16 -0
- data/lib/services/harvest/invoice_manager.rb +22 -0
- data/lib/services/harvest.rb +13 -0
- data/spec/services/harvest_spec.rb +109 -0
- metadata +30 -13
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -6,6 +6,9 @@ GEM
|
|
|
6
6
|
rest-client
|
|
7
7
|
diff-lcs (1.1.2)
|
|
8
8
|
git (1.2.5)
|
|
9
|
+
invoice_harvester (0.1.0)
|
|
10
|
+
nokogiri
|
|
11
|
+
rest-client
|
|
9
12
|
jeweler (1.6.2)
|
|
10
13
|
bundler (~> 1.0)
|
|
11
14
|
git (>= 1.2.5)
|
|
@@ -31,6 +34,7 @@ PLATFORMS
|
|
|
31
34
|
DEPENDENCIES
|
|
32
35
|
blinksale
|
|
33
36
|
bundler (~> 1.0.0)
|
|
37
|
+
invoice_harvester
|
|
34
38
|
jeweler (~> 1.6.2)
|
|
35
39
|
rcov
|
|
36
40
|
rspec (~> 2.3.0)
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.2.0
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
|
-
s.name = %q{
|
|
8
|
-
s.version = "0.
|
|
7
|
+
s.name = %q{get_invoice}
|
|
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"]
|
|
@@ -25,13 +25,17 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
"README.rdoc",
|
|
26
26
|
"Rakefile",
|
|
27
27
|
"VERSION",
|
|
28
|
-
"
|
|
28
|
+
"get_invoice.gemspec",
|
|
29
29
|
"lib/invoice.rb",
|
|
30
30
|
"lib/invoicer.rb",
|
|
31
31
|
"lib/services/blinksale.rb",
|
|
32
32
|
"lib/services/blinksale/invoice.rb",
|
|
33
33
|
"lib/services/blinksale/invoice_manager.rb",
|
|
34
|
+
"lib/services/harvest.rb",
|
|
35
|
+
"lib/services/harvest/invoice.rb",
|
|
36
|
+
"lib/services/harvest/invoice_manager.rb",
|
|
34
37
|
"spec/services/blinksale_spec.rb",
|
|
38
|
+
"spec/services/harvest_spec.rb",
|
|
35
39
|
"spec/spec_helper.rb"
|
|
36
40
|
]
|
|
37
41
|
s.homepage = %q{http://github.com/neaf/invoicer}
|
|
@@ -45,12 +49,14 @@ Gem::Specification.new do |s|
|
|
|
45
49
|
s.specification_version = 3
|
|
46
50
|
|
|
47
51
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
52
|
+
s.add_runtime_dependency(%q<invoice_harvester>, [">= 0"])
|
|
48
53
|
s.add_runtime_dependency(%q<blinksale>, [">= 0"])
|
|
49
54
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
50
55
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
51
56
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
|
52
57
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
|
53
58
|
else
|
|
59
|
+
s.add_dependency(%q<invoice_harvester>, [">= 0"])
|
|
54
60
|
s.add_dependency(%q<blinksale>, [">= 0"])
|
|
55
61
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
56
62
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
|
@@ -58,6 +64,7 @@ Gem::Specification.new do |s|
|
|
|
58
64
|
s.add_dependency(%q<rcov>, [">= 0"])
|
|
59
65
|
end
|
|
60
66
|
else
|
|
67
|
+
s.add_dependency(%q<invoice_harvester>, [">= 0"])
|
|
61
68
|
s.add_dependency(%q<blinksale>, [">= 0"])
|
|
62
69
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
|
63
70
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
data/lib/invoicer.rb
CHANGED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Invoicer
|
|
2
|
+
class HarvestInvoice
|
|
3
|
+
def self.from_harvest(harvest_invoice)
|
|
4
|
+
Invoice.new(
|
|
5
|
+
:id => harvest_invoice.id,
|
|
6
|
+
:number => harvest_invoice.number,
|
|
7
|
+
:total_amount => harvest_invoice.total_amount,
|
|
8
|
+
:due_amount => harvest_invoice.due_amount,
|
|
9
|
+
:issued_on => harvest_invoice.issued_on,
|
|
10
|
+
:due_on => harvest_invoice.due_on,
|
|
11
|
+
:currency => harvest_invoice.currency,
|
|
12
|
+
:service => :harvest
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require "harvester"
|
|
2
|
+
require "services/harvest/invoice"
|
|
3
|
+
|
|
4
|
+
module Invoicer
|
|
5
|
+
class HarvestInvoiceManager
|
|
6
|
+
attr_reader :service
|
|
7
|
+
|
|
8
|
+
def initialize(service)
|
|
9
|
+
@service = service
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def all(params = {})
|
|
13
|
+
service.harvester.all(params).map do |i|
|
|
14
|
+
Invoicer::HarvestInvoice.from_harvest(i)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def get(id)
|
|
19
|
+
Invoicer::HarvestInvoice.from_harvest(service.harvester.get(id))
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require "services/harvest/invoice_manager"
|
|
2
|
+
|
|
3
|
+
module Invoicer
|
|
4
|
+
class Harvest
|
|
5
|
+
attr_reader :harvester
|
|
6
|
+
attr_reader :invoices
|
|
7
|
+
|
|
8
|
+
def initialize(*args)
|
|
9
|
+
@harvester = ::Harvester::Client.new(*args)
|
|
10
|
+
@invoices = Invoicer::HarvestInvoiceManager.new(self)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Invoicer::Harvest do
|
|
4
|
+
let(:service) { Invoicer::Harvest.new('test', 'test', 'test') }
|
|
5
|
+
|
|
6
|
+
describe "#invoices" do
|
|
7
|
+
it "returns invoice manager instance" do
|
|
8
|
+
service.invoices.should be_an_instance_of(Invoicer::HarvestInvoiceManager)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe Invoicer::HarvestInvoiceManager do
|
|
14
|
+
let(:manager) { Invoicer::Harvest.new('test', 'test', 'test').invoices }
|
|
15
|
+
|
|
16
|
+
describe "#all" do
|
|
17
|
+
before(:each) do
|
|
18
|
+
invoices = [
|
|
19
|
+
mock('invoice',
|
|
20
|
+
:id => 1,
|
|
21
|
+
:number => "00001",
|
|
22
|
+
:total_amount => 20,
|
|
23
|
+
:due_amount => 10,
|
|
24
|
+
:issued_on => Date.today,
|
|
25
|
+
:due_on => Date.today + 30,
|
|
26
|
+
:currency => "USD"
|
|
27
|
+
),
|
|
28
|
+
mock('invoice',
|
|
29
|
+
:id => 2,
|
|
30
|
+
:number => "00002",
|
|
31
|
+
:total_amount => 20,
|
|
32
|
+
:due_amount => 10,
|
|
33
|
+
:issued_on => Date.today,
|
|
34
|
+
:due_on => Date.today + 30,
|
|
35
|
+
:currency => "USD"
|
|
36
|
+
),
|
|
37
|
+
mock('invoice',
|
|
38
|
+
:id => 3,
|
|
39
|
+
:number => "00003",
|
|
40
|
+
:total_amount => 20,
|
|
41
|
+
:due_amount => 10,
|
|
42
|
+
:issued_on => Date.today,
|
|
43
|
+
:due_on => Date.today + 30,
|
|
44
|
+
:currency => "USD"
|
|
45
|
+
)
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
manager.service.harvester.stub!(:all).and_return(invoices)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "passes params to Harvesb client" do
|
|
52
|
+
params = { :status => "draft" }
|
|
53
|
+
manager.service.harvester.should_receive(:all).with(params).once
|
|
54
|
+
manager.all(params)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "returns collection of invoices" do
|
|
58
|
+
manager.all.should_not be_empty
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "invoice" do
|
|
62
|
+
let(:invoice) { manager.all.first }
|
|
63
|
+
|
|
64
|
+
it "is an Invoicer::Invoice instance" do
|
|
65
|
+
invoice.should be_an_instance_of(Invoicer::Invoice)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "has proper attributes set" do
|
|
69
|
+
invoice.number.should eql("00001")
|
|
70
|
+
invoice.currency.should eql("USD")
|
|
71
|
+
invoice.service.should eql(:harvest)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "#get" do
|
|
77
|
+
before(:each) do
|
|
78
|
+
invoice = mock('invoice',
|
|
79
|
+
:id => 1,
|
|
80
|
+
:number => "00001",
|
|
81
|
+
:total_amount => 20,
|
|
82
|
+
:due_amount => 10,
|
|
83
|
+
:issued_on => Date.today,
|
|
84
|
+
:due_on => Date.today + 30,
|
|
85
|
+
:currency => "USD"
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
manager.service.harvester.stub!(:get).and_return(invoice)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
let(:invoice) { manager.get(1) }
|
|
92
|
+
|
|
93
|
+
it "returns invoice instance" do
|
|
94
|
+
invoice.should be_an_instance_of(Invoicer::Invoice)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe "invoice" do
|
|
98
|
+
it "is an Invoicer::Invoice instance" do
|
|
99
|
+
invoice.should be_an_instance_of(Invoicer::Invoice)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "has proper attributes set" do
|
|
103
|
+
invoice.number.should eql("00001")
|
|
104
|
+
invoice.currency.should eql("USD")
|
|
105
|
+
invoice.service.should eql(:harvest)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
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
|
|
@@ -18,7 +18,7 @@ date: 2011-06-27 00:00:00 +02:00
|
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
|
-
name:
|
|
21
|
+
name: invoice_harvester
|
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
|
23
23
|
none: false
|
|
24
24
|
requirements:
|
|
@@ -31,8 +31,21 @@ dependencies:
|
|
|
31
31
|
prerelease: false
|
|
32
32
|
version_requirements: *id001
|
|
33
33
|
- !ruby/object:Gem::Dependency
|
|
34
|
-
name:
|
|
34
|
+
name: blinksale
|
|
35
35
|
requirement: &id002 !ruby/object:Gem::Requirement
|
|
36
|
+
none: false
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
segments:
|
|
41
|
+
- 0
|
|
42
|
+
version: "0"
|
|
43
|
+
type: :runtime
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: *id002
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: rspec
|
|
48
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
36
49
|
none: false
|
|
37
50
|
requirements:
|
|
38
51
|
- - ~>
|
|
@@ -44,10 +57,10 @@ dependencies:
|
|
|
44
57
|
version: 2.3.0
|
|
45
58
|
type: :development
|
|
46
59
|
prerelease: false
|
|
47
|
-
version_requirements: *
|
|
60
|
+
version_requirements: *id003
|
|
48
61
|
- !ruby/object:Gem::Dependency
|
|
49
62
|
name: bundler
|
|
50
|
-
requirement: &
|
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
51
64
|
none: false
|
|
52
65
|
requirements:
|
|
53
66
|
- - ~>
|
|
@@ -59,10 +72,10 @@ dependencies:
|
|
|
59
72
|
version: 1.0.0
|
|
60
73
|
type: :development
|
|
61
74
|
prerelease: false
|
|
62
|
-
version_requirements: *
|
|
75
|
+
version_requirements: *id004
|
|
63
76
|
- !ruby/object:Gem::Dependency
|
|
64
77
|
name: jeweler
|
|
65
|
-
requirement: &
|
|
78
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
|
66
79
|
none: false
|
|
67
80
|
requirements:
|
|
68
81
|
- - ~>
|
|
@@ -74,10 +87,10 @@ dependencies:
|
|
|
74
87
|
version: 1.6.2
|
|
75
88
|
type: :development
|
|
76
89
|
prerelease: false
|
|
77
|
-
version_requirements: *
|
|
90
|
+
version_requirements: *id005
|
|
78
91
|
- !ruby/object:Gem::Dependency
|
|
79
92
|
name: rcov
|
|
80
|
-
requirement: &
|
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
|
81
94
|
none: false
|
|
82
95
|
requirements:
|
|
83
96
|
- - ">="
|
|
@@ -87,7 +100,7 @@ dependencies:
|
|
|
87
100
|
version: "0"
|
|
88
101
|
type: :development
|
|
89
102
|
prerelease: false
|
|
90
|
-
version_requirements: *
|
|
103
|
+
version_requirements: *id006
|
|
91
104
|
description: Common API for managing invoices from different online accounting services.
|
|
92
105
|
email: tomasz@werbicki.net
|
|
93
106
|
executables: []
|
|
@@ -106,13 +119,17 @@ files:
|
|
|
106
119
|
- README.rdoc
|
|
107
120
|
- Rakefile
|
|
108
121
|
- VERSION
|
|
109
|
-
-
|
|
122
|
+
- get_invoice.gemspec
|
|
110
123
|
- lib/invoice.rb
|
|
111
124
|
- lib/invoicer.rb
|
|
112
125
|
- lib/services/blinksale.rb
|
|
113
126
|
- lib/services/blinksale/invoice.rb
|
|
114
127
|
- lib/services/blinksale/invoice_manager.rb
|
|
128
|
+
- lib/services/harvest.rb
|
|
129
|
+
- lib/services/harvest/invoice.rb
|
|
130
|
+
- lib/services/harvest/invoice_manager.rb
|
|
115
131
|
- spec/services/blinksale_spec.rb
|
|
132
|
+
- spec/services/harvest_spec.rb
|
|
116
133
|
- spec/spec_helper.rb
|
|
117
134
|
has_rdoc: true
|
|
118
135
|
homepage: http://github.com/neaf/invoicer
|
|
@@ -128,7 +145,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
128
145
|
requirements:
|
|
129
146
|
- - ">="
|
|
130
147
|
- !ruby/object:Gem::Version
|
|
131
|
-
hash: -
|
|
148
|
+
hash: -4578703806334281031
|
|
132
149
|
segments:
|
|
133
150
|
- 0
|
|
134
151
|
version: "0"
|