promise_pay 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/README.md +6 -4
- data/lib/generators/templates/promise_pay_initializer.rb +0 -1
- data/lib/promise_pay/feelist.rb +67 -0
- data/lib/promise_pay/item.rb +4 -27
- data/lib/promise_pay/lib/dynamic_accessors.rb +52 -26
- data/lib/promise_pay/marketplace.rb +2 -2
- data/lib/promise_pay/request.rb +15 -6
- data/lib/promise_pay/session.rb +16 -16
- data/lib/promise_pay/user.rb +4 -22
- data/lib/promise_pay/version.rb +1 -1
- data/lib/promise_pay.rb +1 -1
- data/spec/promise_pay/feelist_spec.rb +66 -0
- data/spec/promise_pay/item_spec.rb +3 -3
- data/spec/promise_pay/marketplace_spec.rb +3 -3
- data/spec/promise_pay/request_spec.rb +26 -9
- data/spec/promise_pay/session_spec.rb +2 -2
- data/spec/promise_pay/user_spec.rb +3 -3
- data/spec/spec_helper.rb +1 -0
- data/spec/support/fixtures/feelist/create.json +14 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3aff87096dc525f1caa87ff5dcdc139b60639a6
|
4
|
+
data.tar.gz: c43eeca819612307e63e294aa31559ab6c3c30dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a27f02557a1b4979866f6ff0838cb2a931dda180863ba13bc265130a1da173097ef1c4adc1c8386822561522e86024023b35bacec69afcf73059c867c12f0538
|
7
|
+
data.tar.gz: 6ba2e1df0596322db41773e7dffd7980fd6fa7bfe421c254b5cda399f10a0842f362513a310ee018e3fabe5805d31309c3259fae9388a439136406e53b3d0f7d
|
data/README.md
CHANGED
@@ -22,10 +22,6 @@ Generate your PromizePay API key and the rails promise_pay initializer:
|
|
22
22
|
|
23
23
|
$ rails generate promise_pay:init EMAIL PASSWORD
|
24
24
|
|
25
|
-
Set your fee-ids from PromisePay in config `config/initializers/promise_pay.rb`:
|
26
|
-
|
27
|
-
PromisePay.fee_ids = "abc-123"
|
28
|
-
|
29
25
|
You're set to go!
|
30
26
|
|
31
27
|
## Extra Info
|
@@ -42,6 +38,8 @@ Note this will overwrite anything in `config/initializers/promise_pay.rb`, but y
|
|
42
38
|
|
43
39
|
## Usage
|
44
40
|
|
41
|
+
All API interations, and therefore all params for these classes can be viewed at the official PromisePay doc website (http://docs.promisepay.com/).
|
42
|
+
|
45
43
|
```ruby
|
46
44
|
# A new PromisePay::Session that generates a session token
|
47
45
|
session = PromisePay::Session.new(session_params)
|
@@ -58,6 +56,10 @@ user.email => "email@addr"
|
|
58
56
|
item = PromisePay::Item.find("1s345")
|
59
57
|
item.amount => 10
|
60
58
|
|
59
|
+
# Create a fee returning a PromisePay::Feelist object
|
60
|
+
fee = PromisePay::Feelst.create(fee_params)
|
61
|
+
fee.id => "5c07f36a-d18f-4153-9a75-ebf9f4f2f9ef"
|
62
|
+
|
61
63
|
```
|
62
64
|
|
63
65
|
## Contributing
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "promise_pay/lib/dynamic_accessors"
|
2
|
+
require "json"
|
3
|
+
|
4
|
+
module PromisePay
|
5
|
+
class Feelist
|
6
|
+
include Lib::DynamicAccessors
|
7
|
+
|
8
|
+
attr_reader :id
|
9
|
+
attr_reader :name
|
10
|
+
attr_reader :fee_type_id
|
11
|
+
attr_reader :amount
|
12
|
+
attr_reader :cap
|
13
|
+
attr_reader :min
|
14
|
+
attr_reader :max
|
15
|
+
attr_reader :to
|
16
|
+
|
17
|
+
def self.create(options = {})
|
18
|
+
new(options).create
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(options = {})
|
22
|
+
@name = options.fetch(:name)
|
23
|
+
@fee_type_id = options.fetch(:fee_type_id)
|
24
|
+
@amount = options.fetch(:amount)
|
25
|
+
@cap = options.fetch(:cap)
|
26
|
+
@min = options.fetch(:min)
|
27
|
+
@max = options.fetch(:max)
|
28
|
+
@to = options.fetch(:to)
|
29
|
+
|
30
|
+
assign_instance_variables({'feelist' => options})
|
31
|
+
end
|
32
|
+
|
33
|
+
def create
|
34
|
+
assign_instance_variables(resource_result)
|
35
|
+
self
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def resource_result
|
41
|
+
request = PromisePay::Request.new(
|
42
|
+
path: api_resource,
|
43
|
+
method: :post,
|
44
|
+
payload: payload
|
45
|
+
)
|
46
|
+
|
47
|
+
response = request.execute
|
48
|
+
JSON.parse(response)["feelist"]
|
49
|
+
end
|
50
|
+
|
51
|
+
def api_resource
|
52
|
+
"feelist"
|
53
|
+
end
|
54
|
+
|
55
|
+
def payload
|
56
|
+
{
|
57
|
+
name: name,
|
58
|
+
fee_type_id: fee_type_id,
|
59
|
+
amount: amount,
|
60
|
+
cap: cap,
|
61
|
+
min: min,
|
62
|
+
max: max,
|
63
|
+
to: to
|
64
|
+
}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/promise_pay/item.rb
CHANGED
@@ -3,11 +3,14 @@ require "json"
|
|
3
3
|
|
4
4
|
module PromisePay
|
5
5
|
class Item
|
6
|
+
include Lib::DynamicAccessors
|
7
|
+
|
6
8
|
attr_reader :id
|
7
9
|
|
8
10
|
def initialize(id = nil, options = {})
|
9
11
|
@id = id
|
10
|
-
|
12
|
+
|
13
|
+
assign_instance_variables({'item' => options})
|
11
14
|
end
|
12
15
|
|
13
16
|
class << self
|
@@ -42,31 +45,5 @@ module PromisePay
|
|
42
45
|
def api_resource
|
43
46
|
"items/#{id}"
|
44
47
|
end
|
45
|
-
|
46
|
-
def assign_instance_variables(result)
|
47
|
-
result.each do |attribute, value|
|
48
|
-
if value.is_a?(Hash)
|
49
|
-
value.each { |att, val| initialize_property(att, val) }
|
50
|
-
else
|
51
|
-
initialize_property(attribute, value)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
self
|
55
|
-
end
|
56
|
-
|
57
|
-
def initialize_property(attribute, value)
|
58
|
-
attribute = attribute.gsub(/s$/, '_id') if ["buyers","sellers"].include? attribute
|
59
|
-
Lib::DynamicAccessors.define_accessor(attribute, value, self) unless accessor_defined?(attribute)
|
60
|
-
set_property(attribute, value)
|
61
|
-
end
|
62
|
-
|
63
|
-
def accessor_defined?(attribute)
|
64
|
-
respond_to?(attribute) && respond_to?("#{attribute}=")
|
65
|
-
end
|
66
|
-
|
67
|
-
def set_property(attribute, value)
|
68
|
-
setter_method = "#{attribute}="
|
69
|
-
self.send(setter_method, value)
|
70
|
-
end
|
71
48
|
end
|
72
49
|
end
|
@@ -1,41 +1,67 @@
|
|
1
1
|
module PromisePay
|
2
2
|
module Lib
|
3
3
|
module DynamicAccessors
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
def assign_instance_variables(result)
|
5
|
+
return if result.empty?
|
6
|
+
|
7
|
+
result.each do |attribute, value|
|
8
|
+
if value.is_a?(Hash)
|
9
|
+
value.each { |att, val| initialize_property(att, val) }
|
9
10
|
else
|
10
|
-
|
11
|
+
initialize_property(attribute, value)
|
11
12
|
end
|
12
13
|
end
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize_property(attribute, value)
|
18
|
+
attribute = attribute.gsub(/s$/, '_id') if ["buyers","sellers"].include? attribute
|
19
|
+
define_accessor(attribute, value, self) unless accessor_defined?(attribute)
|
20
|
+
set_property(attribute, value)
|
21
|
+
end
|
13
22
|
|
14
|
-
|
23
|
+
def accessor_defined?(attribute)
|
24
|
+
respond_to?(attribute) && respond_to?("#{attribute}=")
|
25
|
+
end
|
15
26
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
27
|
+
def set_property(attribute, value)
|
28
|
+
setter_method = "#{attribute}="
|
29
|
+
self.send(setter_method, value)
|
30
|
+
end
|
21
31
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
32
|
+
def define_accessor(attribute, value, object)
|
33
|
+
klass = object.class
|
34
|
+
if attribute.to_s.end_with? "_at"
|
35
|
+
define_date_based_accessors(attribute, value, klass)
|
36
|
+
else
|
37
|
+
define_standard_accessors(attribute, value, klass)
|
26
38
|
end
|
39
|
+
end
|
27
40
|
|
28
|
-
|
29
|
-
klass.class_eval %Q"
|
30
|
-
def #{attribute}=(value)
|
31
|
-
@#{attribute} = value
|
32
|
-
end
|
41
|
+
private
|
33
42
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
43
|
+
def define_date_based_accessors(attribute, value, klass)
|
44
|
+
klass.class_eval %Q"
|
45
|
+
def #{attribute}=(value)
|
46
|
+
@#{attribute} = value.nil? ? nil : Time.parse(value).to_i
|
47
|
+
end
|
48
|
+
|
49
|
+
def #{attribute}
|
50
|
+
@#{attribute}.nil? ? nil : Time.at(@#{attribute})
|
51
|
+
end
|
52
|
+
"
|
53
|
+
end
|
54
|
+
|
55
|
+
def define_standard_accessors(attribute, value, klass)
|
56
|
+
klass.class_eval %Q"
|
57
|
+
def #{attribute}=(value)
|
58
|
+
@#{attribute} = value
|
59
|
+
end
|
60
|
+
|
61
|
+
def #{attribute}
|
62
|
+
@#{attribute}
|
63
|
+
end
|
64
|
+
"
|
39
65
|
end
|
40
66
|
end
|
41
67
|
end
|
data/lib/promise_pay/request.rb
CHANGED
@@ -4,9 +4,11 @@ module PromisePay
|
|
4
4
|
class Request
|
5
5
|
|
6
6
|
def initialize(options = {})
|
7
|
-
@path = options.fetch
|
8
|
-
@user = options.fetch
|
9
|
-
@password = options.fetch
|
7
|
+
@path = options.fetch(:path)
|
8
|
+
@user = options.fetch(:user) { PromisePay.api_user }
|
9
|
+
@password = options.fetch(:password) { PromisePay.api_key }
|
10
|
+
@method = options.fetch(:method) { :get }
|
11
|
+
@payload = options.fetch(:payload) { nil }
|
10
12
|
@request = build_request
|
11
13
|
end
|
12
14
|
|
@@ -23,13 +25,18 @@ module PromisePay
|
|
23
25
|
private
|
24
26
|
|
25
27
|
def build_request
|
26
|
-
RestClient::Request.new(
|
27
|
-
|
28
|
+
RestClient::Request.new(request_params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def request_params
|
32
|
+
{
|
33
|
+
method: method,
|
28
34
|
url: endpoint,
|
29
35
|
user: user,
|
30
36
|
password: password,
|
37
|
+
payload: payload,
|
31
38
|
headers: { accept: :json, content_type: :json }
|
32
|
-
|
39
|
+
}
|
33
40
|
end
|
34
41
|
|
35
42
|
def endpoint
|
@@ -47,6 +54,8 @@ module PromisePay
|
|
47
54
|
attr_reader :path
|
48
55
|
attr_reader :user
|
49
56
|
attr_reader :password
|
57
|
+
attr_reader :method
|
58
|
+
attr_reader :payload
|
50
59
|
attr_reader :request
|
51
60
|
end
|
52
61
|
|
data/lib/promise_pay/session.rb
CHANGED
@@ -23,22 +23,22 @@ module PromisePay
|
|
23
23
|
attr_accessor :buyer_country
|
24
24
|
|
25
25
|
def initialize(options = {})
|
26
|
-
@current_user_id = options.fetch
|
27
|
-
@item_name = options.fetch
|
28
|
-
@amount = options.fetch
|
29
|
-
@seller_lastname = options.fetch
|
30
|
-
@seller_firstname = options.fetch
|
31
|
-
@buyer_lastname = options.fetch
|
32
|
-
@buyer_firstname = options.fetch
|
33
|
-
@seller_email = options.fetch
|
34
|
-
@buyer_email = options.fetch
|
35
|
-
@external_item_id = options.fetch
|
36
|
-
@external_seller_id = options.fetch
|
37
|
-
@external_buyer_id = options.fetch
|
38
|
-
@fee_ids = options.fetch
|
39
|
-
@payment_type_id = options.fetch
|
40
|
-
@seller_country = options.fetch
|
41
|
-
@buyer_country = options.fetch
|
26
|
+
@current_user_id = options.fetch(:current_user_id) { nil }
|
27
|
+
@item_name = options.fetch(:item_name) { nil }
|
28
|
+
@amount = options.fetch(:amount) { nil }
|
29
|
+
@seller_lastname = options.fetch(:seller_lastname) { nil }
|
30
|
+
@seller_firstname = options.fetch(:seller_firstname) { nil }
|
31
|
+
@buyer_lastname = options.fetch(:buyer_lastname) { nil }
|
32
|
+
@buyer_firstname = options.fetch(:buyer_firstname) { nil }
|
33
|
+
@seller_email = options.fetch(:seller_email) { nil }
|
34
|
+
@buyer_email = options.fetch(:buyer_email) { nil }
|
35
|
+
@external_item_id = options.fetch(:external_item_id) { nil }
|
36
|
+
@external_seller_id = options.fetch(:external_seller_id) { nil }
|
37
|
+
@external_buyer_id = options.fetch(:external_buyer_id) { nil }
|
38
|
+
@fee_ids = options.fetch(:fee_ids) { nil }
|
39
|
+
@payment_type_id = options.fetch(:payment_type_id) { nil }
|
40
|
+
@seller_country = options.fetch(:seller_country) { nil }
|
41
|
+
@buyer_country = options.fetch(:buyer_country) { nil }
|
42
42
|
end
|
43
43
|
|
44
44
|
def request_token
|
data/lib/promise_pay/user.rb
CHANGED
@@ -3,11 +3,14 @@ require "json"
|
|
3
3
|
|
4
4
|
module PromisePay
|
5
5
|
class User
|
6
|
+
include Lib::DynamicAccessors
|
7
|
+
|
6
8
|
attr_reader :id
|
7
9
|
|
8
10
|
def initialize(id = nil, options = {})
|
9
11
|
@id = id
|
10
|
-
|
12
|
+
|
13
|
+
assign_instance_variables({'user' => options})
|
11
14
|
end
|
12
15
|
|
13
16
|
class << self
|
@@ -42,26 +45,5 @@ module PromisePay
|
|
42
45
|
def api_resource
|
43
46
|
"users/#{id}"
|
44
47
|
end
|
45
|
-
|
46
|
-
def assign_instance_variables(result)
|
47
|
-
result["user"].each do |attribute, value|
|
48
|
-
initialize_property(attribute, value)
|
49
|
-
end
|
50
|
-
self
|
51
|
-
end
|
52
|
-
|
53
|
-
def initialize_property(attribute, value)
|
54
|
-
Lib::DynamicAccessors.define_accessor(attribute, value, self) unless accessor_defined?(attribute)
|
55
|
-
set_property(attribute, value)
|
56
|
-
end
|
57
|
-
|
58
|
-
def accessor_defined?(attribute)
|
59
|
-
respond_to?(attribute) && respond_to?("#{attribute}=")
|
60
|
-
end
|
61
|
-
|
62
|
-
def set_property(attribute, value)
|
63
|
-
setter_method = "#{attribute}="
|
64
|
-
self.send(setter_method, value)
|
65
|
-
end
|
66
48
|
end
|
67
49
|
end
|
data/lib/promise_pay/version.rb
CHANGED
data/lib/promise_pay.rb
CHANGED
@@ -3,6 +3,7 @@ require "promise_pay/marketplace"
|
|
3
3
|
require "promise_pay/request"
|
4
4
|
require "promise_pay/session"
|
5
5
|
require "promise_pay/user"
|
6
|
+
require "promise_pay/feelist"
|
6
7
|
require "promise_pay/version"
|
7
8
|
require "promise_pay/collection"
|
8
9
|
require "promise_pay/country"
|
@@ -15,7 +16,6 @@ module PromisePay
|
|
15
16
|
attr_accessor :api_user
|
16
17
|
attr_accessor :api_key
|
17
18
|
attr_accessor :env
|
18
|
-
attr_accessor :fee_ids
|
19
19
|
end
|
20
20
|
|
21
21
|
class InvalidRequest < StandardError; end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe PromisePay::Feelist do
|
4
|
+
let(:request) { double("PromisePay::Request", execute: sample_response) }
|
5
|
+
|
6
|
+
before do
|
7
|
+
allow(PromisePay::Request).to receive(:new) { request }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ".create" do
|
11
|
+
let(:sample_response) { File.read("./spec/support/fixtures/feelist/create.json") }
|
12
|
+
|
13
|
+
let(:params) do
|
14
|
+
{
|
15
|
+
name: "Transaction fee",
|
16
|
+
fee_type_id: 1,
|
17
|
+
amount: 1500,
|
18
|
+
cap: nil,
|
19
|
+
min: nil,
|
20
|
+
max: nil,
|
21
|
+
to: 'seller'
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "returns a PromisePay::Feelist object" do
|
26
|
+
expect(described_class.create(params)).to be_a_kind_of PromisePay::Feelist
|
27
|
+
end
|
28
|
+
|
29
|
+
it "PromisePay::Feelist has correctly assigned attributes" do
|
30
|
+
promise_pay_fee = described_class.create(params)
|
31
|
+
|
32
|
+
expect(promise_pay_fee.id).to eq "5c07f36a-d18f-4153-9a75-ebf9f4f2f9ef"
|
33
|
+
expect(promise_pay_fee.name).to eq "Transaction fee"
|
34
|
+
expect(promise_pay_fee.fee_type_id).to eq 1
|
35
|
+
expect(promise_pay_fee.amount).to eq 1500
|
36
|
+
expect(promise_pay_fee.cap).to eq nil
|
37
|
+
expect(promise_pay_fee.min).to eq nil
|
38
|
+
expect(promise_pay_fee.max).to eq nil
|
39
|
+
expect(promise_pay_fee.to).to eq 'seller'
|
40
|
+
end
|
41
|
+
|
42
|
+
it "instantiates PromisePay::Request with the correct path" do
|
43
|
+
expect(PromisePay::Request).
|
44
|
+
to receive(:new).
|
45
|
+
with(hash_including(path: 'feelist'))
|
46
|
+
|
47
|
+
described_class.create(params)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "instantiates PromisePay::Request with the correct method" do
|
51
|
+
expect(PromisePay::Request).
|
52
|
+
to receive(:new).
|
53
|
+
with(hash_including(method: :post))
|
54
|
+
|
55
|
+
described_class.create(params)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "instantiates PromisePay::Request with the correct payload" do
|
59
|
+
expect(PromisePay::Request).
|
60
|
+
to receive(:new).
|
61
|
+
with(hash_including(payload: params))
|
62
|
+
|
63
|
+
described_class.create(params)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -4,7 +4,7 @@ describe PromisePay::Item do
|
|
4
4
|
let(:request) { double("PromisePay::Request", execute: sample_response) }
|
5
5
|
|
6
6
|
before do
|
7
|
-
PromisePay::Request.
|
7
|
+
allow(PromisePay::Request).to receive(:new) { request }
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".find" do
|
@@ -31,7 +31,7 @@ describe PromisePay::Item do
|
|
31
31
|
|
32
32
|
it "instantiates PromisePay::Request with the correct path" do
|
33
33
|
valid_path = "items/#{item_id}"
|
34
|
-
PromisePay::Request.
|
34
|
+
expect(PromisePay::Request).to receive(:new).with(path: valid_path)
|
35
35
|
described_class.find(item_id)
|
36
36
|
end
|
37
37
|
end
|
@@ -54,7 +54,7 @@ describe PromisePay::Item do
|
|
54
54
|
|
55
55
|
it "instantiates PromisePay::Request with the correct path" do
|
56
56
|
valid_path = "items/"
|
57
|
-
PromisePay::Request.
|
57
|
+
expect(PromisePay::Request).to receive(:new).with(path: valid_path)
|
58
58
|
described_class.find_all
|
59
59
|
end
|
60
60
|
end
|
@@ -9,13 +9,13 @@ describe PromisePay::Marketplace do
|
|
9
9
|
let(:password) { "password" }
|
10
10
|
|
11
11
|
before do
|
12
|
-
PromisePay::Request.
|
12
|
+
allow(PromisePay::Request).to receive(:new) { request }
|
13
13
|
end
|
14
14
|
|
15
15
|
it "instantiates PromisePay::Request with the correct path" do
|
16
16
|
valid_path = "request_token"
|
17
17
|
|
18
|
-
PromisePay::Request.
|
18
|
+
expect(PromisePay::Request).to receive(:new).with(
|
19
19
|
path: valid_path,
|
20
20
|
user: user,
|
21
21
|
password: password
|
@@ -25,7 +25,7 @@ describe PromisePay::Marketplace do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "returns the generated marketplace token" do
|
28
|
-
described_class.new(user: user, password: password).request_token.
|
28
|
+
expect(described_class.new(user: user, password: password).request_token).to eq("123abc")
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -18,31 +18,48 @@ describe PromisePay::Request do
|
|
18
18
|
expect(request).to be_an_instance_of PromisePay::Request
|
19
19
|
end
|
20
20
|
|
21
|
-
it "uses the test api when configured" do
|
22
|
-
expect { PromisePay.env = :test }.
|
23
|
-
to change { request.send(:endpoint).start_with? PromisePay::TEST_HOST }.
|
24
|
-
from(false).to(true)
|
25
|
-
end
|
26
|
-
|
27
21
|
it "builds a RestClient::Request" do
|
28
22
|
expect(request.send(:request)).to be_an_instance_of RestClient::Request
|
29
23
|
end
|
24
|
+
|
25
|
+
it "uses the test api endpoint when configured" do
|
26
|
+
PromisePay.env = :test
|
27
|
+
|
28
|
+
request_endpoint = request.send(:endpoint)
|
29
|
+
expect(request_endpoint.start_with?(PromisePay::TEST_HOST)).to eq(true)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "uses the production api endpoint when configured" do
|
33
|
+
PromisePay.env = :production
|
34
|
+
|
35
|
+
request_endpoint = request.send(:endpoint)
|
36
|
+
expect(request_endpoint.start_with?(PromisePay::API_HOST)).to eq(true)
|
37
|
+
end
|
38
|
+
|
39
|
+
it "takes on optional request method arguement" do
|
40
|
+
request = described_class.new(path: "users/", method: :post)
|
41
|
+
expect(request.send(:method)).to eq(:post)
|
42
|
+
end
|
30
43
|
end
|
31
44
|
|
32
45
|
describe "#execute" do
|
33
46
|
it "calls the RestClient::Request to be exectued" do
|
34
47
|
rest_client_request = request.send(:request)
|
35
|
-
rest_client_request.
|
48
|
+
expect(rest_client_request).to receive(:execute)
|
36
49
|
request.execute
|
37
50
|
end
|
38
51
|
|
39
52
|
it "re-raises RestClient::Unauthorized exceptions" do
|
40
|
-
|
53
|
+
rest_client_request = request.send(:request)
|
54
|
+
allow(rest_client_request).to receive(:execute) { raise RestClient::Unauthorized }
|
55
|
+
|
41
56
|
expect { request.execute }.to raise_error PromisePay::RequestError
|
42
57
|
end
|
43
58
|
|
44
59
|
it "re-raises RestClient::BadRequest exceptions" do
|
45
|
-
|
60
|
+
rest_client_request = request.send(:request)
|
61
|
+
allow(rest_client_request).to receive(:execute) { raise RestClient::BadRequest }
|
62
|
+
|
46
63
|
expect { request.execute }.to raise_error PromisePay::RequestError
|
47
64
|
end
|
48
65
|
|
@@ -28,7 +28,7 @@ describe PromisePay::Session do
|
|
28
28
|
|
29
29
|
context "with valid params" do
|
30
30
|
before do
|
31
|
-
PromisePay::Request.
|
31
|
+
allow(PromisePay::Request).to receive(:new) { request }
|
32
32
|
end
|
33
33
|
|
34
34
|
it "returns the generated session token from PromisePay" do
|
@@ -42,7 +42,7 @@ describe PromisePay::Session do
|
|
42
42
|
|
43
43
|
it "instantiates PromisePay::Request with the correct path" do
|
44
44
|
valid_path = "request_session_token?#{valid_params.to_param}"
|
45
|
-
PromisePay::Request.
|
45
|
+
expect(PromisePay::Request).to receive(:new).with(path: valid_path)
|
46
46
|
session.request_token
|
47
47
|
end
|
48
48
|
end
|
@@ -4,7 +4,7 @@ describe PromisePay::User do
|
|
4
4
|
let(:request) { double("PromisePay::Request", execute: sample_response) }
|
5
5
|
|
6
6
|
before do
|
7
|
-
PromisePay::Request.
|
7
|
+
allow(PromisePay::Request).to receive(:new) { request }
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".find" do
|
@@ -30,7 +30,7 @@ describe PromisePay::User do
|
|
30
30
|
|
31
31
|
it "instantiates PromisePay::Request with the correct path" do
|
32
32
|
valid_path = "users/#{user_id}"
|
33
|
-
PromisePay::Request.
|
33
|
+
expect(PromisePay::Request).to receive(:new).with(path: valid_path)
|
34
34
|
described_class.find(user_id)
|
35
35
|
end
|
36
36
|
end
|
@@ -53,7 +53,7 @@ describe PromisePay::User do
|
|
53
53
|
|
54
54
|
it "instantiates PromisePay::Request with the correct path" do
|
55
55
|
valid_path = "users/"
|
56
|
-
PromisePay::Request.
|
56
|
+
expect(PromisePay::Request).to receive(:new).with(path: valid_path)
|
57
57
|
described_class.find_all
|
58
58
|
end
|
59
59
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"feelist": {
|
3
|
+
"uuid": "5c07f36a-d18f-4153-9a75-ebf9f4f2f9ef",
|
4
|
+
"name": "Transaction fee",
|
5
|
+
"fee_type_id": 1,
|
6
|
+
"amount": 1500,
|
7
|
+
"cap": null,
|
8
|
+
"min": null,
|
9
|
+
"max": null,
|
10
|
+
"to": "seller",
|
11
|
+
"id": "5c07f36a-d18f-4153-9a75-ebf9f4f2f9ef",
|
12
|
+
"href": "/feelist/5c07f36a-d18f-4153-9a75-ebf9f4f2f9ef"
|
13
|
+
}
|
14
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: promise_pay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Liam Norton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- lib/promise_pay.rb
|
113
113
|
- lib/promise_pay/collection.rb
|
114
114
|
- lib/promise_pay/country.rb
|
115
|
+
- lib/promise_pay/feelist.rb
|
115
116
|
- lib/promise_pay/item.rb
|
116
117
|
- lib/promise_pay/lib/dynamic_accessors.rb
|
117
118
|
- lib/promise_pay/marketplace.rb
|
@@ -121,12 +122,14 @@ files:
|
|
121
122
|
- lib/promise_pay/version.rb
|
122
123
|
- promise_pay.gemspec
|
123
124
|
- spec/promise_pay/country_spec.rb
|
125
|
+
- spec/promise_pay/feelist_spec.rb
|
124
126
|
- spec/promise_pay/item_spec.rb
|
125
127
|
- spec/promise_pay/marketplace_spec.rb
|
126
128
|
- spec/promise_pay/request_spec.rb
|
127
129
|
- spec/promise_pay/session_spec.rb
|
128
130
|
- spec/promise_pay/user_spec.rb
|
129
131
|
- spec/spec_helper.rb
|
132
|
+
- spec/support/fixtures/feelist/create.json
|
130
133
|
- spec/support/fixtures/item/find.json
|
131
134
|
- spec/support/fixtures/item/find_all.json
|
132
135
|
- spec/support/fixtures/token_generation.json
|
@@ -158,12 +161,14 @@ specification_version: 4
|
|
158
161
|
summary: PromisePay gem
|
159
162
|
test_files:
|
160
163
|
- spec/promise_pay/country_spec.rb
|
164
|
+
- spec/promise_pay/feelist_spec.rb
|
161
165
|
- spec/promise_pay/item_spec.rb
|
162
166
|
- spec/promise_pay/marketplace_spec.rb
|
163
167
|
- spec/promise_pay/request_spec.rb
|
164
168
|
- spec/promise_pay/session_spec.rb
|
165
169
|
- spec/promise_pay/user_spec.rb
|
166
170
|
- spec/spec_helper.rb
|
171
|
+
- spec/support/fixtures/feelist/create.json
|
167
172
|
- spec/support/fixtures/item/find.json
|
168
173
|
- spec/support/fixtures/item/find_all.json
|
169
174
|
- spec/support/fixtures/token_generation.json
|