api-client 1.5.2 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.5.3
4
+
5
+ * Improving #unique_messages method to work with #to_sentence from ActiveSupport.
6
+
7
+ ## v1.5.2
8
+
9
+ * Fixed return from #add_errors.
10
+
3
11
  ## v1.5.1
4
12
 
5
13
  * Fixed Error Setter for erros from an external API.
6
14
 
7
-
8
15
  ## v1.5.0
9
16
 
10
17
  * Handler of arrays as response.
@@ -54,7 +54,8 @@ module ApiClient
54
54
  #
55
55
  # @param [Hash] errors of the object..
56
56
  def errors=(errors = {})
57
- @errors = Errors.new(self).add_errors(Hash[errors.map{|(key,value)| [key.to_sym,value]}])
57
+ @errors = Errors.new(self)
58
+ @errors.add_errors(Hash[errors.map{|(key,value)| [key.to_sym,value]}])
58
59
  end
59
60
 
60
61
  protected
@@ -11,15 +11,34 @@ class ApiClient::Errors < ActiveModel::Errors
11
11
  end
12
12
  end
13
13
 
14
- # Create a hash of attributes with unique validation error messages.
14
+ # Returns a unique message for each array of error messages in a hash.
15
15
  #
16
- # Example:
17
- # user.errors.unique_messages #=> { :name => [ can't be empty and is invalid ]}
16
+ # class Person
17
+ # validates_presence_of :name, :address, :email
18
+ # validates_length_of :name, in: 5..30
19
+ # end
18
20
  #
19
- # @return [Hash] The hash of attributes with a unique error message.
21
+ # person = Person.create(address: '123 First St.')
22
+ # person.errors.unique_messages
23
+ # # => { :name => "is too short (minimum is 5 characters) and can't be blank", :address => nil, :email => "can't be blank" }
20
24
  def unique_messages
21
25
  errors = {}
22
- to_hash.each do |attribute, messages| errors[attribute] = messages.join(" and ") end
26
+ map { |attribute, messages| errors[attribute] = unique_message(attribute) }
23
27
  errors
24
28
  end
29
+
30
+ # Returns a unique message for a given attribute.
31
+ #
32
+ # class Person
33
+ # validates_presence_of :name, :address, :email
34
+ # validates_length_of :name, in: 5..30
35
+ # end
36
+ #
37
+ # person = Person.create(address: '123 First St.')
38
+ # person.errors.unique_message(:name) # => "is too short (minimum is 5 characters) and can't be blank"
39
+ # person.errors.unique_message(:address) # => nil
40
+ def unique_message(attribute)
41
+ return '' if messages[attribute].blank?
42
+ messages[attribute].to_sentence
43
+ end
25
44
  end
@@ -1,5 +1,5 @@
1
1
  # High Level Namespace of the library ApiClient.
2
2
  module ApiClient
3
3
  # Version of the library.
4
- VERSION = "1.5.2"
4
+ VERSION = "1.5.3"
5
5
  end
@@ -50,7 +50,7 @@ describe ApiClient::Base do
50
50
  end
51
51
 
52
52
  it "should return the errors" do
53
- @user.errors.should == {:a => :bc}
53
+ @user.errors.messages.should == {:a => :bc}
54
54
  end
55
55
  end
56
56
 
@@ -71,7 +71,7 @@ describe ApiClient::Base do
71
71
  end
72
72
 
73
73
  it "should set @errors with symbolic keys" do
74
- @user.errors.should == { :a => "message", :b => "message" }
74
+ @user.errors.messages.should == { :a => "message", :b => "message" }
75
75
  end
76
76
  end
77
- end
77
+ end
@@ -21,4 +21,15 @@ describe ApiClient::Errors do
21
21
  @user.errors.unique_messages.should == { :a => "can't be blank and is not included in the list" }
22
22
  end
23
23
  end
24
+
25
+ describe "#unique_message" do
26
+ before :each do
27
+ @user = User.new
28
+ @user.valid?
29
+ end
30
+
31
+ it "should return a unique message for the given attribute" do
32
+ @user.errors.unique_message(:a).should == "can't be blank and is not included in the list"
33
+ end
34
+ end
24
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -160,7 +160,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
160
  version: '0'
161
161
  segments:
162
162
  - 0
163
- hash: -575002660403185230
163
+ hash: 3311950444943388535
164
164
  required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  none: false
166
166
  requirements:
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  version: '0'
170
170
  segments:
171
171
  - 0
172
- hash: -575002660403185230
172
+ hash: 3311950444943388535
173
173
  requirements: []
174
174
  rubyforge_project:
175
175
  rubygems_version: 1.8.24