omise 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d579cc378a6ebd347734c7b5d85485ec79fc914a
4
- data.tar.gz: e3bc21241038d62880f23442f9fff10413870671
3
+ metadata.gz: 071c06e6a320fa5d993a2291f62c985b982c1eda
4
+ data.tar.gz: 4021e157e6f3b623ca960fd7aaec603b5a63c7c9
5
5
  SHA512:
6
- metadata.gz: 8d0cf7db00c3f3cf45f5501dd61c8c83a25e7b4398012384dad872c2c78be5752ceb3ba6d6c8b9c3db8ee7709fc78a2a4d818264b27860d42ffc6cbe9a221b32
7
- data.tar.gz: 66ae9927ce40e842de24f4bb5f55c1dea15e7c69ec89f637a9df99f9e797db56bf619bd1b3f0fac7511bd74a11589ae886721e72535d69c574360883177d5fc6
6
+ metadata.gz: 6a7485c139f8ae933527c487a17cf48eb0ce8053a3e9c99784ed7b8370cf976c7d5d43b5e10fe313ee392b6e4e02e89e153b0517a91b9ad5ea4eed15283b8f9e
7
+ data.tar.gz: bc402a2ba97a6eff222c2a606840e1741c3862c604ed4da884bf58b5403ed700ef7da3b57e9c84ee6fdad1803bc8f629f043a8db892a66297f906a80b1ec1615
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  An [unreleased] version is not available on rubygems and is subject to changes and must not be considered final. Elements of unreleased list may be edited or removed at any time.
4
4
 
5
+ ## [0.2.0] 2015-11-13
6
+
7
+ - [Added] Add Omise-Version header to request.
8
+ - [Fixed] Fix auto expanding attribute does not play well with expand=true.
9
+ - [Fixed] Fix bank accounts were typecasted as OmiseObject instead of being
10
+ typecasted as BankAccount.
11
+
5
12
  ## [0.1.5] 2015-07-29
6
13
 
7
14
  - [Added] Add json dependency in the gemspec.
@@ -14,10 +21,12 @@ An [unreleased] version is not available on rubygems and is subject to changes a
14
21
  ## [0.1.0] 2015-01-19
15
22
 
16
23
  - [Added] Add support for the Refund API.
17
- - [Added] Add a test suite that can be run locally without the need for a network connection or to set Omise keys.
24
+ - [Added] Add a test suite that can be run locally without the need for a
25
+ network connection or to set Omise keys.
18
26
  - [Added] Add a list method to retrieve a list of objects.
19
27
  - [Changed] Move typecast and load_response methods into a Util module.
20
- - [Removed] Remove the ability to retrieve a list by calling retrieve without arguments.
28
+ - [Removed] Remove the ability to retrieve a list by calling retrieve without
29
+ arguments.
21
30
 
22
31
  ## [0.0.1] - 2014-11-18
23
32
 
data/README.md CHANGED
@@ -43,6 +43,22 @@ create tokens. When creating a token server side you'll need card data
43
43
  transiting to and from your server and this requires that your organization be
44
44
  PCI compliant.
45
45
 
46
+ ### API version
47
+
48
+ In case you want to enforce API version the application use, you can specify it
49
+ by setting the api_version. The version specified by this settings will override
50
+ the version setting in your account. This is useful if you have multiple
51
+ environments with different API versions (e.g. development on the latest but
52
+ production on the older version).
53
+
54
+ ```ruby
55
+ require "omise"
56
+ Omise.api_version = "2014-07-27"
57
+ ```
58
+
59
+ It is highly recommended to set this version to the current version
60
+ you're using.
61
+
46
62
  ## Quick Start
47
63
 
48
64
  After you have implemented [Omise.js](https://gitub.com/omise/omise.js) on your
@@ -56,7 +72,7 @@ charge = Omise::Charge.create({
56
72
  card: params[:omise_token]
57
73
  })
58
74
 
59
- if charge.captured
75
+ if charge.paid
60
76
  # handle success
61
77
  puts "thanks"
62
78
  else
@@ -3,6 +3,7 @@ require "omise/util"
3
3
  module Omise
4
4
  module Attributes
5
5
  def initialize(attributes = {})
6
+ @expanded_attributes = {}
6
7
  @attributes = attributes
7
8
  end
8
9
 
@@ -11,8 +12,8 @@ module Omise
11
12
  end
12
13
 
13
14
  def assign_attributes(attributes = {})
14
- @attributes = attributes
15
15
  cleanup!
16
+ @attributes = attributes
16
17
  yield if block_given?
17
18
  self
18
19
  end
@@ -32,7 +33,7 @@ module Omise
32
33
  def [](key)
33
34
  value = @attributes[key.to_s]
34
35
  if value.is_a?(Hash)
35
- @attributes[key.to_s] = Omise::Util.typecast(value)
36
+ Omise::Util.typecast(value)
36
37
  else
37
38
  value
38
39
  end
@@ -56,8 +57,24 @@ module Omise
56
57
 
57
58
  private
58
59
 
60
+ def lookup_attribute_value(*keys)
61
+ keys.each { |key| return self[key] if key?(key) }
62
+ end
63
+
64
+ def list_attribute(klass, key)
65
+ klass.new(self, @attributes[key])
66
+ end
67
+
68
+ def expand_attribute(object, key, options = {})
69
+ if @attributes[key] && @attributes[key].is_a?(String)
70
+ @expanded_attributes[key] ||= object.retrieve(@attributes[key], options)
71
+ else
72
+ self[key]
73
+ end
74
+ end
75
+
59
76
  def cleanup!
60
- # noop
77
+ @expanded_attributes = {}
61
78
  end
62
79
  end
63
80
  end
data/lib/omise/charge.rb CHANGED
@@ -29,35 +29,32 @@ module Omise
29
29
  assign_attributes resource(attributes).patch(attributes)
30
30
  end
31
31
 
32
+ def capture(options = {})
33
+ assign_attributes nested_resource("capture", options).post
34
+ end
35
+
32
36
  def customer(options = {})
33
- if @attributes["customer"]
34
- @customer ||= Customer.retrieve(@attributes["customer"], options)
35
- end
37
+ expand_attribute Customer, "customer", options
36
38
  end
37
39
 
38
40
  def dispute(options = {})
39
- if @attributes["dispute"]
40
- @dispute ||= Dispute.retrieve(@attributes["dispute"], options)
41
- end
41
+ expand_attribute Dispute, "dispute", options
42
42
  end
43
43
 
44
44
  def transaction(options = {})
45
- if @attributes["transaction"]
46
- @transaction ||= Transaction.retrieve(@attributes["transaction"], options)
47
- end
45
+ expand_attribute Transaction, "transaction", options
48
46
  end
49
47
 
50
48
  def refunds
51
- @refunds ||= RefundList.new(self, @attributes["refunds"])
49
+ list_attribute RefundList, "refunds"
52
50
  end
53
51
 
54
- private
52
+ def captured
53
+ lookup_attribute_value :captured, :paid
54
+ end
55
55
 
56
- def cleanup!
57
- @customer = nil
58
- @dispute = nil
59
- @refunds = nil
60
- @transaction = nil
56
+ def paid
57
+ lookup_attribute_value :paid, :captured
61
58
  end
62
59
  end
63
60
  end
data/lib/omise/config.rb CHANGED
@@ -31,6 +31,5 @@ module Omise
31
31
 
32
32
  self.api_url = "https://api.omise.co"
33
33
  self.vault_url = "https://vault.omise.co"
34
- self.api_version = "2014-07-27"
35
34
  self.resource = Resource
36
35
  end
@@ -31,20 +31,11 @@ module Omise
31
31
  end
32
32
 
33
33
  def default_card(options = {})
34
- if @attributes["default_card"]
35
- @default_card ||= cards.retrieve(@attributes["default_card"], options)
36
- end
34
+ expand_attribute cards, "default_card", options
37
35
  end
38
36
 
39
37
  def cards
40
- @cards ||= CardList.new(self, @attributes["cards"])
41
- end
42
-
43
- private
44
-
45
- def cleanup!
46
- @default_card = nil
47
- @cards = nil
38
+ list_attribute CardList, "cards"
48
39
  end
49
40
  end
50
41
  end
data/lib/omise/dispute.rb CHANGED
@@ -24,15 +24,7 @@ module Omise
24
24
  end
25
25
 
26
26
  def charge(options = {})
27
- if @attributes["charge"]
28
- @charge ||= Charge.retrieve(@attributes["charge"], options)
29
- end
30
- end
31
-
32
- private
33
-
34
- def cleanup!
35
- @charge = nil
27
+ expand_attribute Charge, "charge", options
36
28
  end
37
29
  end
38
30
  end
data/lib/omise/object.rb CHANGED
@@ -56,5 +56,9 @@ module Omise
56
56
  def resource(*args)
57
57
  collection.resource(location, *args)
58
58
  end
59
+
60
+ def nested_resource(path, *args)
61
+ collection.resource([location, path].compact.join("/"), *args)
62
+ end
59
63
  end
60
64
  end
@@ -30,15 +30,7 @@ module Omise
30
30
  end
31
31
 
32
32
  def bank_account
33
- if @attributes["bank_account"]
34
- @bank_account ||= BankAccount.new(@attributes["bank_account"])
35
- end
36
- end
37
-
38
- private
39
-
40
- def cleanup!
41
- @bank_account = nil
33
+ expand_attribute BankAccount, "bank_account"
42
34
  end
43
35
  end
44
36
  end
data/lib/omise/refund.rb CHANGED
@@ -11,22 +11,11 @@ module Omise
11
11
  end
12
12
 
13
13
  def charge(options = {})
14
- if @attributes["charge"]
15
- @charge ||= Charge.retrieve(@attributes["charge"], options)
16
- end
14
+ expand_attribute Charge, "charge", options
17
15
  end
18
16
 
19
17
  def transaction(options = {})
20
- if @attributes["transaction"]
21
- @transaction ||= Transaction.retrieve(@attributes["transaction"], options)
22
- end
23
- end
24
-
25
- private
26
-
27
- def cleanup!
28
- @charge = nil
29
- @transaction = nil
18
+ expand_attribute Transaction, "transaction", options
30
19
  end
31
20
  end
32
21
  end
@@ -6,24 +6,30 @@ require "rest-client"
6
6
  require "omise/util"
7
7
  require "omise/config"
8
8
  require "omise/error"
9
+ require "omise/version"
9
10
 
10
11
  module Omise
11
12
  class Resource
12
13
  CA_BUNDLE_PATH = File.expand_path("../../../data/ca_certificates.pem", __FILE__)
14
+ DEFAULT_HEADERS = {
15
+ user_agent: "OmiseRuby/#{Omise::VERSION} Ruby/#{RUBY_VERSION}"
16
+ }
13
17
 
14
18
  def initialize(url, path, key)
15
- @uri = URI.parse(url)
16
- @uri.path = [@uri.path, path].join
17
- @resource = RestClient::Resource.new(@uri.to_s, {
19
+ @uri = prepare_uri(url, path)
20
+ @headers = prepare_headers
21
+ @key = key
22
+
23
+ @resource = RestClient::Resource.new(@uri, {
18
24
  user: key,
19
25
  verify_ssl: OpenSSL::SSL::VERIFY_PEER,
20
26
  ssl_ca_file: CA_BUNDLE_PATH,
21
- headers: {
22
- user_agent: "OmiseRuby/#{Omise::VERSION} OmiseAPI/#{Omise.api_version} Ruby/#{RUBY_VERSION}"
23
- }
27
+ headers: @headers,
24
28
  })
25
29
  end
26
30
 
31
+ attr_reader :uri, :headers, :key
32
+
27
33
  def get(attributes = {})
28
34
  @resource.get(params: attributes) { |r| Omise::Util.load_response(r) }
29
35
  end
@@ -39,5 +45,23 @@ module Omise
39
45
  def delete
40
46
  @resource.delete { |r| Omise::Util.load_response(r) }
41
47
  end
48
+
49
+ private
50
+
51
+ def prepare_uri(url, path)
52
+ uri = URI.parse(url)
53
+ uri.path = [uri.path, path].join
54
+ uri.to_s
55
+ end
56
+
57
+ def prepare_headers
58
+ headers = {}.merge(DEFAULT_HEADERS)
59
+
60
+ if Omise.api_version
61
+ headers = headers.merge(omise_version: Omise.api_version)
62
+ end
63
+
64
+ headers
65
+ end
42
66
  end
43
67
  end
@@ -12,7 +12,7 @@ module Omise
12
12
  end
13
13
 
14
14
  def get(attributes = {})
15
- Omise::Util.load_response(read_file("get"))
15
+ Omise::Util.load_response(read_file("get", attributes))
16
16
  end
17
17
 
18
18
  def patch(attributes = {})
@@ -27,10 +27,20 @@ module Omise
27
27
  Omise::Util.load_response(read_file("post"))
28
28
  end
29
29
 
30
- def read_file(verb)
30
+ private
31
+
32
+ def generate_path(verb, attributes)
33
+ return verb if attributes.empty?
34
+ params = attributes.to_a.sort { |x,y| x.first <=> x.last }.flatten.join("-")
35
+ [verb, params].compact.join("-")
36
+ end
37
+
38
+ def read_file(verb, attributes = {})
39
+ path = generate_path(verb, attributes)
40
+
31
41
  File.read(File.expand_path(File.join(
32
42
  Omise::LIB_PATH, "..", "test", "fixtures",
33
- [@uri.host, @uri.path, "-#{verb}.json"].join
43
+ [@uri.host, @uri.path, "-#{path}.json"].join
34
44
  )))
35
45
  end
36
46
  end
@@ -31,23 +31,12 @@ module Omise
31
31
  assign_attributes resource(attributes).delete
32
32
  end
33
33
 
34
- def recipient
35
- if @attributes["recipient"]
36
- @recipient ||= Recipient.retrieve(@attributes["recipient"])
37
- end
34
+ def recipient(options = {})
35
+ expand_attribute Recipient, "recipient", options
38
36
  end
39
37
 
40
38
  def bank_account
41
- if @attributes["bank_account"]
42
- @bank_account ||= BankAccount.new(@attributes["bank_account"])
43
- end
44
- end
45
-
46
- private
47
-
48
- def cleanup!
49
- @bank_account = nil
50
- @recipient = nil
39
+ expand_attribute BankAccount, "bank_account"
51
40
  end
52
41
  end
53
42
  end
data/lib/omise/util.rb CHANGED
@@ -7,7 +7,8 @@ module Omise
7
7
  module Util module_function
8
8
  def typecast(object)
9
9
  klass = begin
10
- Omise.const_get(object["object"].capitalize)
10
+ klass_name = object["object"].split("_").map(&:capitalize).join("")
11
+ Omise.const_get(klass_name)
11
12
  rescue NameError
12
13
  OmiseObject
13
14
  end
data/lib/omise/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Omise
2
- VERSION = "0.1.5"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,96 @@
1
+ {
2
+ "object": "charge",
3
+ "id": "chrg_test_4yq7duw15p9hdrjp8oq",
4
+ "livemode": false,
5
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq",
6
+ "amount": 100000,
7
+ "currency": "thb",
8
+ "description": "Charge for order 3947",
9
+ "capture": true,
10
+ "authorized": true,
11
+ "captured": true,
12
+ "transaction": "trxn_test_4yq7duwb9jts1vxgqua",
13
+ "refunded": 10000,
14
+ "refunds": {
15
+ "object": "list",
16
+ "from": "1970-01-01T00:00:00+00:00",
17
+ "to": "2015-01-16T07:23:49+00:00",
18
+ "offset": 0,
19
+ "limit": 20,
20
+ "total": 1,
21
+ "data": [
22
+ {
23
+ "object": "refund",
24
+ "id": "rfnd_test_4yqmv79ahghsiz23y3c",
25
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds/rfnd_test_4yqmv79ahghsiz23y3c",
26
+ "amount": 10000,
27
+ "currency": "thb",
28
+ "charge": "chrg_test_4yq7duw15p9hdrjp8oq",
29
+ "transaction": "trxn_test_4yqmv79fzpy0gmz5mmq",
30
+ "created": "2015-01-16T07:23:45Z"
31
+ }
32
+ ],
33
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds"
34
+ },
35
+ "failure_code": null,
36
+ "failure_message": null,
37
+ "card": {
38
+ "object": "card",
39
+ "id": "card_test_4yq6tuucl9h4erukfl0",
40
+ "livemode": false,
41
+ "location": "/customers/cust_test_4yq6txdpfadhbaqnwp3/cards/card_test_4yq6tuucl9h4erukfl0",
42
+ "country": "",
43
+ "city": "Bangkok",
44
+ "postal_code": "10320",
45
+ "financing": "",
46
+ "last_digits": "4242",
47
+ "brand": "Visa",
48
+ "expiration_month": 1,
49
+ "expiration_year": 2017,
50
+ "fingerprint": "sRF/oMw2UQJJp/WbU+2/ZbVzwROjpMf1lyhOHhOqziw=",
51
+ "name": "JOHN DOE",
52
+ "security_code_check": true,
53
+ "created": "2015-01-15T04:03:40Z"
54
+ },
55
+ "customer": {
56
+ "object": "customer",
57
+ "id": "cust_test_4yq6txdpfadhbaqnwp3",
58
+ "livemode": false,
59
+ "location": "/customers/cust_test_4yq6txdpfadhbaqnwp3",
60
+ "default_card": "card_test_4yq6tuucl9h4erukfl0",
61
+ "email": "john.doe@example.com",
62
+ "description": "John Doe (id: 30)",
63
+ "created": "2015-01-15T04:03:52Z",
64
+ "cards": {
65
+ "object": "list",
66
+ "from": "1970-01-01T00:00:00+00:00",
67
+ "to": "2015-01-15T04:03:52+00:00",
68
+ "offset": 0,
69
+ "limit": 20,
70
+ "total": 1,
71
+ "data": [
72
+ {
73
+ "object": "card",
74
+ "id": "card_test_4yq6tuucl9h4erukfl0",
75
+ "livemode": false,
76
+ "location": "/customers/cust_test_4yq6txdpfadhbaqnwp3/cards/card_test_4yq6tuucl9h4erukfl0",
77
+ "country": "",
78
+ "city": "Bangkok",
79
+ "postal_code": "10320",
80
+ "financing": "",
81
+ "last_digits": "4242",
82
+ "brand": "Visa",
83
+ "expiration_month": 1,
84
+ "expiration_year": 2017,
85
+ "fingerprint": "sRF/oMw2UQJJp/WbU+2/ZbVzwROjpMf1lyhOHhOqziw=",
86
+ "name": "JOHN DOE",
87
+ "security_code_check": true,
88
+ "created": "2015-01-15T04:03:40Z"
89
+ }
90
+ ],
91
+ "location": "/customers/cust_test_4yq6txdpfadhbaqnwp3/cards"
92
+ }
93
+ },
94
+ "ip": null,
95
+ "created": "2015-01-15T05:00:29Z"
96
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "object": "charge",
3
+ "id": "chrg_test_4yq7duw15p9hdrjp8oq",
4
+ "livemode": false,
5
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq",
6
+ "amount": 100000,
7
+ "currency": "thb",
8
+ "description": "Charge for order 3947",
9
+ "capture": true,
10
+ "authorized": true,
11
+ "captured": true,
12
+ "transaction": "trxn_test_4yq7duwb9jts1vxgqua",
13
+ "refunded": 10000,
14
+ "refunds": {
15
+ "object": "list",
16
+ "from": "1970-01-01T00:00:00+00:00",
17
+ "to": "2015-01-16T07:23:49+00:00",
18
+ "offset": 0,
19
+ "limit": 20,
20
+ "total": 1,
21
+ "data": [
22
+ {
23
+ "object": "refund",
24
+ "id": "rfnd_test_4yqmv79ahghsiz23y3c",
25
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds/rfnd_test_4yqmv79ahghsiz23y3c",
26
+ "amount": 10000,
27
+ "currency": "thb",
28
+ "charge": "chrg_test_4yq7duw15p9hdrjp8oq",
29
+ "transaction": "trxn_test_4yqmv79fzpy0gmz5mmq",
30
+ "created": "2015-01-16T07:23:45Z"
31
+ }
32
+ ],
33
+ "location": "/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds"
34
+ },
35
+ "failure_code": null,
36
+ "failure_message": null,
37
+ "card": {
38
+ "object": "card",
39
+ "id": "card_test_4yq6tuucl9h4erukfl0",
40
+ "livemode": false,
41
+ "location": "/customers/cust_test_4yq6txdpfadhbaqnwp3/cards/card_test_4yq6tuucl9h4erukfl0",
42
+ "country": "",
43
+ "city": "Bangkok",
44
+ "postal_code": "10320",
45
+ "financing": "",
46
+ "last_digits": "4242",
47
+ "brand": "Visa",
48
+ "expiration_month": 1,
49
+ "expiration_year": 2017,
50
+ "fingerprint": "sRF/oMw2UQJJp/WbU+2/ZbVzwROjpMf1lyhOHhOqziw=",
51
+ "name": "JOHN DOE",
52
+ "security_code_check": true,
53
+ "created": "2015-01-15T04:03:40Z"
54
+ },
55
+ "customer": "cust_test_4yq6txdpfadhbaqnwp3",
56
+ "ip": null,
57
+ "created": "2015-01-15T05:00:29Z"
58
+ }
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestAccount < Minitest::Test
4
- def setup
3
+ class TestAccount < Omise::Test
4
+ setup do
5
5
  @account = Omise::Account.retrieve
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestBalance < Minitest::Test
4
- def setup
3
+ class TestBalance < Omise::Test
4
+ setup do
5
5
  @balance = Omise::Balance.retrieve
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestCard < Minitest::Test
4
- def setup
3
+ class TestCard < Omise::Test
4
+ setup do
5
5
  @cards = Omise::Customer.retrieve("cust_test_4yq6txdpfadhbaqnwp3").cards
6
6
  @card = @cards.retrieve("card_test_4yq6tuucl9h4erukfl0")
7
7
  end
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestCharge < Minitest::Test
4
- def setup
3
+ class TestCharge < Omise::Test
4
+ setup do
5
5
  @charge = Omise::Charge.retrieve("chrg_test_4yq7duw15p9hdrjp8oq")
6
6
  end
7
7
 
@@ -17,6 +17,24 @@ class TestCharge < Minitest::Test
17
17
  assert_equal "chrg_test_4yq7duw15p9hdrjp8oq", @charge.id
18
18
  end
19
19
 
20
+ def test_that_unexpanded_resource_are_automatically_expanded
21
+ assert_instance_of Omise::Charge, @charge
22
+ assert_instance_of Omise::Customer, @charge.customer
23
+ assert_instance_of Omise::Transaction, @charge.transaction
24
+ assert_instance_of Omise::RefundList, @charge.refunds
25
+ end
26
+
27
+ def test_that_we_can_retrieve_an_expanded_charge
28
+ charge = Omise::Charge.retrieve("chrg_test_4yq7duw15p9hdrjp8oq", expand: true)
29
+
30
+ assert_instance_of Omise::Charge, charge
31
+ assert_equal "chrg_test_4yq7duw15p9hdrjp8oq", @charge.id
32
+
33
+ assert_instance_of Omise::Customer, @charge.customer
34
+ assert_instance_of Omise::Transaction, @charge.transaction
35
+ assert_instance_of Omise::RefundList, @charge.refunds
36
+ end
37
+
20
38
  def test_that_we_can_list_all_charge
21
39
  charges = Omise::Charge.list
22
40
 
@@ -53,4 +71,30 @@ class TestCharge < Minitest::Test
53
71
  def test_that_we_can_retrieve_a_list_of_refunds
54
72
  assert_instance_of Omise::RefundList, @charge.refunds
55
73
  end
74
+
75
+ def test_that_paid_return_the_value_of_captured
76
+ captured_charge = Omise::Charge.new(JSON.load('{ "captured": true }'))
77
+ uncaptured_charge = Omise::Charge.new(JSON.load('{ "captured": false }'))
78
+
79
+ assert_instance_of TrueClass, captured_charge.captured
80
+ assert_instance_of TrueClass, captured_charge.paid
81
+
82
+ assert_instance_of FalseClass, uncaptured_charge.captured
83
+ assert_instance_of FalseClass, uncaptured_charge.paid
84
+ end
85
+
86
+ def test_that_captured_return_the_value_of_paid
87
+ paid_charge = Omise::Charge.new(JSON.load('{ "paid": true }'))
88
+ unpaid_charge = Omise::Charge.new(JSON.load('{ "paid": false }'))
89
+
90
+ assert_instance_of TrueClass, paid_charge.paid
91
+ assert_instance_of TrueClass, paid_charge.captured
92
+
93
+ assert_instance_of FalseClass, unpaid_charge.paid
94
+ assert_instance_of FalseClass, unpaid_charge.captured
95
+ end
96
+
97
+ def test_that_we_can_send_a_capture_request
98
+ assert @charge.capture
99
+ end
56
100
  end
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestCustomer < Minitest::Test
4
- def setup
3
+ class TestCustomer < Omise::Test
4
+ setup do
5
5
  @customer = Omise::Customer.retrieve("cust_test_4yq6txdpfadhbaqnwp3")
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestDispute < Minitest::Test
4
- def setup
3
+ class TestDispute < Omise::Test
4
+ setup do
5
5
  @dispute = Omise::Dispute.retrieve("dspt_test_5089off452g5m5te7xs")
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestRecipient < Minitest::Test
4
- def setup
3
+ class TestRecipient < Omise::Test
4
+ setup do
5
5
  @recipient = Omise::Recipient.retrieve("recp_test_50894vc13y8z4v51iuc")
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestRefund < Minitest::Test
4
- def setup
3
+ class TestRefund < Omise::Test
4
+ setup do
5
5
  @refunds = Omise::Charge.retrieve("chrg_test_4yq7duw15p9hdrjp8oq").refunds
6
6
  @refund = @refunds.retrieve("rfnd_test_4yqmv79ahghsiz23y3c")
7
7
  end
@@ -0,0 +1,36 @@
1
+ require "support"
2
+
3
+ class TestResource < Omise::Test
4
+ def test_we_can_initialize_a_resource
5
+ resource = Omise::Resource.new(Omise.api_url, "/", "skey_xxx")
6
+
7
+ assert_instance_of Omise::Resource, resource
8
+ end
9
+
10
+ def test_that_the_version_header_is_not_set_if_the_version_config_is_not_set
11
+ resource = Omise::Resource.new(Omise.api_url, "/", "skey_xxx")
12
+
13
+ assert_instance_of Hash, resource.headers
14
+ assert_nil resource.headers[:omise_version]
15
+ end
16
+
17
+ def test_that_the_version_header_is_set_if_the_version_config_is_set
18
+ Omise.api_version = "2014-07-27"
19
+ resource = Omise::Resource.new(Omise.api_url, "/", "skey_xxx")
20
+
21
+ assert_instance_of Hash, resource.headers
22
+ assert_equal "2014-07-27", resource.headers[:omise_version]
23
+ end
24
+
25
+ def test_that_the_path_is_set
26
+ resource = Omise::Resource.new(Omise.api_url, "/charges", "skey_xxx")
27
+
28
+ assert_equal "https://api.omise.co/charges", resource.uri
29
+ end
30
+
31
+ def test_that_the_key_is_set
32
+ resource = Omise::Resource.new(Omise.api_url, "/charges", "skey_xxx")
33
+
34
+ assert_equal "skey_xxx", resource.key
35
+ end
36
+ end
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestToken < Minitest::Test
4
- def setup
3
+ class TestToken < Omise::Test
4
+ setup do
5
5
  @token = Omise::Token.retrieve("tokn_test_4yq8lbecl0q6dsjzxr5")
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestTransaction < Minitest::Test
4
- def setup
3
+ class TestTransaction < Omise::Test
4
+ setup do
5
5
  @transaction = Omise::Transaction.retrieve("trxn_test_4yq7duwb9jts1vxgqua")
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  require "support"
2
2
 
3
- class TestTransfer < Minitest::Test
4
- def setup
3
+ class TestTransfer < Omise::Test
4
+ setup do
5
5
  @transfer = Omise::Transfer.retrieve("trsf_test_4yqacz8t3cbipcj766u")
6
6
  end
7
7
 
data/test/support.rb CHANGED
@@ -3,10 +3,26 @@ require "bundler/setup"
3
3
 
4
4
  Bundler.require(:default, :test)
5
5
 
6
- Omise.test!
6
+ require "minitest/autorun"
7
7
 
8
- # Dummy Keys
9
- Omise.api_key = "pkey_test_4yq6tct0llin5nyyi5l"
10
- Omise.vault_key = "skey_test_4yq6tct0lblmed2yp5t"
8
+ module Omise
9
+ class Test < Minitest::Test
10
+ def before_setup
11
+ Omise.test!
12
+ Omise.api_key = "pkey_test_4yq6tct0llin5nyyi5l"
13
+ Omise.vault_key = "skey_test_4yq6tct0lblmed2yp5t"
14
+ Omise.api_version = nil
15
+ end
11
16
 
12
- require "minitest/autorun"
17
+ def setup
18
+ before_setup
19
+ end
20
+
21
+ def self.setup(&block)
22
+ define_method :setup do
23
+ before_setup
24
+ instance_exec(&block)
25
+ end
26
+ end
27
+ end
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Clart
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-29 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -127,8 +127,10 @@ files:
127
127
  - test/fixtures/api.omise.co/charges-get.json
128
128
  - test/fixtures/api.omise.co/charges-post.json
129
129
  - test/fixtures/api.omise.co/charges/404-get.json
130
+ - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-get-expand-true.json
130
131
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-get.json
131
132
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-patch.json
133
+ - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/capture-post.json
132
134
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds-get.json
133
135
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds-post.json
134
136
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds/404-get.json
@@ -173,6 +175,7 @@ files:
173
175
  - test/omise/test_dispute.rb
174
176
  - test/omise/test_recipient.rb
175
177
  - test/omise/test_refund.rb
178
+ - test/omise/test_resource.rb
176
179
  - test/omise/test_token.rb
177
180
  - test/omise/test_transaction.rb
178
181
  - test/omise/test_transfer.rb
@@ -207,8 +210,10 @@ test_files:
207
210
  - test/fixtures/api.omise.co/charges-get.json
208
211
  - test/fixtures/api.omise.co/charges-post.json
209
212
  - test/fixtures/api.omise.co/charges/404-get.json
213
+ - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-get-expand-true.json
210
214
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-get.json
211
215
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq-patch.json
216
+ - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/capture-post.json
212
217
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds-get.json
213
218
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds-post.json
214
219
  - test/fixtures/api.omise.co/charges/chrg_test_4yq7duw15p9hdrjp8oq/refunds/404-get.json
@@ -253,7 +258,9 @@ test_files:
253
258
  - test/omise/test_dispute.rb
254
259
  - test/omise/test_recipient.rb
255
260
  - test/omise/test_refund.rb
261
+ - test/omise/test_resource.rb
256
262
  - test/omise/test_token.rb
257
263
  - test/omise/test_transaction.rb
258
264
  - test/omise/test_transfer.rb
259
265
  - test/support.rb
266
+ has_rdoc: