kiik 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6f8af83f78371428d1419ef682c9de5e09f0eab
4
- data.tar.gz: ec55948e8487624751521e9e0b69f8abed80d9f0
3
+ metadata.gz: a8998be7b8baba07f66b96c691d57d3f3e0da93b
4
+ data.tar.gz: f9943d6dd97f205948ab7bf3ad2d9cceda0f9c2b
5
5
  SHA512:
6
- metadata.gz: d4064160a604e4320e24aedad51f5206ab8b6cbf605d5f0267f25537cde7e33a623c3e41d07e9c311c086dd4b9d1762e3d64be3c13ab9e846f1f54f7c55a1239
7
- data.tar.gz: e9a79edbfece2d884e2d3a44743de81ed14df5efe11d66c7d6109efec0dec7c32193e4399e94ec0624e58f72e722f33c7e6f7d18e700969be4961f9768e0a0f4
6
+ metadata.gz: 735f3b9f243e7221eb809b3821d3f3189e9043404c1f8afdcc3844fd7838225a94c7b55b7608b326bc5c21e3b6e6b7b8d41a9c84fbf8f76c371d8dd12997258b
7
+ data.tar.gz: 2f1bddd6b7a03e08c6b94af29d5181fb6b851d19798a8c3f89490c9de6563354e0941e58d53b31ae554b7a56de8b462762ae6355c294d12842bf69c8b6bfbd5d
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kiik (0.1.4)
4
+ kiik (0.1.6)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -53,7 +53,7 @@ DEPENDENCIES
53
53
  rake (~> 10.4)
54
54
  shoulda (~> 3.5)
55
55
  test-unit (~> 3.1)
56
- webmock (~> 1.21.0)
56
+ webmock (~> 1.21)
57
57
 
58
58
  BUNDLED WITH
59
59
  1.10.6
data/config/kiik.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  development:
2
2
  api_key: payos_test
3
3
  host: http://localhost:8800
4
- version: 0.3
4
+ version: '0.3'
5
5
  staging:
6
6
  api_key: B31DCE74-E768-43ED-86DA-85501612548F
7
7
  host: https://demo.kiik.com
8
- version: 0.3
8
+ version: '0.3'
9
9
  production:
10
10
  api_key: B31DCE74-E768-43ED-86DA-85501612548F
11
11
  host: https://api.kiik.com
12
- version: 0.3
12
+ version: '0.3'
data/kiik.gemspec CHANGED
@@ -1,8 +1,8 @@
1
1
  $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
2
 
3
- spec = Gem::Specification.new do |s|
3
+ Gem::Specification.new do |s|
4
4
  s.name = 'kiik'
5
- s.version = '0.1.5'
5
+ s.version = '0.1.6'
6
6
  s.summary = 'Integrate Kiik with your Ruby app'
7
7
  s.description = "KiiK's official gem that helps you to integrate with our services. See https://docs.kiik.com.br for details."
8
8
  s.authors = ['Julien Lucca', 'Esdras Eduardo']
@@ -14,7 +14,7 @@ spec = Gem::Specification.new do |s|
14
14
  s.add_development_dependency('shoulda', '~> 3.5')
15
15
  s.add_development_dependency('test-unit', '~> 3.1')
16
16
  s.add_development_dependency('rake', '~> 10.4')
17
- s.add_development_dependency('webmock', '~> 1.21.0')
17
+ s.add_development_dependency('webmock', '~> 1.21')
18
18
 
19
19
  s.files = `git ls-files`.split("\n")
20
20
  s.test_files = `git ls-files -- test/*`.split("\n")
data/lib/kiik/resource.rb CHANGED
@@ -5,6 +5,7 @@ module Kiik
5
5
  attr_accessor :id, :created, :errors
6
6
 
7
7
  class << self
8
+
8
9
  def class_name
9
10
  self.name.split('::')[-1]
10
11
  end
@@ -28,6 +29,34 @@ module Kiik
28
29
  instance.errors = error.errors unless error.nil?
29
30
  instance
30
31
  end
32
+
33
+ def request(path=nil, params={}, method=:GET)
34
+ options = opts.merge!(body: JSON.generate(params))
35
+ url_abs = path.nil? ? url : "#{url}/#{path}"
36
+
37
+ response = case method
38
+ when :GET
39
+ get(url_abs, options)
40
+ when :POST
41
+ post(url_abs, options)
42
+ when :PUT
43
+ put(url_abs, options)
44
+ else
45
+ raise StandardError.new("Method #{method} not implemented")
46
+ end
47
+
48
+ case response.code
49
+ when 200
50
+ build(JSON.parse(response.body))
51
+ when 422, 404
52
+ result = JSON.parse(response.body)
53
+ result["error"]["param"] = "id" unless result["error"]["param"]
54
+ KiikError.new(result)
55
+ else
56
+ raise StandardError.new(response.message)
57
+ end
58
+ end
59
+
31
60
  end
32
61
 
33
62
  def initialize(attributes = {})
@@ -2,12 +2,28 @@ module Kiik
2
2
  module Rest
3
3
  module Create
4
4
  class << self
5
+
5
6
  def included(base)
6
7
  base.extend(ClassMethods)
7
8
  end
9
+
10
+ end
11
+
12
+ def create
13
+ result = self.class.create(self.to_json)
14
+ raise result if result.instance_of? StandardError
15
+
16
+ if result.instance_of? KiikError
17
+ self.errors = result.errors
18
+ return false
19
+ end
20
+
21
+ initialize(result.to_json)
22
+ true
8
23
  end
9
24
 
10
25
  module ClassMethods
26
+
11
27
  def create!(params={})
12
28
  begin
13
29
  create(params)
@@ -19,43 +35,12 @@ module Kiik
19
35
  end
20
36
 
21
37
  def create(params={})
22
- result = request_create(params)
23
- raise result if result.instance_of? StandardError
38
+ result = request(nil, params, :POST)
39
+ raise result if result.kind_of? StandardError
24
40
  result
25
41
  end
26
-
27
- def request_create(params)
28
- options = opts.merge!(body: JSON.generate(params))
29
- response = post(url, options)
30
- case response.code
31
- when 200
32
- build(JSON.parse(response.body))
33
- when 402
34
- result = KiikError.new
35
- result.errors << ({attr: 'status', message: 'recused'})
36
- build(JSON.parse(response.body), result)
37
- when 422
38
- KiikError.new(JSON.parse(response.body))
39
- else
40
- StandardError.new(response.message)
41
- end
42
- end
43
-
44
42
  end
45
43
 
46
- def create
47
- created = false
48
- result = self.class.request_create(self.to_json)
49
- if result.instance_of? KiikError
50
- self.errors = result.errors
51
- elsif result.instance_of? StandardError
52
- raise result
53
- else
54
- initialize(result.to_json)
55
- created = true
56
- end
57
- created
58
- end
59
44
  end
60
45
  end
61
46
  end
@@ -2,55 +2,45 @@ module Kiik
2
2
  module Rest
3
3
  module Update
4
4
  class << self
5
+
5
6
  def included(base)
6
7
  base.extend(ClassMethods)
7
8
  end
9
+
10
+ end
11
+
12
+ def update
13
+ result = self.class.update(self.to_json)
14
+ raise result if result.instance_of? StandardError
15
+
16
+ if result.instance_of? KiikError
17
+ self.errors = result.errors
18
+ return false
19
+ end
20
+
21
+ initialize(result.to_json)
22
+ true
8
23
  end
9
24
 
10
25
  module ClassMethods
11
- def update!(params={})
26
+
27
+ def update!(params={id: 0})
12
28
  begin
13
29
  update(params)
14
30
  rescue KiikError => e
15
31
  build(params, e)
16
32
  rescue StandardError => e
17
- e
33
+ raise e
18
34
  end
19
35
  end
20
36
 
21
- def update(params={})
22
- result = request_update(params)
23
- raise result if result.instance_of? StandardError or result.instance_of? KiikError
37
+ def update(params={id: 0})
38
+ result = request(params[:id], params, :PUT)
39
+ raise result if result.kind_of? StandardError
24
40
  result
25
41
  end
26
-
27
- def request_update(params)
28
- options = opts.merge!(body: JSON.generate(params))
29
- response = put(url + "/" + params['id'], options)
30
- case response.code
31
- when 200
32
- build(JSON.parse(response.body))
33
- when 422
34
- KiikError.new(JSON.parse(response.body))
35
- else
36
- StandardError.new(response.message)
37
- end
38
- end
39
42
  end
40
43
 
41
- def updated
42
- updated = false
43
- result = self.class.request_update(self.to_json)
44
- if result.instance_of? KiikError
45
- self.errors = result.errors
46
- elsif result.instance_of? StandardError
47
- raise result
48
- else
49
- initialize(result.to_json)
50
- updated = true
51
- end
52
- updated
53
- end
54
44
  end
55
45
  end
56
46
  end
@@ -4,24 +4,24 @@ module Kiik
4
4
  class CustomerTest < Test::Unit::TestCase
5
5
 
6
6
  should "raise exception for create empty customer" do
7
- error = {type:"invalid_request_error", param:"name", message:"Param name is required"}
8
- make_customer({}, error)
7
+ respond = {error: {type:"invalid_request_error", param:"name", message:"Param name is required"}}
8
+ post({}, respond, 422)
9
9
  assert_raise KiikError do
10
10
  Kiik::Customer.create
11
11
  end
12
12
  end
13
13
 
14
14
  should "return invalid customer for create! empty customer" do
15
- error = {type:"invalid_request_error", param:"name", message:"Param name is required"}
16
- make_customer({}, error)
15
+ respond = {error: {type:"invalid_request_error", param:"name", message:"Param name is required"}}
16
+ post({}, respond, 422)
17
17
  customer = Kiik::Customer.create!
18
18
  assert !customer.valid?
19
19
  end
20
20
 
21
21
  should "return a new customer for create" do
22
- data = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345"}
23
- make_customer data
24
- customer = Kiik::Customer.create data
22
+ customer_data = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345"}
23
+ post(customer_data, customer_data)
24
+ customer = Kiik::Customer.create customer_data
25
25
  assert customer.valid?
26
26
  assert customer.cards.empty?
27
27
  end
@@ -29,18 +29,45 @@ module Kiik
29
29
  should "return a new customer with card for create with card" do
30
30
  card_data = {name:"Card Name", number:"1234567890", month:12, year:17}
31
31
  customer_data = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345", card:card_data}
32
- make_customer customer_data
32
+ respond = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345", cards:[card_data]}
33
+ post(customer_data, respond)
33
34
  customer = Kiik::Customer.create customer_data
34
35
  assert customer.valid?
35
- assert customer.cards[0].name == card_data[:name]
36
+ assert customer.cards.first.name == card_data[:name]
36
37
  end
37
38
 
38
39
  should "return customer for create using instance" do
39
- data = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345"}
40
- make_customer data
41
- customer = Kiik::Customer.new data
40
+ customer_data = {name:"Customer test", email:"customer@email.com", phone: "11223344", document:"11122233345"}
41
+ post(customer_data)
42
+ customer = Kiik::Customer.new customer_data
42
43
  customer.create
43
44
  assert customer.valid?
44
45
  end
46
+
47
+ should "raise exception for update with customer doesn't exists, code 404" do
48
+ error = {error: {type:"invalid_request_error", message:"Customer doesn't exists"}}
49
+ put(0, {}, error, 422)
50
+ assert_raise KiikError do
51
+ Kiik::Customer.update
52
+ end
53
+ end
54
+
55
+ should "return invalid customer for update! empty customer" do
56
+ error = {error: {type:"invalid_request_error", message:"Customer doesn't exists"}}
57
+ put(0, {}, error, 422)
58
+ customer = Kiik::Customer.update!
59
+ assert !customer.valid?
60
+ assert_equal customer.errors.first[:attr], "id"
61
+ assert_equal customer.errors.first[:message], "Customer doesn't exists"
62
+ end
63
+
64
+ should "return customer updated" do
65
+ customer_data = {id: 1, name:"New name", email:"customer@email.com", phone: "11223344", document:"11122233345"}
66
+ customer_send = {id: 1, name:"New name"}
67
+ put(customer_data[:id], customer_send, customer_data)
68
+ customer = Kiik::Customer.update! customer_send
69
+ assert_equal customer.name, customer_data[:name]
70
+ assert_equal customer.email, customer_data[:email]
71
+ end
45
72
  end
46
73
  end
data/test/test_mock.rb CHANGED
@@ -3,18 +3,22 @@ module Kiik
3
3
 
4
4
  def request(url, params = {}, method = :any)
5
5
  host = Kiik.host.gsub(/^https:\/\//, "").gsub(/^http:\/\//, "")
6
- headers = {:accept_version => Kiik.version, :content_type => 'application/json'}
6
+ headers = {accept_version: Kiik.version, content_type: 'application/json'}
7
7
  stub_request(method, "#{Kiik.api_key}:@#{host}/#{url}").
8
- with(:headers => headers).
9
- with(:body => params)
8
+ with(headers: headers).
9
+ with(body: params)
10
10
  end
11
11
 
12
- def make_customer(params = {}, error = nil)
13
- code = error.nil? ? 200 : 422
14
- respond = error.nil? ? params.clone : {error: error}
15
- respond[:cards] = [params[:card]] unless params[:card].nil?
16
- request("customers", params, :post).
17
- to_return(:status => code, :body => JSON.generate(respond), :headers => {})
12
+ def post(request = {}, respond = nil, code = 200)
13
+ respond = request.clone if respond.nil?
14
+ request("customers", request, :post).
15
+ to_return(status: code, body: JSON.generate(respond), headers: {})
16
+ end
17
+
18
+ def put(id = 0, request = {}, respond = nil, code = 200)
19
+ respond = request.clone if respond.nil?
20
+ request("customers/#{id}", request, :put).
21
+ to_return(status: code, body: JSON.generate(respond), headers: {})
18
22
  end
19
23
  end
20
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kiik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julien Lucca
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-16 00:00:00.000000000 Z
12
+ date: 2015-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mocha
@@ -73,14 +73,14 @@ dependencies:
73
73
  requirements:
74
74
  - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 1.21.0
76
+ version: '1.21'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 1.21.0
83
+ version: '1.21'
84
84
  description: KiiK's official gem that helps you to integrate with our services. See
85
85
  https://docs.kiik.com.br for details.
86
86
  email:
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.4.8
135
+ rubygems_version: 2.4.5.1
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Integrate Kiik with your Ruby app