validates_formatting_of 0.7.0 → 0.7.1

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.
@@ -1,4 +1,4 @@
1
- script: SKIP_SIMPLECOV=true bundle exec rspec spec
1
+ script: bundle exec rspec spec
2
2
  rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
@@ -55,14 +55,36 @@ You can still add the following options when using `validates_formatting_of`:
55
55
  * `:unless`
56
56
  * You can also specify the `:message` option to use a custom validation message.
57
57
 
58
- # Available Formatting Validations
58
+ # Share your Validations
59
59
 
60
- `validates_formatting_of` has support for the following validations:
60
+ Say, for example, you have identical plain-old regex validations for different columns or even on different models entirely. You can easily alleviate this problem by simply adding the validation(s) in an initializer file.
61
+
62
+ While very unrealistic, these examples should serve their purpose in demonstrating this ability.
63
+
64
+ ```ruby
65
+ # config/initializers/validates_foramatting_of.rb
66
+ ValidatesFormattingOf::Method.add :loweralpha, /[a-z]/, "must be lowercase and no spaces"
67
+ ValidatesFormattingOf::Method.add :upperalpha, /[A-Z]/, "must be uppercase and no spaces"
68
+ ValidatesFormattingOf::Method.add :weak_password, /[a-zA-Z0-9]{8,}/, "must contain only letters and numbers and be at least 8 characters long".
69
+ ```
70
+
71
+ Keep in mind, since this gem is only ActiveModel-dependent, you should be able to do this in whatever non-Rails application classes you have that include `ActiveModel::Validations` in some way (and that extend the `ValidatesFormattingOf::ModelAdditons` module).
72
+
73
+ # Built-in Validations
74
+
75
+ `validates_formatting_of` has the following build-in validations:
61
76
 
62
77
  ### Email
63
78
 
64
79
  ```ruby
65
- class User < ActiveRecord::Base
80
+ # non ActiveRecord::Base example. This is the least you need to get validations running.
81
+ class User
82
+
83
+ include ActiveModel::Validations
84
+ extend ValidatesFormattingOf::ModelAdditions
85
+
86
+ attr_accessor :email
87
+
66
88
  validates_formatting_of :email, :using => :email
67
89
  end
68
90
  ```
@@ -19,9 +19,6 @@ module ValidatesFormattingOf
19
19
  def find(attribute, opts = {})
20
20
  method = opts.fetch(:using, attribute)
21
21
  raise MissingValidation.new(method) if missing? method
22
- if method.to_sym == :ip_address
23
- raise ArgumentError, "[REMOVED] The :ip_address validation for `validates_formatting_of` has been removed since version 0.7.0. Please update your model validations to use :ip_address_v4."
24
- end
25
22
  @validations[method.to_sym]
26
23
  end
27
24
 
@@ -1,3 +1,3 @@
1
1
  module ValidatesFormattingOf
2
- VERSION = "0.7.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  require 'simplecov'
2
2
 
3
- unless ENV["SKIP_SIMPLECOV"] == 'true'
3
+ if ENV["RUN_SIMPLECOV"] == 'true'
4
4
  SimpleCov.start do
5
5
  load_adapter 'test_frameworks'
6
6
  end
@@ -10,9 +10,8 @@ require 'validates_formatting_of'
10
10
  require 'active_model'
11
11
 
12
12
  class TestActiveRecord
13
- include ActiveModel::Validations
14
- include ActiveModel::Conversion
15
13
 
14
+ include ActiveModel::Validations
16
15
  extend ValidatesFormattingOf::ModelAdditions
17
16
 
18
17
  def initialize(attributes = {})
@@ -4,28 +4,33 @@ module ValidatesFormattingOf
4
4
 
5
5
  class TestAdding
6
6
  extend ValidationAddition
7
+ def self.clear!
8
+ @validations = nil
9
+ end
7
10
  end
8
11
 
9
12
  describe ValidationAddition do
10
13
  before do
14
+ TestAdding.clear!
11
15
  TestAdding.add :email, /email/i
12
16
  end
13
- after do
14
- TestAdding.instance_variable_set("@validations", nil)
15
- end
16
17
  it "should be able to add new validations" do
17
18
  TestAdding.add :another, /another/i
18
19
  TestAdding.validations.count.should == 2
19
20
  TestAdding.validations[:email].should be_instance_of Validation
20
21
  TestAdding.validations[:another].should be_instance_of Validation
21
22
  end
22
- it "should be able to smartly determine the method to use" do
23
- validation = TestAdding.find(:email)
24
- validation.name.should == :email
25
- validation.regex.should == /email/i
26
- validation = TestAdding.find(:non_existent_validation, :using => :email)
27
- validation.name.should == :email
28
- validation.regex.should == /email/i
23
+ describe "find" do
24
+ context "implicit validation method" do
25
+ subject { TestAdding.find(:email) }
26
+ its(:name) { should == :email }
27
+ its(:regex) { should == /email/i }
28
+ end
29
+ context "explicit validation method" do
30
+ subject { TestAdding.find(:non_existent_validation, :using => :email) }
31
+ its(:name) { should == :email }
32
+ its(:regex) { should == /email/i }
33
+ end
29
34
  end
30
35
  it "should raise an error if the method does not exist" do
31
36
  expect { TestAdding.find(:fake) }.to raise_error MissingValidation
@@ -5,19 +5,14 @@ module ValidatesFormattingOf
5
5
  describe Validation do
6
6
  context "valid validation creation" do
7
7
  let(:validation) { Validation.new(:name, /something/i, "is an invalid value") }
8
- it "should receive the right parameters" do
9
- validation.name.should == :name
10
- validation.regex.should == %r{something}i
11
- validation.message.should == 'is an invalid value'
12
- end
13
- it "should print properly" do
14
- validation.to_s.should == "<Validation::name>"
15
- end
16
- it "should be inspected properly" do
17
- validation.inspect.should =~ /Validation/
18
- validation.inspect.should =~ /\/something\/i/
19
- validation.inspect.should =~ /\:name/
20
- end
8
+ subject { validation }
9
+ its(:name) { should == :name }
10
+ its(:regex) { should == %r{something}i }
11
+ its(:message) { should == 'is an invalid value' }
12
+ its(:to_s) { should == "<Validation::name>" }
13
+ its(:inspect) { should =~ /Validation/ }
14
+ its(:inspect) { should =~ /\/something\/i/ }
15
+ its(:inspect) { should =~ /\:name/ }
21
16
  end
22
17
  context "invalid validation creation" do
23
18
  it "should raise an error if the specified regex is not a Regexp objct" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_formatting_of
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-20 00:00:00.000000000 Z
12
+ date: 2012-08-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel
@@ -132,3 +132,4 @@ test_files:
132
132
  - spec/validates_formatting_of/model_additions_spec.rb
133
133
  - spec/validates_formatting_of/validation_addition_spec.rb
134
134
  - spec/validates_formatting_of/validation_spec.rb
135
+ has_rdoc: