api_client 0.5.5 → 0.5.6

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: e75ec00cdefbe47d4ee0caa12b10c34ab5cba4b0
4
- data.tar.gz: afbeaf9ee0f28b3329a6e6fa2f7f0e2be2cce2b0
3
+ metadata.gz: c2dce33109687e5c643cd183ef8c656d56af40d4
4
+ data.tar.gz: 97d0acdf47edc3ed2a03a00d3085c9b897687da3
5
5
  SHA512:
6
- metadata.gz: 52f9614349cba9dd65884cbf39d9d82044da778025da0a96efbe6b4ebf8fc58b0491e76fa571117cc4434de5ce0148c5acb9b71eec5fd30c0fed2607be75e03b
7
- data.tar.gz: 7d8fd7a2deab23da2844c5b9bcafa81f0e5af203c0a5e5ef8ff1788ca611ccadb18ca099ea3b133fe50efb5866801d8b797f4908fc1bf397f32618f5549274de
6
+ metadata.gz: db347b7180f5ec2296438e1be6ae95ee51fff531fd1d3d703948f5880af427ac07e89e682b6519b52f17d7ee9ce39e47a3e89fa50d57cf7b314c2bd05b5b64db
7
+ data.tar.gz: eb9d837428478b41fefba7725c30bfd4093fcfe98daae2a3f19bd89673429989051dab0e6acc14276acde7bbec87823dea53663223bcfb13535ac316c87b56c0
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ # 0.5.6
2
+
3
+ * add strict_attr_reader option to raise `KeyError` on missing key access
@@ -56,7 +56,17 @@ module ApiClient
56
56
  "#<#{self.class} #{attributes.join(', ')}>"
57
57
  end
58
58
 
59
+ private
60
+ def method_missing(method_name, *args, &blk)
61
+ if respond_to?(method_name)
62
+ super
63
+ else
64
+ if respond_to?(:strict_attr_reader?) && self.strict_attr_reader?
65
+ fetch(method_name)
66
+ else
67
+ super
68
+ end
69
+ end
70
+ end
59
71
  end
60
-
61
72
  end
62
-
@@ -1,3 +1,3 @@
1
1
  module ApiClient
2
- VERSION = "0.5.5"
2
+ VERSION = "0.5.6"
3
3
  end
@@ -10,6 +10,18 @@ describe ApiClient::Base do
10
10
  subject.should respond_to("id")
11
11
  end
12
12
 
13
+ class StrictApi < ApiClient::Base
14
+ def accessor_of_x
15
+ self.x
16
+ end
17
+
18
+ def strict_attr_reader?
19
+ true
20
+ end
21
+ end
22
+
23
+ class StrictDescendant < StrictApi
24
+ end
13
25
 
14
26
  describe "#inspect" do
15
27
 
@@ -35,4 +47,36 @@ describe ApiClient::Base do
35
47
 
36
48
  end
37
49
 
50
+ describe "strict_read" do
51
+ it "fails if the key is missing and strict_read is set" do
52
+ api = StrictApi.new
53
+ lambda { api.missing }.should raise_error(KeyError)
54
+ end
55
+
56
+ it "doesn't fail if strict_read is not set" do
57
+ api = ApiClient::Base.new
58
+ api.missing
59
+ end
60
+
61
+ it "doesn't fail if the key was set after object was created" do
62
+ api = StrictApi.new
63
+ api.not_missing = 1
64
+ api.not_missing.should == 1
65
+ end
66
+
67
+ it "allows to call methods" do
68
+ api = StrictApi.new(:x => 14)
69
+ api.accessor_of_x.should == 14
70
+ end
71
+
72
+ it "calling method which asks for missing attribute fails" do
73
+ api = StrictApi.new
74
+ lambda { api.accessor_of_x }.should raise_error(KeyError)
75
+ end
76
+
77
+ it "passes strict api configuration to subclasses" do
78
+ api = StrictDescendant.new
79
+ lambda { api.missing }.should raise_error(KeyError)
80
+ end
81
+ end
38
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Bunsch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-05 00:00:00.000000000 Z
11
+ date: 2014-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yajl-ruby
@@ -75,6 +75,7 @@ extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
77
  - .rspec
78
+ - CHANGELOG.md
78
79
  - Gemfile
79
80
  - LICENSE
80
81
  - README.md