jamm 0.0.1 → 1.0.1

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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -57
  3. data/.rubocop.yml +18 -25
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +99 -0
  6. data/README.md +4 -4
  7. data/Rakefile +2 -0
  8. data/jamm.gemspec +16 -3
  9. data/lib/jamm/api/api/customer_api.rb +265 -0
  10. data/lib/jamm/api/api/healthcheck_api.rb +76 -0
  11. data/lib/jamm/api/api/payment_api.rb +145 -0
  12. data/lib/jamm/api/api_client.rb +385 -0
  13. data/lib/jamm/api/api_error.rb +58 -0
  14. data/lib/jamm/api/configuration.rb +293 -0
  15. data/lib/jamm/api/models/customer_service_update_customer_body.rb +247 -0
  16. data/lib/jamm/api/models/protobuf_any.rb +209 -0
  17. data/lib/jamm/api/models/rpc_status.rb +218 -0
  18. data/lib/jamm/api/models/v1_buyer.rb +274 -0
  19. data/lib/jamm/api/models/v1_charge.rb +233 -0
  20. data/lib/jamm/api/models/v1_contract.rb +225 -0
  21. data/lib/jamm/api/models/v1_create_contract_with_charge_request.rb +217 -0
  22. data/lib/jamm/api/models/v1_create_contract_with_charge_response.rb +222 -0
  23. data/lib/jamm/api/models/v1_create_contract_without_charge_request.rb +212 -0
  24. data/lib/jamm/api/models/v1_create_contract_without_charge_response.rb +217 -0
  25. data/lib/jamm/api/models/v1_create_customer_request.rb +207 -0
  26. data/lib/jamm/api/models/v1_create_customer_response.rb +207 -0
  27. data/lib/jamm/api/models/v1_customer.rb +223 -0
  28. data/lib/jamm/api/models/v1_delete_customer_response.rb +207 -0
  29. data/lib/jamm/api/models/v1_get_customer_response.rb +207 -0
  30. data/lib/jamm/api/models/v1_initial_charge.rb +225 -0
  31. data/lib/jamm/api/models/v1_merchant.rb +212 -0
  32. data/lib/jamm/api/models/v1_merchant_customer.rb +213 -0
  33. data/lib/jamm/api/models/v1_payment_link.rb +221 -0
  34. data/lib/jamm/api/models/v1_ping_response.rb +207 -0
  35. data/lib/jamm/api/models/v1_update_customer_response.rb +207 -0
  36. data/lib/jamm/api/models/v1_url.rb +216 -0
  37. data/lib/jamm/api/version.rb +15 -0
  38. data/lib/jamm/api.rb +64 -0
  39. data/lib/jamm/errors.rb +4 -14
  40. data/lib/jamm/oauth.rb +3 -1
  41. data/lib/jamm/version.rb +3 -1
  42. data/lib/jamm.rb +14 -127
  43. metadata +59 -38
  44. data/.github/workflows/build.yml +0 -23
  45. data/.github/workflows/ruby-publish.yml +0 -24
  46. data/CONTRIBUTORS +0 -1
  47. data/images/jamm_logo.png +0 -0
  48. data/lib/jamm/api_operations/create.rb +0 -16
  49. data/lib/jamm/api_operations/get.rb +0 -16
  50. data/lib/jamm/api_operations/list.rb +0 -16
  51. data/lib/jamm/api_operations/update.rb +0 -16
  52. data/lib/jamm/api_resource.rb +0 -5
  53. data/lib/jamm/charge.rb +0 -10
  54. data/lib/jamm/jamm_object.rb +0 -249
  55. data/lib/jamm/payment.rb +0 -18
  56. data/lib/jamm/request.rb +0 -13
  57. data/lib/jamm/time_util.rb +0 -41
  58. data/lib/jamm/token.rb +0 -10
  59. data/lib/jamm/util.rb +0 -76
  60. data/test/jamm/charge_test.rb +0 -56
  61. data/test/jamm/oauth_test.rb +0 -47
  62. data/test/jamm/payment_test.rb +0 -17
  63. data/test/jamm/time_util_test.rb +0 -18
  64. data/test/jamm/token_test.rb +0 -52
  65. data/test/test_data.rb +0 -118
  66. data/test/test_helper.rb +0 -59
@@ -1,249 +0,0 @@
1
- module Jamm
2
- class JammObject
3
- include Enumerable
4
-
5
- @@permanent_attributes = Set.new([:id]) # rubocop:disable Style/ClassVars
6
-
7
- # The default :id method is deprecated and isn't useful to us
8
- undef :id if method_defined?(:id)
9
-
10
- def initialize(id = nil)
11
- # parameter overloading!
12
- if id.is_a?(Hash)
13
- @retrieve_params = id.dup
14
- @retrieve_params.delete(:id)
15
- id = id[:id]
16
- else
17
- @retrieve_params = {}
18
- end
19
-
20
- @values = {}
21
- # This really belongs in APIResource, but not putting it there allows us
22
- # to have a unified inspect method
23
- @unsaved_values = Set.new
24
- @transient_values = Set.new
25
- @values[:id] = id if id
26
- end
27
-
28
- def self.construct_from(values)
29
- new(values[:id]).refresh_from(values)
30
- end
31
-
32
- def to_s(*_args)
33
- JSON.pretty_generate(@values)
34
- end
35
-
36
- def inspect
37
- id_string = respond_to?(:id) && !id.nil? ? " id=#{id}" : ''
38
- "#<#{self.class}:0x#{object_id.to_s(16)}#{id_string}> JSON: " + JSON.pretty_generate(@values)
39
- end
40
-
41
- def refresh_from(values, partial: false)
42
- @original_values = Marshal.load(Marshal.dump(values)) # deep copy
43
- removed = partial ? Set.new : Set.new(@values.keys - values.keys)
44
- added = Set.new(values.keys - @values.keys)
45
- # Wipe old state before setting new. This is useful for e.g. updating a
46
- # customer, where there is no persistent card parameter. Mark those values
47
- # which don't persist as transient
48
-
49
- instance_eval do
50
- remove_accessors(removed)
51
- add_accessors(added)
52
- end
53
- removed.each do |k|
54
- @values.delete(k)
55
- @transient_values.add(k)
56
- @unsaved_values.delete(k)
57
- end
58
- values.each do |k, v|
59
- @values[k] = Util.convert_to_jamm_object(v)
60
- @transient_values.delete(k)
61
- @unsaved_values.delete(k)
62
- end
63
-
64
- self
65
- end
66
-
67
- def [](k)
68
- @values[k.to_sym]
69
- end
70
-
71
- def []=(k, v)
72
- send(:"#{k}=", v)
73
- end
74
-
75
- def keys
76
- @values.keys
77
- end
78
-
79
- def values
80
- @values.values
81
- end
82
-
83
- def to_json(*_a)
84
- JSON.generate(@values)
85
- end
86
-
87
- def as_json(*a)
88
- @values.as_json(*a)
89
- end
90
-
91
- def to_hash
92
- @values.transform_values do |value|
93
- value.respond_to?(:to_hash) ? value.to_hash : value
94
- end
95
- end
96
-
97
- def each(&blk)
98
- @values.each(&blk)
99
- end
100
-
101
- def _dump(_level)
102
- Marshal.dump(@values)
103
- end
104
-
105
- def self._load(args)
106
- values = Marshal.load(args)
107
- construct_from(values)
108
- end
109
-
110
- def serialize_nested_object(key)
111
- new_value = @values[key]
112
- return {} if new_value.is_a?(APIResource)
113
-
114
- if @unsaved_values.include?(key)
115
- # the object has been reassigned
116
- # e.g. as object.key = {foo => bar}
117
- update = new_value
118
- new_keys = update.keys.map(&:to_sym)
119
-
120
- # remove keys at the server, but not known locally
121
- if @original_values.include?(key)
122
- keys_to_unset = @original_values[key].keys - new_keys
123
- keys_to_unset.each { |unset_key| update[unset_key] = '' }
124
- end
125
-
126
- update
127
- else
128
- # can be serialized normally
129
- self.class.serialize_params(new_value)
130
- end
131
- end
132
-
133
- def self.serialize_params(obj, original_value = nil)
134
- case obj
135
- when nil
136
- ''
137
- when JammObject
138
- unsaved_keys = obj.instance_variable_get(:@unsaved_values)
139
- obj_values = obj.instance_variable_get(:@values)
140
- update_hash = {}
141
-
142
- unsaved_keys.each do |k|
143
- update_hash[k] = serialize_params(obj_values[k])
144
- end
145
-
146
- obj_values.each do |k, v|
147
- if v.is_a?(JammObject) || v.is_a?(Hash)
148
- update_hash[k] = obj.serialize_nested_object(k)
149
- elsif v.is_a?(Array)
150
- original_value = obj.instance_variable_get(:@original_values)[k]
151
- if original_value && original_value.length > v.length
152
- # url params provide no mechanism for deleting an item in an array,
153
- # just overwriting the whole array or adding new items. So let's not
154
- # allow deleting without a full overwrite until we have a solution.
155
- raise ArgumentError, 'You cannot delete an item from an array, you must instead set a new array'
156
- end
157
-
158
- update_hash[k] = serialize_params(v, original_value)
159
- end
160
- end
161
-
162
- update_hash
163
- when Array
164
- update_hash = {}
165
- obj.each_with_index do |value, index|
166
- update = serialize_params(value)
167
- update_hash[index] = update if update != {} && (!original_value || update != original_value[index])
168
- end
169
-
170
- if update_hash == {}
171
- nil
172
- else
173
- update_hash
174
- end
175
- else
176
- obj
177
- end
178
- end
179
-
180
- protected
181
-
182
- def metaclass
183
- class << self; self; end
184
- end
185
-
186
- def remove_accessors(keys)
187
- metaclass.instance_eval do
188
- keys.each do |k|
189
- next if @@permanent_attributes.include?(k)
190
-
191
- k_eq = :"#{k}="
192
- remove_method(k) if method_defined?(k)
193
- remove_method(k_eq) if method_defined?(k_eq)
194
- end
195
- end
196
- end
197
-
198
- def add_accessors(keys)
199
- metaclass.instance_eval do
200
- keys.each do |k|
201
- next if @@permanent_attributes.include?(k)
202
-
203
- k_eq = :"#{k}="
204
- define_method(k) { @values[k] }
205
- define_method(k_eq) do |v|
206
- if v == ''
207
- raise ArgumentError, "You cannot set #{k} to an empty string." \
208
- 'We interpret empty strings as nil in requests.' \
209
- "You may set #{self}.#{k} = nil to delete the property."
210
- end
211
- @values[k] = v
212
- @unsaved_values.add(k)
213
- end
214
- end
215
- end
216
- end
217
-
218
- def method_missing(name, *args)
219
- if name.to_s.end_with?('=')
220
- attr = name.to_s[0...-1].to_sym
221
- add_accessors([attr])
222
- begin
223
- mth = method(name)
224
- rescue NameError
225
- raise NoMethodError,
226
- "Cannot set #{attr} on this object. HINT: you can't set: #{@@permanent_attributes.to_a.join(', ')}"
227
- end
228
- return mth.call(args[0])
229
- elsif @values.key?(name)
230
- return @values[name]
231
- end
232
-
233
- begin
234
- super
235
- rescue NoMethodError => e
236
- if @transient_values.include?(name)
237
- raise NoMethodError,
238
- e.message + ". HINT: The '#{name}' attribute was set in the past, however. It was then wiped when refreshing the object with the result returned by Jamm's API, probably as a result of a save(). The attributes currently available on this object are: #{@values.keys.join(', ')}"
239
- end
240
-
241
- raise
242
- end
243
- end
244
-
245
- def respond_to_missing?(symbol, include_private = false)
246
- @values&.key?(symbol) || super
247
- end
248
- end
249
- end
data/lib/jamm/payment.rb DELETED
@@ -1,18 +0,0 @@
1
- module Jamm
2
- class Payment < APIResource
3
- def self.create(params = {}, headers = {})
4
- params[:redirect][:expired_at] = TimeUtil.relative_time_to_iso(params[:redirect][:expired_in]) if params[:redirect] && params[:redirect][:expired_in]
5
-
6
- request_jamm_api(
7
- method: :post,
8
- path: resource_url,
9
- params: params,
10
- headers: headers
11
- )
12
- end
13
-
14
- def self.resource_url
15
- '/payments'
16
- end
17
- end
18
- end
data/lib/jamm/request.rb DELETED
@@ -1,13 +0,0 @@
1
- module Jamm
2
- module Request
3
- module ClassMethods
4
- def request_jamm_api(method:, path:, params: {}, headers: {})
5
- Jamm.request_jamm_api(method, path, params, headers)
6
- end
7
- end
8
-
9
- def self.included(base)
10
- base.extend(ClassMethods)
11
- end
12
- end
13
- end
@@ -1,41 +0,0 @@
1
- require 'time'
2
- module Jamm
3
- class TimeUtil
4
- def self.relative_time_to_iso(relative_time)
5
- # Check if the input string is in ISO format
6
- return relative_time if iso_format?(relative_time)
7
-
8
- # Parse the relative time string
9
- quantity, unit = relative_time.split
10
- quantity = quantity.to_i
11
-
12
- # Calculate the time delta
13
- case unit.downcase
14
- when 'second', 'seconds'
15
- time_delta = quantity
16
- when 'minute', 'minutes'
17
- time_delta = quantity * 60
18
- when 'hour', 'hours'
19
- time_delta = quantity * 60 * 60
20
- when 'day', 'days'
21
- time_delta = quantity * 60 * 60 * 24
22
- when 'week', 'weeks'
23
- time_delta = quantity * 60 * 60 * 24 * 7
24
- else
25
- raise ArgumentError, "Unknown time unit: #{unit}"
26
- end
27
-
28
- # Calculate the ISO datetime string
29
- iso_time = Time.now + time_delta
30
- iso_time.strftime('%Y-%m-%dT%H:%M:%SZ')
31
- end
32
-
33
- def self.iso_format?(string)
34
- # Check if the string matches the ISO 8601 datetime format
35
-
36
- !!Time.iso8601(string)
37
- rescue StandardError
38
- false
39
- end
40
- end
41
- end
data/lib/jamm/token.rb DELETED
@@ -1,10 +0,0 @@
1
- module Jamm
2
- class Token < APIResource
3
- extend Jamm::APIOperations::List
4
- extend Jamm::APIOperations::Get
5
-
6
- def self.resource_url
7
- '/payments/tokens'
8
- end
9
- end
10
- end
data/lib/jamm/util.rb DELETED
@@ -1,76 +0,0 @@
1
- module Jamm
2
- module Util
3
- def self.convert_to_jamm_object(response)
4
- case response
5
- when Array
6
- response.map { |i| convert_to_jamm_object(i) }
7
- when Hash
8
- JammObject.construct_from(response)
9
- else
10
- response
11
- end
12
- end
13
-
14
- def self.symbolize_names(object)
15
- case object
16
- when Hash
17
- new_hash = {}
18
- object.each do |key, value|
19
- key = begin
20
- key.to_sym
21
- rescue StandardError
22
- key
23
- end || key
24
- new_hash[key] = symbolize_names(value)
25
- end
26
- new_hash
27
- when Array
28
- object.map { |value| symbolize_names(value) }
29
- else
30
- object
31
- end
32
- end
33
-
34
- def self.url_encode(key)
35
- # URI.escape is obsolete, so just use the code fragment in URI library
36
- # (from URI::RFC2396_Parser#escape)
37
- key.to_s.gsub(Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) do
38
- us = ::Regexp.last_match(0)
39
- tmp = ''
40
- us.each_byte do |uc|
41
- tmp << format('%%%02X', uc)
42
- end
43
- tmp
44
- end.force_encoding(Encoding::US_ASCII)
45
- end
46
-
47
- def self.flatten_params(params, parent_key = nil)
48
- result = []
49
- params.each do |key, value|
50
- calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
51
- if value.is_a?(Hash)
52
- result += flatten_params(value, calculated_key)
53
- elsif value.is_a?(Array)
54
- result += flatten_params_array(value, calculated_key)
55
- else
56
- result << [calculated_key, value]
57
- end
58
- end
59
- result
60
- end
61
-
62
- def self.flatten_params_array(value, calculated_key)
63
- result = []
64
- value.each do |elem|
65
- if elem.is_a?(Hash)
66
- result += flatten_params(elem, calculated_key)
67
- elsif elem.is_a?(Array)
68
- result += flatten_params_array(elem, calculated_key)
69
- else
70
- result << ["#{calculated_key}[]", elem]
71
- end
72
- end
73
- result
74
- end
75
- end
76
- end
@@ -1,56 +0,0 @@
1
- require File.expand_path('../test_helper', __dir__)
2
-
3
- module Jamm
4
- class ChargeTest < Test::Unit::TestCase
5
- should 'return a list of charge when Charge.list return valid response' do
6
- # Arrange
7
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
8
- @mock.expects(:get).once.returns(test_response(test_charges))
9
- # Act
10
- actual = Jamm::Charge.list
11
- # Assert
12
- assert actual.is_a? Array
13
- assert_equal actual[0].charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
14
- assert_equal actual[0].contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
15
- assert_equal actual[0].status, 'CREATED'
16
- assert_equal actual[0].description, 'Gold Gym'
17
- assert_equal actual[0].currency, 'JPY'
18
- assert_equal actual[0].amount, 1000
19
- assert_equal actual[0].amount_refunded, 800
20
- assert_equal actual[0].merchant_metadata.key1, 'value1'
21
- assert_equal actual[0].merchant_metadata.key2, 'value2'
22
- assert_equal actual[0].created_at, '2023-11-07T15:30:00.000+03:00'
23
- assert_equal actual[0].updated_at, '2023-11-11T15:30:00.000+03:00'
24
- end
25
-
26
- should 'raise an error when Charge.list return timeout' do
27
- # Arrange
28
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
29
- @mock.expects(:get).once.raises(RestClient::RequestTimeout)
30
- # Assert
31
- assert_raise ApiConnectionError do
32
- Jamm::Charge.list
33
- end
34
- end
35
-
36
- should 'return a charge when Charge.get return valid response' do
37
- # Arrange
38
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
39
- @mock.expects(:get).once.returns(test_response(test_charge))
40
- # Act
41
- actual = Jamm::Charge.get('ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef')
42
- # Assert
43
- assert_equal actual.charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
44
- assert_equal actual.contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
45
- assert_equal actual.status, 'CREATED'
46
- assert_equal actual.description, 'Gold Gym'
47
- assert_equal actual.currency, 'JPY'
48
- assert_equal actual.amount, 1000
49
- assert_equal actual.amount_refunded, 800
50
- assert_equal actual.merchant_metadata.key1, 'value1'
51
- assert_equal actual.merchant_metadata.key2, 'value2'
52
- assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
53
- assert_equal actual.updated_at, '2023-11-11T15:30:00.000+03:00'
54
- end
55
- end
56
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path('../test_helper', __dir__)
2
- require 'rest-client'
3
-
4
- module Jamm
5
- class OAuthTest < Test::Unit::TestCase
6
- should 'raise an error when bad request was returned' do
7
- @mock.expects(:post).once.raises(RestClient::ExceptionWithResponse)
8
- assert_raise OAuthError do
9
- Jamm::OAuth.oauth_token
10
- end
11
- end
12
-
13
- should 'raise an error when SocketError happened' do
14
- @mock.expects(:post).once.raises(SocketError)
15
- assert_raise OAuthError do
16
- Jamm::OAuth.oauth_token
17
- end
18
- end
19
-
20
- should 'raise an error when timeout happened' do
21
- @mock.expects(:post).once.raises(RestClient::RequestTimeout)
22
- assert_raise OAuthError do
23
- Jamm::OAuth.oauth_token
24
- end
25
- end
26
-
27
- should 'raise an error when an unexpected exception happened' do
28
- @mock.expects(:post).once.raises(RestClient::Exception)
29
- assert_raise OAuthError do
30
- Jamm::OAuth.oauth_token
31
- end
32
- end
33
-
34
- should 'raise an error when unexpected response was returned' do
35
- @mock.expects(:post).once.returns(test_response({}, 200))
36
- assert_raise OAuthError do
37
- Jamm::OAuth.oauth_token
38
- end
39
- end
40
-
41
- should 'return an access token when valid response was returned' do
42
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
43
- actual = Jamm::OAuth.oauth_token
44
- assert_equal actual, 'access_token'
45
- end
46
- end
47
- end
@@ -1,17 +0,0 @@
1
- require File.expand_path('../test_helper', __dir__)
2
-
3
- module Jamm
4
- class PaymentTest < Test::Unit::TestCase
5
- should 'return a result when Payment.create return valid response' do
6
- # Arrange
7
- @mock.stubs(:post).returns(test_response(test_cognito_response)).then.returns(test_response(test_create_payment_response))
8
- # Act
9
- actual = Jamm::Payment.create(test_create_payment_request)
10
- # Assert
11
- assert_equal actual.token_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
12
- assert_equal actual.charge_id, 'ct_h5e599d3-0000-4d46-9a52-1a37e7b5b8ef'
13
- assert_equal actual.payment_url, 'https://jamm-pay.com/K5e599d3-8b9e-4d46-9a72-1a37e7b5b8ef'
14
- assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
15
- end
16
- end
17
- end
@@ -1,18 +0,0 @@
1
- require File.expand_path('../test_helper', __dir__)
2
- require 'time'
3
-
4
- module Jamm
5
- class TimeUtilTest < Test::Unit::TestCase
6
- should 'compute relative time when relative scale is specified' do
7
- now = Time.now
8
- Time.expects(:now).once.returns(now)
9
- actual = Jamm::TimeUtil.relative_time_to_iso('6 minutes')
10
- assert_equal actual, (now + 6 * 60).strftime('%Y-%m-%dT%H:%M:%SZ')
11
- end
12
-
13
- should 'return input when absolute scale is specified' do
14
- actual = Jamm::TimeUtil.relative_time_to_iso('2024-04-11T16:28:07.420Z')
15
- assert_equal actual, '2024-04-11T16:28:07.420Z'
16
- end
17
- end
18
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path('../test_helper', __dir__)
2
-
3
- module Jamm
4
- class TokenTest < Test::Unit::TestCase
5
- should 'return a list of contract tokens when Token.list return valid response' do
6
- # Arrange
7
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
8
- @mock.expects(:get).once.returns(test_response(test_token_list))
9
- # Act
10
- actual = Jamm::Token.list
11
- # Assert
12
- assert actual.is_a? Array
13
- assert_equal actual[0].contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
14
- assert_equal actual[0].status, 'CREATED'
15
- assert_equal actual[0].description, 'Gold Gym'
16
- assert_equal actual[0].currency, 'JPY'
17
- assert_equal actual[0].initial_amount, 1000
18
- assert_equal actual[0].metadata.key1, 'value1'
19
- assert_equal actual[0].metadata.key2, 'value2'
20
- assert_equal actual[0].created_at, '2023-11-07T15:30:00.000+03:00'
21
- assert_equal actual[0].updated_at, '2023-11-11T15:30:00.000+03:00'
22
- end
23
-
24
- should 'raise an error when Token.list return timeout' do
25
- # Arrange
26
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
27
- @mock.expects(:get).once.raises(RestClient::RequestTimeout)
28
- # Assert
29
- assert_raise ApiConnectionError do
30
- Jamm::Token.list
31
- end
32
- end
33
-
34
- should 'return a contract tokens when Token.get return valid response' do
35
- # Arrange
36
- @mock.expects(:post).once.returns(test_response(test_cognito_response))
37
- @mock.expects(:get).once.returns(test_response(test_token))
38
- # Act
39
- actual = Jamm::Token.get('dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef')
40
- # Assert
41
- assert_equal actual.contract_id, 'dt_f5e599d3-8b9e-4d46-9a52-1a37e7b5b8ef'
42
- assert_equal actual.status, 'CREATED'
43
- assert_equal actual.description, 'Gold Gym'
44
- assert_equal actual.currency, 'JPY'
45
- assert_equal actual.initial_amount, 1000
46
- assert_equal actual.metadata.key1, 'value1'
47
- assert_equal actual.metadata.key2, 'value2'
48
- assert_equal actual.created_at, '2023-11-07T15:30:00.000+03:00'
49
- assert_equal actual.updated_at, '2023-11-11T15:30:00.000+03:00'
50
- end
51
- end
52
- end