rspreedly 0.1.4 → 0.1.5
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/VERSION +1 -1
- data/lib/rspreedly/invoice.rb +10 -3
- data/rspreedly.gemspec +1 -1
- data/spec/invoice_spec.rb +31 -6
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.5
|
data/lib/rspreedly/invoice.rb
CHANGED
@@ -19,8 +19,6 @@ module RSpreedly
|
|
19
19
|
begin
|
20
20
|
create!
|
21
21
|
rescue RSpreedly::Error::Base
|
22
|
-
# gulp those errors down
|
23
|
-
# TODO - set self.errors or something?
|
24
22
|
nil
|
25
23
|
end
|
26
24
|
end
|
@@ -54,9 +52,18 @@ module RSpreedly
|
|
54
52
|
# Pay an Invoice (more)
|
55
53
|
# PUT /api/v4/[short site name]/invoices/[invoice token]/pay.xml
|
56
54
|
def pay(payment)
|
55
|
+
begin
|
56
|
+
pay!(payment)
|
57
|
+
rescue RSpreedly::Error::Base
|
58
|
+
nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def pay!(payment)
|
57
63
|
result = api_request(:put, "/invoices/#{self.token}/pay.xml", :body => payment.to_xml(:outer => 'payment'))
|
58
64
|
self.attributes = result["invoice"]
|
59
|
-
true
|
65
|
+
true
|
60
66
|
end
|
67
|
+
|
61
68
|
end
|
62
69
|
end
|
data/rspreedly.gemspec
CHANGED
data/spec/invoice_spec.rb
CHANGED
@@ -80,7 +80,7 @@ describe RSpreedly::Invoice do
|
|
80
80
|
|
81
81
|
|
82
82
|
describe "#pay" do
|
83
|
-
|
83
|
+
|
84
84
|
before(:each) do
|
85
85
|
@invoice = RSpreedly::Invoice.new(:token => "5b1f186651dd988865c6573921ec87fa4bec23b8")
|
86
86
|
@payment = RSpreedly::PaymentMethod::CreditCard.new(:number => "4222222222222",
|
@@ -97,39 +97,64 @@ describe RSpreedly::Invoice do
|
|
97
97
|
@invoice.pay(@payment).should be_true
|
98
98
|
end
|
99
99
|
|
100
|
+
it "should return nil if not successful" do
|
101
|
+
stub_http_with_fixture("payment_not_found.xml", 404)
|
102
|
+
@invoice.pay(@payment).should be_nil
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "#pay!" do
|
108
|
+
|
109
|
+
before(:each) do
|
110
|
+
@invoice = RSpreedly::Invoice.new(:token => "5b1f186651dd988865c6573921ec87fa4bec23b8")
|
111
|
+
@payment = RSpreedly::PaymentMethod::CreditCard.new(:number => "4222222222222",
|
112
|
+
:card_type => "visa",
|
113
|
+
:verification_value => "234",
|
114
|
+
:month => 1,
|
115
|
+
:year => 2011,
|
116
|
+
:first_name => "Joe",
|
117
|
+
:last_name => "Bob")
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should return true if successful" do
|
121
|
+
stub_http_with_fixture("payment_success.xml", 200)
|
122
|
+
@invoice.pay!(@payment).should be_true
|
123
|
+
end
|
124
|
+
|
100
125
|
it "should update the Invoice if successful" do
|
101
126
|
stub_http_with_fixture("payment_success.xml", 200)
|
102
127
|
|
103
128
|
lambda{
|
104
|
-
@invoice.pay(@payment)
|
129
|
+
@invoice.pay!(@payment)
|
105
130
|
}.should change(@invoice, :closed).to(true)
|
106
131
|
end
|
107
132
|
|
108
133
|
it "should raise NotFound if the invoice doesn't exist" do
|
109
134
|
stub_http_with_fixture("payment_not_found.xml", 404)
|
110
135
|
lambda{
|
111
|
-
@invoice.pay(@payment)
|
136
|
+
@invoice.pay!(@payment)
|
112
137
|
}.should raise_error(RSpreedly::Error::NotFound)
|
113
138
|
end
|
114
139
|
|
115
140
|
it "should raise GatewayTimeout if the payment gateway times out" do
|
116
141
|
stub_http_with_code(504)
|
117
142
|
lambda{
|
118
|
-
@invoice.pay(@payment)
|
143
|
+
@invoice.pay!(@payment)
|
119
144
|
}.should raise_error(RSpreedly::Error::GatewayTimeout)
|
120
145
|
end
|
121
146
|
|
122
147
|
it "should raise BadRequest if the payment method is invalid" do
|
123
148
|
stub_http_with_fixture("payment_invalid.xml", 422)
|
124
149
|
lambda{
|
125
|
-
@invoice.pay(@payment)
|
150
|
+
@invoice.pay!(@payment)
|
126
151
|
}.should raise_error(RSpreedly::Error::BadRequest)
|
127
152
|
end
|
128
153
|
|
129
154
|
it "should raise Forbidden if the invoice is already paid" do
|
130
155
|
stub_http_with_fixture("payment_already_paid.xml", 403)
|
131
156
|
lambda{
|
132
|
-
@invoice.pay(@payment)
|
157
|
+
@invoice.pay!(@payment)
|
133
158
|
}.should raise_error(RSpreedly::Error::Forbidden)
|
134
159
|
end
|
135
160
|
end
|