formeze 2.1.0 → 2.1.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,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'formeze'
3
- s.version = '2.1.0'
3
+ s.version = '2.1.1'
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ['Tim Craft']
6
6
  s.email = ['mail@timcraft.com']
@@ -142,8 +142,16 @@ module Formeze
142
142
  @options.has_key?(:when) ? form.instance_eval(&@options[:when]) : true
143
143
  end
144
144
 
145
+ def field_value?(form)
146
+ form.send(@field.name) =~ /\S/
147
+ end
148
+
149
+ def field_errors?(form)
150
+ form.errors_on?(@field.name)
151
+ end
152
+
145
153
  def validate(form)
146
- if validates?(form) && !form.errors_on?(@field.name)
154
+ if validates?(form) && field_value?(form) && !field_errors?(form)
147
155
  return_value = if @block.arity == 1
148
156
  @block.call(form.send(@field.name))
149
157
  else
@@ -665,6 +665,39 @@ describe 'FormWithCustomMinimumSpendValidation after parsing invalid input' do
665
665
  end
666
666
  end
667
667
 
668
+ class FormWithOptionalFieldAndCustomValidation < Formeze::Form
669
+ field :website, :required => false
670
+
671
+ validates :website do
672
+ website =~ /\./ && website !~ /\s/
673
+ end
674
+ end
675
+
676
+ describe 'FormWithOptionalFieldAndCustomValidation after parsing blank input' do
677
+ before do
678
+ @form = FormWithOptionalFieldAndCustomValidation.new
679
+ @form.parse('website=')
680
+ end
681
+
682
+ describe 'valid query method' do
683
+ it 'returns true' do
684
+ @form.valid?.must_equal(true)
685
+ end
686
+ end
687
+
688
+ describe 'errors method' do
689
+ it 'returns an empty array' do
690
+ @form.errors.must_be_empty
691
+ end
692
+ end
693
+
694
+ describe 'errors_on query method' do
695
+ it 'returns false when given the field name' do
696
+ @form.errors_on?(:website).must_equal(false)
697
+ end
698
+ end
699
+ end
700
+
668
701
  describe 'FormWithField on Rails' do
669
702
  before do
670
703
  @form = FormWithField.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formeze
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.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: 2013-08-27 00:00:00.000000000 Z
12
+ date: 2013-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake