restful_resource 0.8.34 → 0.9.0

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: 836be6dd290b1071856a1183d22e96781da2fe44
4
- data.tar.gz: 1216e850bac0d6ee7ff4d9f7200470dd60e7d1fe
3
+ metadata.gz: 060b67be52d4bbec24a0eeb0c8a5732f76698925
4
+ data.tar.gz: b016396bcb6958c1538cab53e60698090bb9af2f
5
5
  SHA512:
6
- metadata.gz: ec4e7af3158c8c541951a38a35db1a2884511fc406a7ada61f554619fa8436aa0f13aff63f8ed9d605b298c9022847a2748f5270d92a1cf666c40364cd7acf9d
7
- data.tar.gz: a79bea7b469845c748c808c3fee801a120a9b11c6089081204970c365a8cd62cf9ccfe602d005cf51aef81a05f48fd75bcafbbc6b4f8bf243ab723667ff633ae
6
+ metadata.gz: 05be9cb4721f526c9f38a7505b5af2c32aa8b0de9a8c769a252115e12654afed340cd24deff2e17fabae0e5d9cf2abea4729225395f2f9e9f1d474c2beb40088
7
+ data.tar.gz: 72bab68f1a2d40dd9221351e983ef2dfbc99f765dc803073a22322819b9626c1633fd6b78b2f334d5e0d60a21f31811cd7366fb3706eceef90561ee115a5194a
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .idea
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- ruby '2.2.3'
3
+ ruby '2.3.0'
4
4
 
5
5
  gemspec
@@ -2,18 +2,18 @@ module RestfulResource
2
2
  class Base < OpenObject
3
3
  extend RestfulResource::Associations
4
4
 
5
- def self.configure(base_url: nil, username: nil, password: nil, logger: NullLogger.new)
6
- @base_url = URI.parse(base_url)
7
-
8
- RestClient.log = logger
9
-
10
- auth = nil
5
+ def self.configure(base_url: nil,
6
+ username: nil,
7
+ password: nil,
8
+ logger: nil,
9
+ cache_store: nil)
11
10
 
12
- if (username.present? && password.present?)
13
- auth = RestfulResource::Authorization.http_authorization(username, password)
14
- end
11
+ @base_url = URI.parse(base_url)
15
12
 
16
- @http = RestfulResource::HttpClient.new(authorization: auth)
13
+ @http = RestfulResource::HttpClient.new(username: username,
14
+ password: password,
15
+ logger: logger,
16
+ cache_store: cache_store)
17
17
  end
18
18
 
19
19
  def self.resource_path(url)
@@ -1,43 +1,89 @@
1
1
  module RestfulResource
2
2
  class HttpClient
3
- class UnprocessableEntity < RuntimeError
3
+ class UnprocessableEntity < StandardError
4
4
  attr_reader :response
5
5
 
6
6
  def initialize(response)
7
- @response = Response.new(body: response.body, headers: response.headers, status: response.code)
7
+ @response = Response.new(body: response[:body], headers: response[:headers], status: response[:status])
8
8
  end
9
9
  end
10
10
 
11
- def initialize(authorization: nil)
12
- @authorization = authorization
11
+ class ResourceNotFound < StandardError
12
+ def message
13
+ "404 Resource Not Found"
14
+ end
15
+ end
16
+
17
+ class OtherHttpError < StandardError
18
+ attr_reader :response
19
+
20
+ def initialize(response)
21
+ puts response
22
+ @response = Response.new(body: response[:body], headers: response[:headers], status: response[:status])
23
+ end
24
+
25
+ def message
26
+ "Http Error - Status code: #{response.status}"
27
+ end
28
+ end
29
+
30
+ def initialize(username: nil, password: nil, logger: nil, cache_store: nil)
31
+ @client = Faraday.new do |b|
32
+ b.request :url_encoded
33
+ b.response :raise_error
34
+
35
+ if logger
36
+ b.response :logger, logger
37
+ end
38
+
39
+ if cache_store
40
+ b.user :http_cache, store: cache_store
41
+ end
42
+
43
+ if username.present? && password.present?
44
+ b.basic_auth username, password
45
+ end
46
+
47
+ b.adapter :net_http
48
+ end
13
49
  end
14
50
 
15
51
  def get(url)
16
- response = RestClient.get(url, :accept => :json, authorization: @authorization)
17
- Response.new(body: response.body, headers: response.headers, status: response.code)
52
+ http_request(method: :get, url: url)
18
53
  end
19
54
 
20
55
  def delete(url)
21
- response = RestClient.delete(url, :accept => :json, authorization: @authorization)
22
- Response.new(body: response.body, headers: response.headers, status: response.code)
56
+ http_request(method: :delete, url: url)
23
57
  end
24
58
 
25
59
  def put(url, data: {})
26
- begin
27
- response = RestClient.put(url, data, :accept => :json, authorization: @authorization)
28
- rescue RestClient::UnprocessableEntity => e
29
- raise HttpClient::UnprocessableEntity.new(e.response)
30
- end
31
- Response.new(body: response.body, headers: response.headers, status: response.code)
60
+ http_request(method: :put, url: url, data: data)
32
61
  end
33
62
 
34
63
  def post(url, data: {})
35
- begin
36
- response = RestClient.post(url, data, :accept => :json, authorization: @authorization)
37
- rescue RestClient::UnprocessableEntity => e
38
- raise HttpClient::UnprocessableEntity.new(e.response)
64
+ http_request(method: :post, url: url, data: data)
65
+ end
66
+
67
+ private
68
+ def http_request(method: , url: , data: nil, accept: 'application/json')
69
+ response = @client.send(method) do |req|
70
+ req.body = data unless data.nil?
71
+ req.url url
72
+
73
+ if accept
74
+ req.headers['Accept'] = accept
75
+ end
76
+ end
77
+ Response.new(body: response.body, headers: response.headers, status: response.status)
78
+ rescue Faraday::Error::ResourceNotFound
79
+ raise HttpClient::ResourceNotFound
80
+ rescue Faraday::Error::ClientError => e
81
+ response = e.response
82
+ if response[:status] == 422
83
+ raise HttpClient::UnprocessableEntity.new(response)
84
+ else
85
+ raise HttpClient::OtherHttpError.new(response)
39
86
  end
40
- Response.new(body: response.body, headers: response.headers, status: response.code)
41
87
  end
42
88
  end
43
89
  end
@@ -1,3 +1,3 @@
1
1
  module RestfulResource
2
- VERSION = "0.8.34"
2
+ VERSION = '0.9.0'
3
3
  end
@@ -1,19 +1,19 @@
1
1
  require 'rack'
2
2
  require 'uri'
3
3
  require 'link_header'
4
- require 'restclient'
4
+ require 'faraday'
5
5
  require 'active_support'
6
6
  require 'active_support/all'
7
- require_relative "restful_resource/version"
7
+ require 'resolv-replace.rb'
8
+ require_relative 'restful_resource/version'
8
9
  require_relative 'restful_resource/null_logger'
9
- require_relative "restful_resource/paginated_array"
10
- require_relative "restful_resource/parameter_missing_error"
11
- require_relative "restful_resource/resource_id_missing_error"
12
- require_relative "restful_resource/open_object"
10
+ require_relative 'restful_resource/paginated_array'
11
+ require_relative 'restful_resource/parameter_missing_error'
12
+ require_relative 'restful_resource/resource_id_missing_error'
13
+ require_relative 'restful_resource/open_object'
13
14
  require_relative 'restful_resource/response'
14
- require_relative 'restful_resource/authorization'
15
15
  require_relative 'restful_resource/http_client'
16
- require_relative "restful_resource/associations"
16
+ require_relative 'restful_resource/associations'
17
17
  require_relative 'restful_resource/rails_validations'
18
- require_relative "restful_resource/base"
19
- require_relative "restful_resource/old_base"
18
+ require_relative 'restful_resource/base'
19
+
@@ -22,7 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec", "~> 3.1"
24
24
 
25
- spec.add_dependency "rest-client"
25
+ spec.add_dependency "faraday"
26
+ spec.add_dependency "faraday-http-cache"
26
27
  spec.add_dependency "link_header"
27
28
  spec.add_dependency "activesupport"
28
29
  spec.add_dependency "rack"
@@ -28,22 +28,6 @@ describe RestfulResource::Base, 'authorization' do
28
28
  expect(FirstTest.send(:http)).not_to equal(SecondTest.send(:http))
29
29
  end
30
30
 
31
- it 'should have http auth on SecondClient when initialised first' do
32
- SecondTest.send(:http)
33
- FirstTest.send(:http)
34
-
35
- authorization = SecondTest.send(:http).instance_variable_get :@authorization
36
- expect(authorization).to be_truthy
37
- end
38
-
39
- it 'should have http auth on SecondTest when initialised second' do
40
- FirstTest.send(:http)
41
- SecondTest.send(:http)
42
-
43
- authorization = SecondTest.send(:http).instance_variable_get :@authorization
44
- expect(authorization).to be_truthy
45
- end
46
-
47
31
  it 'should have same http auth on superclass' do
48
32
  expect(SecondTest.send(:http)).to equal(SecondClient.send(:http))
49
33
  end
@@ -223,34 +223,6 @@ describe RestfulResource::Base do
223
223
  end
224
224
  end
225
225
 
226
- describe 'logger' do
227
- before do
228
- RestfulResource::Base.configure(base_url: 'http://api.carwow.co.uk/')
229
- end
230
-
231
- context 'when no logger is passed' do
232
- it 'defaults to NullLogger' do
233
- expect(RestClient.log).to be_instance_of(RestfulResource::NullLogger)
234
- end
235
- end
236
-
237
- context 'when a logger is passed' do
238
- before do
239
- RestfulResource::Base.configure(base_url: 'http://api.carwow.co.uk/', logger: my_logger)
240
- end
241
-
242
- after do
243
- RestClient.log = RestfulResource::NullLogger.new
244
- end
245
-
246
- let(:my_logger) { double('logger') }
247
-
248
- it 'uses that logger' do
249
- expect(RestClient.log).to eq(my_logger)
250
- end
251
- end
252
- end
253
-
254
226
  def response_with_page_information
255
227
  RestfulResource::Response.new(body: [{ id: 1, name: 'Golf'}, { id: 2, name: 'Polo' }].to_json,
256
228
  headers: { links: '<http://api.carwow.co.uk/makes/Volkswagen/models.json?page=6>;rel="last",<http://api.carwow.co.uk/makes/Volkswagen/models.json?page=2>;rel="next"'})
@@ -34,12 +34,18 @@ describe RestfulResource::HttpClient do
34
34
  it 'post should raise error 422' do
35
35
  expect { @http_client.post('http://httpbin.org/status/422', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::UnprocessableEntity)
36
36
  end
37
+
38
+ it 'should raise error on 404' do
39
+ expect { @http_client.get('http://httpbin.org/status/404') }.to raise_error(RestfulResource::HttpClient::ResourceNotFound)
40
+ expect { @http_client.delete('http://httpbin.org/status/404') }.to raise_error(RestfulResource::HttpClient::ResourceNotFound)
41
+ expect { @http_client.put('http://httpbin.org/status/404', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::ResourceNotFound)
42
+ expect { @http_client.post('http://httpbin.org/status/404', data: { name: 'Mad cow' }) }.to raise_error(RestfulResource::HttpClient::ResourceNotFound)
43
+ end
37
44
  end
38
45
 
39
46
  describe 'Authentication' do
40
47
  before :each do
41
- auth = RestfulResource::Authorization.http_authorization('user', 'passwd')
42
- @http_client = RestfulResource::HttpClient.new(authorization: auth)
48
+ @http_client = RestfulResource::HttpClient.new(username: 'user', password: 'passwd')
43
49
  end
44
50
 
45
51
  it 'should execute authenticated get' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.34
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Santoro
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-09 00:00:00.000000000 Z
12
+ date: 2016-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -54,7 +54,21 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '3.1'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rest-client
57
+ name: faraday
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: faraday-http-cache
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
74
  - - ">="
@@ -128,7 +142,6 @@ files:
128
142
  - lib/restful_resource/base.rb
129
143
  - lib/restful_resource/http_client.rb
130
144
  - lib/restful_resource/null_logger.rb
131
- - lib/restful_resource/old_base.rb
132
145
  - lib/restful_resource/open_object.rb
133
146
  - lib/restful_resource/paginated_array.rb
134
147
  - lib/restful_resource/parameter_missing_error.rb
@@ -142,10 +155,8 @@ files:
142
155
  - spec/restful_resource/base_authorization_spec.rb
143
156
  - spec/restful_resource/base_spec.rb
144
157
  - spec/restful_resource/http_client_spec.rb
145
- - spec/restful_resource/old_base_spec.rb
146
158
  - spec/restful_resource/open_object_spec.rb
147
159
  - spec/restful_resource/rails_validations_spec.rb
148
- - spec/restful_resource/rest_client_spec.rb
149
160
  - spec/spec_helper.rb
150
161
  homepage: http://www.github.com/carwow/restful_resource
151
162
  licenses:
@@ -167,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
178
  version: '0'
168
179
  requirements: []
169
180
  rubyforge_project:
170
- rubygems_version: 2.4.5.1
181
+ rubygems_version: 2.5.1
171
182
  signing_key:
172
183
  specification_version: 4
173
184
  summary: A simple activerecord inspired rest resource base class implemented using
@@ -178,8 +189,6 @@ test_files:
178
189
  - spec/restful_resource/base_authorization_spec.rb
179
190
  - spec/restful_resource/base_spec.rb
180
191
  - spec/restful_resource/http_client_spec.rb
181
- - spec/restful_resource/old_base_spec.rb
182
192
  - spec/restful_resource/open_object_spec.rb
183
193
  - spec/restful_resource/rails_validations_spec.rb
184
- - spec/restful_resource/rest_client_spec.rb
185
194
  - spec/spec_helper.rb
@@ -1,172 +0,0 @@
1
- module RestfulResource
2
- class OldBase
3
- def self.url=(url)
4
- @url = url
5
- end
6
-
7
- def self.processed_url_and_params(params={})
8
- url = @url
9
- other_params = params.clone
10
- missing_params = []
11
-
12
- url_params = url.scan(/:([A-Za-z][^\/]*)/).flatten
13
- url_params.each do |key|
14
- value = other_params.delete(key.to_sym)
15
- if value.nil?
16
- missing_params << key
17
- else
18
- url = url.gsub(':'+key.to_s, value.to_s)
19
- end
20
- end
21
-
22
- if missing_params.any?
23
- raise ParameterMissingError.new(missing_params)
24
- end
25
-
26
- [url, other_params]
27
- end
28
-
29
- def self.url(params={})
30
- processed_url_and_params(params).first
31
- end
32
-
33
-
34
- def self.has_one(nested_resource_type)
35
- klass = nested_resource_type.to_s.camelize.safe_constantize
36
- klass = OpenStruct if (klass.nil? || klass.superclass != RestfulResource)
37
-
38
- self.send(:define_method, nested_resource_type) do
39
- nested_resource = @inner_object.send(nested_resource_type)
40
- return nil if nested_resource.nil?
41
- klass.new(@inner_object.send(nested_resource_type))
42
- end
43
- end
44
-
45
- def self.has_many(nested_resource_type)
46
- klass = nested_resource_type.to_s.singularize.camelize.safe_constantize
47
- klass = OpenStruct if (klass.nil? || (klass.superclass != RestfulResource))
48
-
49
- self.send(:define_method, nested_resource_type) do
50
- @inner_object.send(nested_resource_type).map { |obj| klass.new(obj) }
51
- end
52
- end
53
-
54
- def initialize(attributes = {}, hack_for_activeresource = false)
55
- @inner_object = OpenStruct.new(attributes)
56
- end
57
-
58
- def method_missing(method)
59
- if @inner_object.respond_to?(method)
60
- @inner_object.send(method)
61
- else
62
- super(method)
63
- end
64
- end
65
-
66
- def respond_to?(method, include_private = false)
67
- super || @inner_object.respond_to?(method, include_private)
68
- end
69
-
70
- def valid?
71
- errors.nil? || errors.count == 0
72
- end
73
-
74
- def self.find(id, url_params={})
75
- response = RestClient.get("#{url(url_params)}/#{id}", params: {})
76
- self.new(ActiveSupport::JSON.decode(response))
77
- end
78
-
79
- def self.get_one(url_params={})
80
- resource = create_new_resource(url_params)
81
- response = resource.get
82
- self.new(ActiveSupport::JSON.decode(response))
83
- end
84
-
85
- def self.update_attributes(id, attributes)
86
- begin
87
- result = parse(RestClient.put("#{url}/#{id}", attributes))
88
- rescue RestClient::UnprocessableEntity => e
89
- errors = parse(e.response)
90
- result = attributes.merge(errors: errors)
91
- end
92
- self.new(result)
93
- end
94
-
95
- def self.create(attributes)
96
- begin
97
- result = parse(RestClient.post("#{url}", attributes))
98
- rescue RestClient::UnprocessableEntity => e
99
- errors = parse(e.response)
100
- result = attributes.merge(errors: errors)
101
- end
102
- self.new(result)
103
- end
104
-
105
- def self.search(params = {})
106
- response = RestClient.get("#{url}/search", params: params)
107
- paginate_response(response)
108
- end
109
-
110
- def self.all(params = {})
111
- resource = create_new_resource(params)
112
- response = resource.get
113
- paginate_response(response)
114
- end
115
-
116
- def self.get(postfix_url = "", params = {})
117
- response = RestClient.get("#{url}#{postfix_url}", params: params)
118
- paginate_response(response)
119
- end
120
-
121
- def self.put(postfix_url = "", params = {})
122
- response = RestClient.put("#{url}#{postfix_url}", params)
123
- end
124
-
125
- def self.post(postfix_url = "", params = {})
126
- response = RestClient.post("#{url}#{postfix_url}", params)
127
- end
128
-
129
- def self.all_not_paginated
130
- page = 1
131
- results = []
132
- while page
133
- page_data = self.all(page: page);
134
- results += page_data
135
- page = page_data.next_page
136
- end
137
-
138
- results
139
- end
140
-
141
- def self.parse(json)
142
- ActiveSupport::JSON.decode(json)
143
- end
144
-
145
- def to_json(*args)
146
- @inner_object.send(:table).to_json(*args)
147
- end
148
-
149
- def as_json(*)
150
- @inner_object.send(:table).as_json
151
- end
152
-
153
- private
154
- def self.paginate_response(response)
155
- links_header = response.headers[:links]
156
- links = LinkHeader.parse(links_header)
157
-
158
- prev_url = links.find_link(['rel', 'prev']).try(:href)
159
- next_url = links.find_link(['rel', 'next']).try(:href)
160
-
161
- array = ActiveSupport::JSON.decode(response).map { |attributes| self.new(attributes) }
162
- PaginatedArray.new(array, previous_page_url: prev_url, next_page_url: next_url, total_count: response.headers['X-Total-Count'])
163
- end
164
-
165
- def self.create_new_resource(params={})
166
- url, other_params = processed_url_and_params(params)
167
- url += "?#{other_params.to_query}" if not other_params.empty?
168
- resource = RestClient::Resource.new("#{url}")
169
- end
170
-
171
- end
172
- end
@@ -1,119 +0,0 @@
1
- require_relative '../spec_helper'
2
-
3
- describe RestfulResource::OldBase do
4
- context "#find" do
5
- it "should retrieve a resource with a simple url" do
6
- response = { id: 15, name: 'Arsenal' }.to_json
7
- stub_get('http://api.carwow.co.uk/teams/15', response)
8
-
9
- team = Team.find(15)
10
-
11
- expect(team.id).to eq 15
12
- expect(team.name).to eq 'Arsenal'
13
- end
14
-
15
- it "should retrieve a nested resource" do
16
- response = { id: 1, team_id: 15, name: 'David', santoro: 'Santoro' }.to_json
17
- stub_get('http://api.carwow.co.uk/teams/15/players/1', response)
18
-
19
- player = Player.find(1, team_id: 15)
20
-
21
- expect(player.id).to eq 1
22
- expect(player.team_id).to eq 15
23
- expect(player.name).to eq 'David'
24
- end
25
- end
26
-
27
- context "#url" do
28
- it "should return the url set if no extra parameters are necessary" do
29
- Player.url = 'http://api.carwow.co.uk/players'
30
-
31
- expect(Player.url).to eq 'http://api.carwow.co.uk/players'
32
- end
33
-
34
- it "should return the url with the right parameters replaced" do
35
- Player.url = 'http://api.carwow.co.uk/teams/:team_id/players'
36
-
37
- expect(Player.url(team_id: 13)).to eq 'http://api.carwow.co.uk/teams/13/players'
38
- end
39
-
40
- it "should raise a parameter required exception if parameter needed and not provided" do
41
- Player.url = 'http://api.carwow.co.uk/countries/:country_slug/teams/:team_id/players'
42
-
43
- expected_error_message = 'You must pass values for the following parameters: [country_slug, team_id]'
44
- expect { Player.url }.to raise_error(RestfulResource::ParameterMissingError, expected_error_message)
45
- end
46
-
47
- it "should not confuse port number as a parameter" do
48
- Player.url = 'http://api.carwow.co.uk:7000/teams/:team_id/players'
49
-
50
- expect { Player.url(team_id: 13) }.not_to raise_error
51
- end
52
- end
53
-
54
- context "#all" do
55
- it "should provide a paginated result if response contains rest pagination headers" do
56
- response = response_with_page_information()
57
- stub_new_resource('http://api.carwow.co.uk/teams', response)
58
-
59
- teams = Team.all
60
-
61
- expect(teams.previous_page).to be_nil
62
- expect(teams.next_page).to eq 2
63
- expect(teams.first.name).to eq 'Arsenal'
64
- expect(teams.last.name).to eq 'Chelsea'
65
- end
66
- end
67
-
68
- it "should act as an openstruct" do
69
- example = Player.new(name: 'David', surname: 'Santoro')
70
-
71
- expect(example.name).to eq 'David'
72
- expect(example.surname).to eq 'Santoro'
73
- end
74
-
75
- it "should use some params for the url and other for the query string" do
76
- stub_new_resource('http://api.carwow.co.uk/teams/15/players?name_like=Ars', response_with_page_information)
77
-
78
- players = Player.all(team_id: 15, name_like: 'Ars')
79
- end
80
-
81
- it "should raise an error when accessing a field that doesn't exist" do
82
- player = Player.new({name: 'David', surname: 'Santoro'})
83
-
84
- expect { player.age }.to raise_error(NoMethodError)
85
- end
86
-
87
- private
88
- def stub_new_resource(url, fake_response)
89
- resource = instance_double('RestClient::Resource', get: fake_response)
90
- allow(RestClient::Resource).to receive(:new).with(url).and_return resource
91
- end
92
-
93
- def stub_get(url, fake_response, params = {})
94
- expect(RestClient).to receive(:get).
95
- with(url, params: params).
96
- and_return(fake_response)
97
- end
98
-
99
- def response_with_page_information
100
- response = [{ id: 1, name: 'Arsenal'}, { id: 2, name: 'Chelsea' }].to_json
101
- allow(response).to receive(:headers) {
102
- {:links => '<http://api.carwow.co.uk/teams.json?page=6>;rel="last",<http://api.carwow.co.uk/teams.json?page=2>;rel="next"'}
103
- }
104
- response
105
- end
106
- end
107
-
108
- class Team < RestfulResource::OldBase
109
- self.url = "http://api.carwow.co.uk/teams"
110
- end
111
-
112
- class Player < RestfulResource::OldBase
113
- has_one :team
114
-
115
- self.url = "http://api.carwow.co.uk/teams/:team_id/players"
116
- end
117
-
118
-
119
-
@@ -1,15 +0,0 @@
1
- require_relative '../spec_helper'
2
-
3
- describe RestfulResource::Base do
4
- context "#get" do
5
- it "should throw an exception with wrong url" do
6
- expect{RestClient.get("http://www.example.com/djksafjadl", params: {})}.to raise_error
7
- end
8
-
9
- it "should throw an exception with wrong url" do
10
- r = RestClient::Resource.new("http://www.example.com/djksafjadl")
11
- expect{r.get}.to raise_error
12
- end
13
- end
14
-
15
- end