plaza 0.1.0 → 0.1.1

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: 7b1ce8fd7612e0e70f87446757ae861a500800d4
4
- data.tar.gz: 509e260bbdf978f2c5624a19c5419ae59e9c542d
3
+ metadata.gz: b79e43959831ba5643a81a677979d6ea029b45a9
4
+ data.tar.gz: ddfeed268347f481f3ddf58ad2a6956b4c96b786
5
5
  SHA512:
6
- metadata.gz: 4915af07edad5d501e7b4aac700907d109838ff991a44a7d366c2ad45250b8436f570369caf4f3efb5d0fdf9cbc2ab3fc3b6dc61b611906177d1f0eac77ff345
7
- data.tar.gz: 69efd7d83468172a51310e3f0ee3220bcf259dfaba2c51d63105fdeb231e08c0104785e553e6093f48d0d3451f091504a3205f7beb6f4aab8699855b42d3f87f
6
+ metadata.gz: e1cc6173c0ba4b81dff74f0eac535cb6cad4399091f7631c6d7f50111005c6c962932efce29f6be96091d266cfbfce0bd0c90ad353cd0ed1b5b8f53cef00bb28
7
+ data.tar.gz: 3df71c1a00544708b80f80ff68f81f4f8a1aa3567b6e4881336b268c787c77733118d2b5f4c2a5398fe2896d900154f0ac833ce3038ec8cbef0f3de53e0291dd
data/README.md CHANGED
@@ -116,7 +116,7 @@ Create models: `my_thing = Thing.create(:name => 'Bob')`. This results in an POS
116
116
  Find existing models: `my_thing = Thing.find(10)`. This results in a GET API call like `GET
117
117
  http://example.com/things/10`
118
118
 
119
- Pass query string to API: `Thing.were(:name = 'bob')`. This results in an api call like `GET
119
+ Pass query string to API: `Thing.where(:name = 'bob')`. This results in an api call like `GET
120
120
  http://example.com/rest/things?name=bob`. Returns an array.
121
121
 
122
122
  Update model attributes: `my_thing.name = 'Kevin'`
@@ -147,6 +147,14 @@ fetch the related rest model.
147
147
  Want to know more, go checkout the code, the guts of it are located at
148
148
  `lib/plaza/models/restful_model.rb`
149
149
 
150
+ ## Questions & Answers
151
+
152
+ **Q**. Why not ActiveResource?
153
+
154
+ **A**. ActiveResource is dependent on ActiveModel and ActiveSupport, both of which are tied to a
155
+ specific version of rails. We didn't want all the dependency. Building on top of Faraday and Virtus
156
+ offered greater flexibility, more awesome, and less dependencies.
157
+
150
158
  ## Contributing
151
159
 
152
160
  1. Fork it ( https://github.com/[my-github-username]/plaza/fork )
@@ -48,7 +48,7 @@ module Plaza
48
48
  end
49
49
 
50
50
  def plural_name
51
- singular_name + 's'
51
+ Inflector.pluralize(singular_name)
52
52
  end
53
53
 
54
54
  def singular_name
@@ -144,7 +144,8 @@ module Plaza
144
144
  if self.respond_to?(method_name + '_id')
145
145
  obj_id = self.send(method_name + '_id')
146
146
  class_name = Plaza::Inflector.classify(method_name)
147
- return Plaza.const_get(class_name).find(obj_id)
147
+ klass = (self.class.name.split('::')[0..-2] + [class_name]).reduce(Module, :const_get)
148
+ return klass.find(obj_id)
148
149
  else
149
150
  raise NoMethodError.new "undefined method '#{method_name}' for #{self.class}"
150
151
  end
@@ -1,3 +1,3 @@
1
1
  module Plaza
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -16,7 +16,6 @@ describe Plaza::Connection do
16
16
  'Accept'=>'application/json',
17
17
  'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
18
18
  'Greetings'=>'HelloGoodbye',
19
- 'User-Agent'=>'Faraday v0.9.0',
20
19
  'X-User-Id'=>''}
21
20
  ).to_return(:status => 200, :body => "", :headers => {})
22
21
  connection = Plaza::Connection.for(:connection_spec)
@@ -19,7 +19,7 @@ module Foobar
19
19
  plaza_config :foobar
20
20
 
21
21
  has_many 'Foobar::Amajing'
22
- attribute :amajig_id, Integer
22
+ attribute :amajing_id, Integer
23
23
  end
24
24
 
25
25
  class Amajing
@@ -75,7 +75,7 @@ describe Thing do
75
75
  {
76
76
  'amabob' => {
77
77
  'id' => 3,
78
- 'amajig_id' => 2
78
+ 'amajing_id' => 2
79
79
  }
80
80
  }
81
81
  }
@@ -250,6 +250,12 @@ describe Thing do
250
250
  stub_request(:get, 'http://example.com/rest/amajigs/2.json').to_return(body:amajig_hash.to_json)
251
251
  thing.amajig.name.should == 'Jigger'
252
252
  end
253
+
254
+ it 'should get reltated object in module' do
255
+ bob = Foobar::Amabob.new(amabob_hash['amabob'])
256
+ stub_request(:get, 'http://www.example.com/rest/amajings/2.json').to_return(body:amabobs_hash.to_json)
257
+ bob.amajing.class.name.should == 'Foobar::Amajing'
258
+ end
253
259
  end
254
260
 
255
261
  describe 'has_many relationships' do
@@ -27,9 +27,7 @@ describe Request do
27
27
  %i(get post put delete).each do |method|
28
28
  it "##{method} should now add X-User-Id to headers" do
29
29
  stub_request(method, "http://example.com/foobar").
30
- with(:headers => {
31
- 'Accept'=>'application/json',
32
- 'User-Agent'=>'Faraday v0.9.0'}).
30
+ with(:headers => {'Accept'=>'application/json'}).
33
31
  to_return(:status => 200, :body => "", :headers => {})
34
32
 
35
33
  Request.new.send(method, '/foobar')
@@ -38,7 +36,19 @@ describe Request do
38
36
 
39
37
  end
40
38
 
41
- context "when trucker service is down" do
39
+ context "when service is down" do
40
+ let(:request){
41
+ exception = Faraday::Adapter::Test::Stubs.new do |stub|
42
+ %i(get put post delete).each do |method|
43
+ stub.send(method, '/failblog') {raise Faraday::Error::ConnectionFailed.new('Connection Failed')}
44
+ end
45
+ end
46
+ request = Request.new do |conn|
47
+ conn.adapter :test, exception
48
+ end
49
+ request
50
+ }
51
+
42
52
  %i(get put post delete).each do |method|
43
53
  describe "#{method}" do
44
54
  before do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plaza
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - VMC Engineering
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler