client_side_validations 3.0.5 → 3.1.0

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.
Files changed (39) hide show
  1. data/client_side_validations.gemspec +3 -5
  2. data/lib/client_side_validations/action_view/form_builder.rb +1 -1
  3. data/lib/client_side_validations/action_view/form_helper.rb +1 -1
  4. data/lib/client_side_validations/action_view.rb +4 -3
  5. data/lib/client_side_validations/active_model.rb +1 -2
  6. data/lib/client_side_validations/engine.rb +6 -0
  7. data/lib/client_side_validations/files.rb +8 -0
  8. data/lib/client_side_validations/formtastic.rb +3 -3
  9. data/lib/client_side_validations/middleware.rb +3 -7
  10. data/lib/client_side_validations/version.rb +1 -1
  11. data/lib/client_side_validations.rb +8 -5
  12. data/lib/generators/client_side_validations/copy_asset_generator.rb +23 -0
  13. data/lib/generators/client_side_validations/install_generator.rb +18 -6
  14. data/lib/generators/templates/client_side_validations/README.rails.3.0 +6 -0
  15. data/lib/generators/templates/client_side_validations/README.rails.3.1 +7 -0
  16. data/lib/generators/templates/{client_side_validations.rb → client_side_validations/initializer.rb} +1 -1
  17. data/test/action_view/cases/helper.rb +29 -13
  18. data/test/action_view/cases/test_helpers.rb +1 -1
  19. data/test/action_view/cases/test_legacy_helpers.rb +1 -1
  20. data/test/active_record/cases/test_middleware.rb +18 -18
  21. data/test/base_helper.rb +2 -0
  22. data/test/core_ext/cases/test_core_ext.rb +1 -0
  23. data/test/formtastic/cases/helper.rb +5 -0
  24. data/test/formtastic/cases/test_form_builder.rb +3 -3
  25. data/test/formtastic/cases/test_form_helper.rb +3 -4
  26. data/test/generators/cases/test_generators.rb +31 -0
  27. data/test/javascript/public/test/form_builders/validateFormtastic.js +1 -1
  28. data/test/javascript/server.rb +2 -2
  29. data/test/javascript/views/layout.erb +1 -1
  30. data/test/middleware/cases/helper.rb +3 -0
  31. data/test/mongo_mapper/cases/test_middleware.rb +7 -7
  32. data/test/mongoid/cases/test_middleware.rb +7 -7
  33. data/test/simple_form/cases/helper.rb +3 -0
  34. data/test/simple_form/cases/test_form_helper.rb +2 -0
  35. data/test/test_loader.rb +6 -0
  36. data/{javascript → vendor/assets/javascripts}/rails.validations.js +6 -6
  37. metadata +43 -48
  38. data/lib/generators/templates/README +0 -7
  39. data/test/generators/cases/test_install_generator.rb +0 -15
@@ -12,21 +12,19 @@ Gem::Specification.new do |s|
12
12
  s.summary = %q{Client Side Validations}
13
13
  s.description = %q{Client Side Validations}
14
14
 
15
- s.files = `git ls-files -- {lib/*,javascript/*,*.gemspec}`.split("\n")
15
+ s.files = `git ls-files -- {lib/*,vendor/*,*.gemspec}`.split("\n")
16
16
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
- s.add_dependency 'activesupport'
21
-
22
- s.add_development_dependency 'rails', '~> 3.0.0'
20
+ s.add_development_dependency 'rails', '3.1.0.rc4'
23
21
  s.add_development_dependency 'sqlite3'
24
22
  s.add_development_dependency 'bson_ext'
25
23
  s.add_development_dependency 'mongoid', '~> 2.0.0'
26
24
  s.add_development_dependency 'mongo_mapper','~>0.9.0'
27
25
  s.add_development_dependency 'mocha'
28
26
  s.add_development_dependency 'simple_form'
29
- s.add_development_dependency 'formtastic'
27
+ s.add_development_dependency 'formtastic', '~> 2.0.0.rc3'
30
28
 
31
29
  # For QUnit testing
32
30
  s.add_development_dependency 'sinatra', '~> 1.0'
@@ -2,7 +2,7 @@ module ClientSideValidations::ActionView::Helpers
2
2
  module FormBuilder
3
3
 
4
4
  def self.included(base)
5
- (base.field_helpers - %w(apply_form_for_options! label check_box radio_button fields_for hidden_field)).each do |selector|
5
+ (base.field_helpers.map(&:to_s) - %w(apply_form_for_options! label check_box radio_button fields_for hidden_field)).each do |selector|
6
6
  base.class_eval <<-RUBY_EVAL
7
7
  def #{selector}_with_client_side_validations(method, options = {})
8
8
  apply_client_side_validators(method, options)
@@ -10,7 +10,7 @@ module ClientSideValidations::ActionView::Helpers
10
10
 
11
11
  # Always turn off HTML5 Validations
12
12
  options[:html] ||= {}
13
- options[:html][:novalidate] = true
13
+ options[:html][:novalidate] = 'novalidate'
14
14
 
15
15
  case record_or_name_or_array
16
16
  when String, Symbol
@@ -3,9 +3,10 @@ module ClientSideValidations::ActionView
3
3
  end
4
4
  end
5
5
 
6
- require "client_side_validations/action_view/form_helper"
7
- require "client_side_validations/action_view/form_tag_helper"
8
- require "client_side_validations/action_view/form_builder"
6
+ require 'client_side_validations/core_ext'
7
+ require 'client_side_validations/action_view/form_helper'
8
+ require 'client_side_validations/action_view/form_tag_helper'
9
+ require 'client_side_validations/action_view/form_builder'
9
10
 
10
11
  ActionView::Base.send(:include, ClientSideValidations::ActionView::Helpers::FormHelper)
11
12
  ActionView::Base.send(:include, ClientSideValidations::ActionView::Helpers::FormTagHelper)
@@ -5,8 +5,7 @@ module ClientSideValidations::ActiveModel
5
5
 
6
6
  def client_side_hash(model, attribute)
7
7
  options = self.options.dup
8
- { :message => model.errors.generate_message(attribute, message_type, options) }.
9
- merge(options.except(*::ActiveModel::Errors::CALLBACKS_OPTIONS - [:allow_blank, :if, :unless]))
8
+ { :message => model.errors.generate_message(attribute, message_type, options) }.merge(options.except(*::ActiveModel::Errors::CALLBACKS_OPTIONS - [:allow_blank, :if, :unless]))
10
9
  end
11
10
 
12
11
  private
@@ -0,0 +1,6 @@
1
+ module ClientSideValidations
2
+ class Engine < ::Rails::Engine
3
+ config.app_middleware.use ClientSideValidations::Middleware::Validators
4
+ end
5
+ end
6
+
@@ -0,0 +1,8 @@
1
+ # This is only used by dependant libraries that need to find the files
2
+
3
+ module ClientSideValidations
4
+ module Files
5
+ Initializer = File.expand_path(File.dirname(__FILE__) + '/../generators/templates/client_side_validations/initializer.rb')
6
+ Javascript = File.expand_path(File.dirname(__FILE__) + '/../../vendor/assets/javascripts/rails.validations.js')
7
+ end
8
+ end
@@ -1,13 +1,13 @@
1
1
  module ClientSideValidations
2
2
  module Formtastic
3
- module SemanticFormBuilder
3
+ module FormBuilder
4
4
 
5
5
  def self.included(base)
6
6
  base.class_eval do
7
7
  def self.client_side_form_settings(options, form_helper)
8
8
  {
9
9
  :type => self.to_s,
10
- :inline_error_class => ::Formtastic::SemanticFormBuilder.default_inline_error_class
10
+ :inline_error_class => ::Formtastic::FormBuilder.default_inline_error_class
11
11
  }
12
12
  end
13
13
  end
@@ -17,5 +17,5 @@ module ClientSideValidations
17
17
  end
18
18
  end
19
19
 
20
- Formtastic::SemanticFormBuilder.send(:include, ClientSideValidations::Formtastic::SemanticFormBuilder)
20
+ Formtastic::FormBuilder.send(:include, ClientSideValidations::Formtastic::FormBuilder)
21
21
 
@@ -1,9 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'client_side_validations/core_ext'
4
+
3
5
  module ClientSideValidations
4
6
 
5
7
  module Middleware
6
-
7
8
  class Validators
8
9
  def initialize(app)
9
10
  @app = app
@@ -11,7 +12,7 @@ module ClientSideValidations
11
12
 
12
13
  def call(env)
13
14
  case env['PATH_INFO']
14
- when %r{\/validators\/(\w+)\.json}
15
+ when %r{\/validators\/(\w+)}
15
16
  "::ClientSideValidations::Middleware::#{$1.camelize}".constantize.new(env).response
16
17
  else
17
18
  @app.call(env)
@@ -74,11 +75,6 @@ module ClientSideValidations
74
75
  parent_key = (request.params.keys - IGNORE_PARAMS).first
75
76
  end
76
77
  end
77
-
78
- end
79
-
80
- class Engine < ::Rails::Engine
81
- config.app_middleware.use ClientSideValidations::Middleware::Validators
82
78
  end
83
79
 
84
80
  end
@@ -1,3 +1,3 @@
1
1
  module ClientSideValidations
2
- VERSION = "3.0.5"
2
+ VERSION = '3.1.0'
3
3
  end
@@ -1,10 +1,13 @@
1
1
  module ClientSideValidations
2
2
  end
3
3
 
4
- require 'client_side_validations/active_model' if defined?(::ActiveModel)
4
+ require 'client_side_validations/active_model' if defined?(::ActiveModel)
5
5
  require 'client_side_validations/active_record' if defined?(::ActiveRecord)
6
- require 'client_side_validations/mongoid' if defined?(::Mongoid)
7
- require 'client_side_validations/mongo_mapper' if defined?(::MongoMapper)
8
- require 'client_side_validations/action_view'
9
- require 'client_side_validations/middleware' if defined?(::Rails)
6
+ require 'client_side_validations/mongoid' if defined?(::Mongoid)
7
+ require 'client_side_validations/mongo_mapper' if defined?(::MongoMapper)
8
+ require 'client_side_validations/action_view' if defined?(::ActionView)
9
+ if defined?(::Rails)
10
+ require 'client_side_validations/middleware'
11
+ require 'client_side_validations/engine'
12
+ end
10
13
 
@@ -0,0 +1,23 @@
1
+ module ClientSideValidations
2
+ module Generators
3
+ class CopyAssetGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../../../../vendor/assets/javascripts', __FILE__)
5
+ if Rails.version >= '3.1'
6
+ desc 'Creates a ClientSideValidations initializer and copies rails.validations.js to app/assets/javascripts.'
7
+ else
8
+ desc 'Creates a ClientSideValidations initializer and copies rails.validations.js to public/javascripts.'
9
+ end
10
+
11
+ def copy_javascript_asset
12
+ if Rails.version >= '3.1'
13
+ destination = 'app/assets/javascripts'
14
+ else
15
+ destination = 'public/javascripts'
16
+ end
17
+
18
+ copy_file 'rails.validations.js', "#{destination}/rails.validations.js"
19
+ end
20
+ end
21
+ end
22
+ end
23
+
@@ -1,20 +1,32 @@
1
1
  module ClientSideValidations
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- source_root File.expand_path('../../templates', __FILE__)
4
+ source_root File.expand_path('../../templates/client_side_validations', __FILE__)
5
5
 
6
- desc 'Creates a ClientSideValidations initializer and copies client-side-validations.js to public/javascripts.'
6
+ if Rails.version >= '3.1'
7
+ desc 'Creates a ClientSideValidations initializer.'
8
+ else
9
+ desc 'Creates a ClientSideValidations initializer and copies rails.validations.js to public/javascripts.'
10
+ end
7
11
 
8
12
  def copy_initializer
9
- copy_file 'client_side_validations.rb', 'config/initializers/client_side_validations.rb'
13
+ copy_file 'initializer.rb', 'config/initializers/client_side_validations.rb'
10
14
  end
11
15
 
12
- def copy_locale
13
- copy_file '../../../javascript/rails.validations.js', 'public/javascripts/rails.validations.js'
16
+ def copy_javascript_asset
17
+ if Rails.version >= '3.0'
18
+ if Rails.version < '3.1'
19
+ copy_file '../../../../vendor/assets/javascripts/rails.validations.js', 'public/javascripts/rails.validations.js'
20
+ end
21
+ end
14
22
  end
15
23
 
16
24
  def show_readme
17
- readme 'README' if behavior == :invoke
25
+ if Rails.version >= '3.1'
26
+ readme 'README.rails.3.1' if behavior == :invoke
27
+ else
28
+ readme 'README.rails.3.0' if behavior == :invoke
29
+ end
18
30
  end
19
31
  end
20
32
  end
@@ -0,0 +1,6 @@
1
+ *********************
2
+ ClientSideValidations
3
+ *********************
4
+
5
+ Client Side Validations only works with jQuery.
6
+ You'll need to include jQuery in your layout file before you include 'rails.validations.js'
@@ -0,0 +1,7 @@
1
+ *********************
2
+ ClientSideValidations
3
+ *********************
4
+
5
+ In your app/assets/javascripts/application.js file add the following:
6
+
7
+ //= require rails.validations
@@ -1,7 +1,7 @@
1
1
  # ClientSideValidations Initializer
2
2
 
3
3
  require 'client_side_validations/simple_form' if defined?(::SimpleForm)
4
- require 'client_side_validations/formtastic' if defined?(::Formtastic)
4
+ require 'client_side_validations/formtastic' if defined?(::Formtastic)
5
5
 
6
6
  # Uncomment the following block if you want each input field to have the validation messages attached.
7
7
  # ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
@@ -1,8 +1,14 @@
1
1
  require 'base_helper'
2
2
  require 'action_view'
3
- require 'client_side_validations/action_view'
4
- require 'action_view/template/handlers/erb'
3
+ require 'action_view/template'
5
4
  require 'action_view/models'
5
+ require 'client_side_validations/action_view'
6
+
7
+ module ActionController
8
+ class Base
9
+ include ActionDispatch::Routing::RouteSet.new.url_helpers
10
+ end
11
+ end
6
12
 
7
13
  module ActionViewTestSetup
8
14
  include ::ClientSideValidations::ActionView::Helpers::FormHelper
@@ -12,6 +18,19 @@ module ActionViewTestSetup
12
18
  @output_buffer = super
13
19
  end
14
20
 
21
+ Routes = ActionDispatch::Routing::RouteSet.new
22
+ Routes.draw do
23
+ resources :posts do
24
+ resources :comments
25
+ end
26
+ end
27
+
28
+ def _routes
29
+ Routes
30
+ end
31
+
32
+ include Routes.url_helpers
33
+
15
34
  def setup
16
35
  super
17
36
 
@@ -68,15 +87,10 @@ module ActionViewTestSetup
68
87
  @post.secret = 1
69
88
  @post.written_on = Date.new(2004, 6, 15)
70
89
 
71
- @_content_for = Hash.new { |h,k| h[k] = ActiveSupport::SafeBuffer.new }
72
- end
73
-
74
- def url_for(object)
75
- @url_for_options = object
76
- if object.is_a?(Hash)
77
- "http://www.example.com"
90
+ if defined?(ActionView::OutputFlow)
91
+ @view_flow = ActionView::OutputFlow.new
78
92
  else
79
- super
93
+ @_content_for = Hash.new { |h,k| h[k] = ActiveSupport::SafeBuffer.new }
80
94
  end
81
95
  end
82
96
 
@@ -87,11 +101,12 @@ module ActionViewTestSetup
87
101
  txt << %{</div>}
88
102
  end
89
103
 
90
- def form_text(action = "http://www.example.com", id = nil, html_class = nil, remote = nil, validators = nil)
104
+ def form_text(action = "http://www.example.com", id = nil, html_class = nil, remote = nil, validators = nil, file = nil)
91
105
  txt = %{<form accept-charset="UTF-8" action="#{action}"}
92
106
  txt << %{ data-remote="true"} if remote
93
107
  txt << %{ class="#{html_class}"} if html_class
94
108
  txt << %{ data-validate="true"} if validators
109
+ txt << %{ enctype="multipart/form-data"} if file
95
110
  txt << %{ id="#{id}"} if id
96
111
  txt << %{ method="post"}
97
112
  txt << %{ novalidate="novalidate"} if validators
@@ -102,12 +117,12 @@ module ActionViewTestSetup
102
117
  contents = block_given? ? yield : ""
103
118
 
104
119
  if options.is_a?(Hash)
105
- method, remote, validators = options.values_at(:method, :remote, :validators)
120
+ method, remote, validators, file = options.values_at(:method, :remote, :validators, :file)
106
121
  else
107
122
  method = options
108
123
  end
109
124
 
110
- html = form_text(action, id, html_class, remote, validators) + snowman(method) + (contents || "") + "</form>"
125
+ html = form_text(action, id, html_class, remote, validators, file) + snowman(method) + (contents || "") + "</form>"
111
126
 
112
127
  if options.is_a?(Hash) && options[:validators]
113
128
  build_script_tag(html, id, options[:validators])
@@ -158,3 +173,4 @@ module ActionViewTestSetup
158
173
  end
159
174
 
160
175
  end
176
+
@@ -44,7 +44,7 @@ class ClientSideValidations::ActionViewHelpersTest < ActionView::TestCase
44
44
  end
45
45
 
46
46
  validators = {'post[cost]' => {:presence => {:message => "can't be blank"}}}
47
- expected = whole_form("/posts/123", "edit_post_123", "edit_post", :method => "put", :validators => validators) do
47
+ expected = whole_form("/posts/123", "edit_post_123", "edit_post", :method => "put", :validators => validators, :file => true) do
48
48
  %{<input data-validate="true" id="post_cost" name="post[cost]" type="file" />}
49
49
  end
50
50
  assert_equal expected, output_buffer
@@ -30,7 +30,7 @@ class ClientSideValidations::LegacyActionViewHelpersTest < ActionView::TestCase
30
30
  concat f.file_field(:cost)
31
31
  end
32
32
 
33
- expected = whole_form("/posts/123", "edit_post_123", "edit_post", "put") do
33
+ expected = whole_form("/posts/123", "edit_post_123", "edit_post", :method => :put, :file => true) do
34
34
  %{<input id="post_cost" name="post[cost]" type="file" />}
35
35
  end
36
36
  assert_equal expected, output_buffer
@@ -30,7 +30,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
30
30
 
31
31
  def test_uniqueness_when_resource_exists
32
32
  User.create(:email => 'user@test.com')
33
- get '/validators/uniqueness.json', { 'user[email]' => 'user@test.com', 'case_sensitive' => true }
33
+ get '/validators/uniqueness', { 'user[email]' => 'user@test.com', 'case_sensitive' => true }
34
34
 
35
35
  assert_equal 'false', last_response.body
36
36
  assert last_response.ok?
@@ -38,14 +38,14 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
38
38
 
39
39
  def test_uniqueness_when_resource_exists_and_param_order_is_backwards
40
40
  User.create(:email => 'user@test.com')
41
- get '/validators/uniqueness.json', { 'case_sensitive' => true, 'user[email]' => 'user@test.com' }
41
+ get '/validators/uniqueness', { 'case_sensitive' => true, 'user[email]' => 'user@test.com' }
42
42
 
43
43
  assert_equal 'false', last_response.body
44
44
  assert last_response.ok?
45
45
  end
46
46
 
47
47
  def test_uniqueness_when_resource_does_not_exist
48
- get '/validators/uniqueness.json', { 'user[email]' => 'user@test.com', 'case_sensitive' => true }
48
+ get '/validators/uniqueness', { 'user[email]' => 'user@test.com', 'case_sensitive' => true }
49
49
 
50
50
  assert_equal 'true', last_response.body
51
51
  assert last_response.not_found?
@@ -53,7 +53,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
53
53
 
54
54
  def test_uniqueness_when_id_is_given
55
55
  user = User.create(:email => 'user@test.com')
56
- get '/validators/uniqueness.json', { 'user[email]' => 'user@test.com', 'id' => user.id, 'case_sensitive' => true }
56
+ get '/validators/uniqueness', { 'user[email]' => 'user@test.com', 'id' => user.id, 'case_sensitive' => true }
57
57
 
58
58
  assert_equal 'true', last_response.body
59
59
  assert last_response.not_found?
@@ -73,13 +73,13 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
73
73
  result = User.where(sql_without_binary)
74
74
  User.expects(:where).with(relation).returns(result)
75
75
 
76
- get '/validators/uniqueness.json', { 'user[email]' => user.email, 'case_sensitive' => true, 'id' => user.id}
76
+ get '/validators/uniqueness', { 'user[email]' => user.email, 'case_sensitive' => true, 'id' => user.id}
77
77
  assert_equal 'true', last_response.body
78
78
  end
79
79
 
80
80
  def test_uniqueness_when_scope_is_given
81
81
  User.create(:email => 'user@test.com', :age => 25)
82
- get '/validators/uniqueness.json', { 'user[email]' => 'user@test.com', 'scope' => { 'age' => 30 }, 'case_sensitive' => true }
82
+ get '/validators/uniqueness', { 'user[email]' => 'user@test.com', 'scope' => { 'age' => 30 }, 'case_sensitive' => true }
83
83
 
84
84
  assert_equal 'true', last_response.body
85
85
  assert last_response.not_found?
@@ -87,7 +87,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
87
87
 
88
88
  def test_uniqueness_when_multiple_scopes_are_given
89
89
  User.create(:email => 'user@test.com', :age => 30, :name => 'Brian')
90
- get '/validators/uniqueness.json', { 'user[email]' => 'user@test.com', 'scope' => { 'age' => 30, 'name' => 'Robert' }, 'case_sensitive' => true }
90
+ get '/validators/uniqueness', { 'user[email]' => 'user@test.com', 'scope' => { 'age' => 30, 'name' => 'Robert' }, 'case_sensitive' => true }
91
91
 
92
92
  assert_equal 'true', last_response.body
93
93
  assert last_response.not_found?
@@ -95,7 +95,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
95
95
 
96
96
  def test_uniqueness_when_case_insensitive
97
97
  User.create(:name => 'Brian')
98
- get '/validators/uniqueness.json', { 'user[name]' => 'BRIAN', 'case_sensitive' => false }
98
+ get '/validators/uniqueness', { 'user[name]' => 'BRIAN', 'case_sensitive' => false }
99
99
 
100
100
  assert_equal 'false', last_response.body
101
101
  assert last_response.ok?
@@ -103,7 +103,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
103
103
 
104
104
  def test_uniqueness_when_attribute_passes_as_an_integer
105
105
  User.create(:name => 123)
106
- get '/validators/uniqueness.json', { 'user[name]' => 123, 'case_sensitive' => true }
106
+ get '/validators/uniqueness', { 'user[name]' => 123, 'case_sensitive' => true }
107
107
 
108
108
  assert_equal 'false', last_response.body
109
109
  assert last_response.ok?
@@ -111,7 +111,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
111
111
 
112
112
  def test_uniqueness_when_attribute_passes_as_an_integer
113
113
  User.create(:name => 123)
114
- get '/validators/uniqueness.json', { 'user[name]' => 123, 'case_sensitive' => true }
114
+ get '/validators/uniqueness', { 'user[name]' => 123, 'case_sensitive' => true }
115
115
 
116
116
  assert_equal 'false', last_response.body
117
117
  assert last_response.ok?
@@ -120,14 +120,14 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
120
120
  def test_uniqueness_with_columns_which_are_sql_keywords
121
121
  Guid.validates_uniqueness_of :key
122
122
  assert_nothing_raised do
123
- get '/validators/uniqueness.json', { 'guid[key]' => 'test', 'case_sensitive' => true }
123
+ get '/validators/uniqueness', { 'guid[key]' => 'test', 'case_sensitive' => true }
124
124
  end
125
125
  end
126
126
 
127
127
  def test_uniqueness_with_limit
128
128
  # User.title is limited to 5 characters
129
129
  User.create(:title => "abcde")
130
- get '/validators/uniqueness.json', { 'user[title]' => 'abcdefgh', 'case_sensitive' => true }
130
+ get '/validators/uniqueness', { 'user[title]' => 'abcdefgh', 'case_sensitive' => true }
131
131
 
132
132
  assert_equal 'false', last_response.body
133
133
  assert last_response.ok?
@@ -137,7 +137,7 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
137
137
  with_kcode('UTF8') do
138
138
  # User.title is limited to 5 characters
139
139
  User.create(:title => "一二三四五")
140
- get '/validators/uniqueness.json', { 'user[title]' => '一二三四五六七八', 'case_sensitive' => true }
140
+ get '/validators/uniqueness', { 'user[title]' => '一二三四五六七八', 'case_sensitive' => true }
141
141
 
142
142
  assert_equal 'false', last_response.body
143
143
  assert last_response.ok?
@@ -145,28 +145,28 @@ class ClientSideValidationsActiveRecordMiddlewareTest < Test::Unit::TestCase
145
145
  end
146
146
 
147
147
  def test_validate_straight_inheritance_uniqueness
148
- get '/validators/uniqueness.json', { 'inept_wizard[name]' => 'Rincewind', 'case_sensitive' => true }
148
+ get '/validators/uniqueness', { 'inept_wizard[name]' => 'Rincewind', 'case_sensitive' => true }
149
149
  assert_equal 'true', last_response.body
150
150
  assert last_response.not_found?
151
151
 
152
152
  IneptWizard.create(:name => 'Rincewind')
153
- get '/validators/uniqueness.json', { 'inept_wizard[name]' => 'Rincewind', 'case_sensitive' => true }
153
+ get '/validators/uniqueness', { 'inept_wizard[name]' => 'Rincewind', 'case_sensitive' => true }
154
154
  assert_equal 'false', last_response.body
155
155
  assert last_response.ok?
156
156
 
157
- get '/validators/uniqueness.json', { 'conjurer[name]' => 'Rincewind', 'case_sensitive' => true }
157
+ get '/validators/uniqueness', { 'conjurer[name]' => 'Rincewind', 'case_sensitive' => true }
158
158
  assert_equal 'false', last_response.body
159
159
  assert last_response.ok?
160
160
 
161
161
  Conjurer.create(:name => 'The Amazing Bonko')
162
- get '/validators/uniqueness.json', { 'thaumaturgist[name]' => 'The Amazing Bonko', 'case_sensitive' => true }
162
+ get '/validators/uniqueness', { 'thaumaturgist[name]' => 'The Amazing Bonko', 'case_sensitive' => true }
163
163
  assert_equal 'false', last_response.body
164
164
  assert last_response.ok?
165
165
  end
166
166
 
167
167
  def test_uniqueness_when_resource_is_a_nested_module
168
168
  ActiveRecordTestModule::User2.create(:email => 'user@test.com')
169
- get '/validators/uniqueness.json', { 'active_record_test_module/user2[email]' => 'user@test.com', 'case_sensitive' => true }
169
+ get '/validators/uniqueness', { 'active_record_test_module/user2[email]' => 'user@test.com', 'case_sensitive' => true }
170
170
 
171
171
  assert_equal 'false', last_response.body
172
172
  assert last_response.ok?
data/test/base_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.setup
2
4
  require 'ruby-debug'
3
5
  require 'test/unit'
4
6
  require 'mocha'
@@ -1,3 +1,4 @@
1
+ require 'base_helper'
1
2
  require 'client_side_validations/core_ext'
2
3
 
3
4
  class CoreExtTest < Test::Unit::TestCase
@@ -1,2 +1,7 @@
1
+ # encoding: utf-8
2
+ require 'active_support'
3
+ require 'formtastic/railtie' if defined?(::Rails)
4
+ require 'formtastic/engine' if defined?(::Rails)
1
5
  require 'formtastic'
2
6
  require 'client_side_validations/formtastic'
7
+
@@ -1,11 +1,11 @@
1
1
  require 'formtastic/cases/helper'
2
2
 
3
- class ClientSideValidations::Formtastic::SemanticFormBuilderTest < Test::Unit::TestCase
3
+ class ClientSideValidations::Formtastic::FormBuilderTest < Test::Unit::TestCase
4
4
  def test_client_side_form_js_hash
5
5
  expected = {
6
- :type => 'Formtastic::SemanticFormBuilder',
6
+ :type => 'Formtastic::FormBuilder',
7
7
  :inline_error_class => 'inline-errors'
8
8
  }
9
- assert_equal expected, Formtastic::SemanticFormBuilder.client_side_form_settings(nil, nil)
9
+ assert_equal expected, Formtastic::FormBuilder.client_side_form_settings(nil, nil)
10
10
  end
11
11
  end
@@ -3,7 +3,7 @@ require 'formtastic/cases/helper'
3
3
 
4
4
  class ClientSideValidations::Formtastic::FormHelperTest < ActionView::TestCase
5
5
  include ActionViewTestSetup
6
- include Formtastic::SemanticFormHelper
6
+ include Formtastic::Helpers::FormHelper
7
7
 
8
8
  def client_side_form_settings_helper
9
9
  ""
@@ -14,9 +14,8 @@ class ClientSideValidations::Formtastic::FormHelperTest < ActionView::TestCase
14
14
  concat f.input(:cost)
15
15
  end
16
16
 
17
- expected = %{<form accept-charset="UTF-8" action="/posts/123" class="formtastic post" data-validate="true" id="edit_post_123" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /></div><li class="string required" id="post_cost_input"><label for="post_cost">Cost<abbr title="required">*</abbr></label><input data-validate="true" id="post_cost" name="post[cost]" type="text" /></li></form><script>window['edit_post_123'] = {"type":"Formtastic::SemanticFormBuilder","inline_error_class":"inline-errors","validators":{"post[cost]":{"presence":{"message":"can't be blank"}}}};</script>}
17
+ expected = %{<form accept-charset="UTF-8" action="/posts/123" class="formtastic post" data-validate="true" id="edit_post_123" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /></div><li class="string input required stringish" id="post_cost_input"><label class=\" label\" for="post_cost">Cost<abbr title="required">*</abbr></label><input data-validate="true" id="post_cost" name="post[cost]" required=\"required\" type="text" />\n\n</li></form><script>window['edit_post_123'] = {"type":"Formtastic::FormBuilder","inline_error_class":"inline-errors","validators":{"post[cost]":{"presence":{"message":"can't be blank"}}}};</script>}
18
18
  assert_equal expected, output_buffer, "\n\n *** If you're running Ruby 1.8 and this test fails is is most likely due to 1.8's lack of insertion order persistence with Hashes ***\n"
19
19
  end
20
20
 
21
- end
22
-
21
+ end
@@ -0,0 +1,31 @@
1
+ require 'rails/generators/test_case'
2
+ require 'generators/client_side_validations/install_generator'
3
+ require 'generators/client_side_validations/copy_asset_generator'
4
+
5
+ class InstallGeneratorTest < Rails::Generators::TestCase
6
+ tests ClientSideValidations::Generators::InstallGenerator
7
+ destination File.expand_path('../../tmp', __FILE__)
8
+ setup :prepare_destination
9
+
10
+ test 'Assert all files are properly created' do
11
+ run_generator
12
+ assert_file 'config/initializers/client_side_validations.rb'
13
+ assert_file 'public/javascripts/rails.validations.js' if Rails.version > '3.0' && Rails.version < '3.1'
14
+ end
15
+ end
16
+
17
+ class CopyAssetGeneratorTest < Rails::Generators::TestCase
18
+ tests ClientSideValidations::Generators::CopyAssetGenerator
19
+ destination File.expand_path('../../tmp', __FILE__)
20
+ setup :prepare_destination
21
+
22
+ test 'Assert file is properly created' do
23
+ run_generator
24
+ if Rails.version >= '3.1'
25
+ assert_file 'app/assets/javascripts/rails.validations.js'
26
+ else
27
+ assert_file 'public/javascripts/rails.validations.js'
28
+ end
29
+ end
30
+ end
31
+
@@ -1,7 +1,7 @@
1
1
  module('Validate Formtastic', {
2
2
  setup: function() {
3
3
  window['new_user'] = {
4
- type: 'Formtastic::SemanticFormBuilder',
4
+ type: 'Formtastic::FormBuilder',
5
5
  inline_error_class: 'inline-errors',
6
6
  validators: {
7
7
  "user[name]":{"presence":{"message": "must be present"}, "format":{"message":"is invalid","with":/\d+/}}
@@ -2,7 +2,7 @@ require 'sinatra'
2
2
  require 'json'
3
3
  require 'ruby-debug'
4
4
 
5
- use Rack::Static, :urls => ['/javascript'], :root => File.expand_path('../..', settings.root)
5
+ use Rack::Static, :urls => ['/vendor/assets/javascripts'], :root => File.expand_path('../..', settings.root)
6
6
 
7
7
  helpers do
8
8
  def jquery_link version
@@ -43,7 +43,7 @@ get '/' do
43
43
  erb :index
44
44
  end
45
45
 
46
- get '/validators/uniqueness.json' do
46
+ get '/validators/uniqueness' do
47
47
  content_type 'application/json'
48
48
 
49
49
  if user = params[:user2]
@@ -12,7 +12,7 @@
12
12
  </style>
13
13
 
14
14
  <%= script_tag jquery_src %>
15
- <%= script_tag "/javascript/rails.validations.js" %>
15
+ <%= script_tag "/vendor/assets/javascripts/rails.validations.js" %>
16
16
  </head>
17
17
 
18
18
  <body id="body">
@@ -1,4 +1,6 @@
1
1
  require 'base_helper'
2
+ require 'action_controller'
3
+ require 'action_controller/railtie'
2
4
  require 'rails'
3
5
 
4
6
  # Pulled from railties/test/abstract_unit in Rails 3.1
@@ -11,5 +13,6 @@ module TestApp
11
13
  end
12
14
 
13
15
  require 'client_side_validations/middleware'
16
+ require 'client_side_validations/engine'
14
17
 
15
18
  TestApp::Application.initialize!
@@ -21,14 +21,14 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
21
21
 
22
22
  def test_uniqueness_when_resource_exists
23
23
  Magazine.create(:author_email => 'magazine@test.com')
24
- get '/validators/uniqueness.json', { 'magazine[author_email]' => 'magazine@test.com' }
24
+ get '/validators/uniqueness', { 'magazine[author_email]' => 'magazine@test.com' }
25
25
 
26
26
  assert_equal 'false', last_response.body
27
27
  assert last_response.ok?
28
28
  end
29
29
 
30
30
  def test_uniqueness_when_resource_does_not_exist
31
- get '/validators/uniqueness.json', { 'magazine[author_email]' => 'magazine@test.com' }
31
+ get '/validators/uniqueness', { 'magazine[author_email]' => 'magazine@test.com' }
32
32
 
33
33
  assert_equal 'true', last_response.body
34
34
  assert last_response.not_found?
@@ -36,7 +36,7 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
36
36
 
37
37
  def test_uniqueness_when_id_is_given
38
38
  magazine = Magazine.create(:author_email => 'magazine@test.com')
39
- get '/validators/uniqueness.json', { 'magazine[author_email]' => 'magazine@test.com', 'id' => magazine.id }
39
+ get '/validators/uniqueness', { 'magazine[author_email]' => 'magazine@test.com', 'id' => magazine.id }
40
40
 
41
41
  assert_equal 'true', last_response.body
42
42
  assert last_response.not_found?
@@ -44,7 +44,7 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
44
44
 
45
45
  def test_uniqueness_when_scope_is_given
46
46
  Magazine.create(:author_email => 'magazine@test.com', :age => 25)
47
- get '/validators/uniqueness.json', { 'magazine[author_email]' => 'magazine@test.com', 'scope' => { 'age' => 30 } }
47
+ get '/validators/uniqueness', { 'magazine[author_email]' => 'magazine@test.com', 'scope' => { 'age' => 30 } }
48
48
 
49
49
  assert_equal 'true', last_response.body
50
50
  assert last_response.not_found?
@@ -52,7 +52,7 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
52
52
 
53
53
  def test_uniqueness_when_multiple_scopes_are_given
54
54
  Magazine.create(:author_email => 'magazine@test.com', :age => 30, :author_name => 'Brian')
55
- get '/validators/uniqueness.json', { 'magazine[author_email]' => 'magazine@test.com', 'scope' => { 'age' => 30, 'author_name' => 'Robert' } }
55
+ get '/validators/uniqueness', { 'magazine[author_email]' => 'magazine@test.com', 'scope' => { 'age' => 30, 'author_name' => 'Robert' } }
56
56
 
57
57
  assert_equal 'true', last_response.body
58
58
  assert last_response.not_found?
@@ -60,7 +60,7 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
60
60
 
61
61
  def test_uniqueness_when_case_insensitive
62
62
  Magazine.create(:author_name => 'Brian')
63
- get '/validators/uniqueness.json', { 'magazine[author_name]' => 'BRIAN', 'case_sensitive' => false }
63
+ get '/validators/uniqueness', { 'magazine[author_name]' => 'BRIAN', 'case_sensitive' => false }
64
64
 
65
65
  assert_equal 'false', last_response.body
66
66
  assert last_response.ok?
@@ -68,7 +68,7 @@ class ClientSideValidationsMongoMapperMiddlewareTest < Test::Unit::TestCase
68
68
 
69
69
  def test_uniqueness_when_resource_exists
70
70
  MongoMapperTestModule::Magazine2.create(:author_email => 'magazine@test.com')
71
- get '/validators/uniqueness.json', { 'mongo_mapper_test_module/magazine2[author_email]' => 'magazine@test.com' }
71
+ get '/validators/uniqueness', { 'mongo_mapper_test_module/magazine2[author_email]' => 'magazine@test.com' }
72
72
 
73
73
  assert_equal 'false', last_response.body
74
74
  assert last_response.ok?
@@ -21,14 +21,14 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
21
21
 
22
22
  def test_uniqueness_when_resource_exists
23
23
  Book.create(:author_email => 'book@test.com')
24
- get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com' }
24
+ get '/validators/uniqueness', { 'book[author_email]' => 'book@test.com' }
25
25
 
26
26
  assert_equal 'false', last_response.body
27
27
  assert last_response.ok?
28
28
  end
29
29
 
30
30
  def test_uniqueness_when_resource_does_not_exist
31
- get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com' }
31
+ get '/validators/uniqueness', { 'book[author_email]' => 'book@test.com' }
32
32
 
33
33
  assert_equal 'true', last_response.body
34
34
  assert last_response.not_found?
@@ -36,7 +36,7 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
36
36
 
37
37
  def test_uniqueness_when_id_is_given
38
38
  book = Book.create(:author_email => 'book@test.com')
39
- get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'id' => book.id }
39
+ get '/validators/uniqueness', { 'book[author_email]' => 'book@test.com', 'id' => book.id }
40
40
 
41
41
  assert_equal 'true', last_response.body
42
42
  assert last_response.not_found?
@@ -44,7 +44,7 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
44
44
 
45
45
  def test_uniqueness_when_scope_is_given
46
46
  Book.create(:author_email => 'book@test.com', :age => 25)
47
- get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30 } }
47
+ get '/validators/uniqueness', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30 } }
48
48
 
49
49
  assert_equal 'true', last_response.body
50
50
  assert last_response.not_found?
@@ -52,7 +52,7 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
52
52
 
53
53
  def test_uniqueness_when_multiple_scopes_are_given
54
54
  Book.create(:author_email => 'book@test.com', :age => 30, :author_name => 'Brian')
55
- get '/validators/uniqueness.json', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30, 'author_name' => 'Robert' } }
55
+ get '/validators/uniqueness', { 'book[author_email]' => 'book@test.com', 'scope' => { 'age' => 30, 'author_name' => 'Robert' } }
56
56
 
57
57
  assert_equal 'true', last_response.body
58
58
  assert last_response.not_found?
@@ -60,7 +60,7 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
60
60
 
61
61
  def test_uniqueness_when_case_insensitive
62
62
  Book.create(:author_name => 'Brian')
63
- get '/validators/uniqueness.json', { 'book[author_name]' => 'BRIAN', 'case_sensitive' => false }
63
+ get '/validators/uniqueness', { 'book[author_name]' => 'BRIAN', 'case_sensitive' => false }
64
64
 
65
65
  assert_equal 'false', last_response.body
66
66
  assert last_response.ok?
@@ -68,7 +68,7 @@ class ClientSideValidationsMongoidMiddlewareTest < Test::Unit::TestCase
68
68
 
69
69
  def test_uniqueness_when_resource_is_a_nested_module
70
70
  MongoidTestModule::Book2.create(:author_email => 'book@test.com')
71
- get '/validators/uniqueness.json', { 'mongoid_test_module/book2[author_email]' => 'book@test.com' }
71
+ get '/validators/uniqueness', { 'mongoid_test_module/book2[author_email]' => 'book@test.com' }
72
72
 
73
73
  assert_equal 'false', last_response.body
74
74
  assert last_response.ok?
@@ -1,2 +1,5 @@
1
+ require 'action_view'
2
+ require 'action_controller/railtie'
3
+ require 'rails'
1
4
  require 'simple_form'
2
5
  require 'client_side_validations/simple_form'
@@ -1,4 +1,5 @@
1
1
  require 'action_view/cases/helper'
2
+ require 'middleware/cases/helper'
2
3
  require 'simple_form/cases/helper'
3
4
 
4
5
  class ClientSideValidations::SimpleForm::FormHelperTest < ActionView::TestCase
@@ -10,6 +11,7 @@ class ClientSideValidations::SimpleForm::FormHelperTest < ActionView::TestCase
10
11
  end
11
12
 
12
13
  def test_simple_form_for
14
+ ActionView::TestCase::TestController.any_instance.stubs(:action_name).returns('edit')
13
15
  simple_form_for(@post, :validate => true) do |f|
14
16
  concat f.input(:cost)
15
17
  end
@@ -0,0 +1,6 @@
1
+ # Sanity check to make sure the entire library loads OK
2
+
3
+ require 'base_helper'
4
+ require 'client_side_validations'
5
+ require 'client_side_validations/files'
6
+ require 'client_side_validations/version'
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Rails 3 Client Side Validations - v3.0.5
2
+ * Rails 3 Client Side Validations - v3.1.0
3
3
  * https://github.com/bcardarlela/client_side_validations
4
4
  *
5
5
  * Copyright (c) 2011 Brian Cardarella
@@ -24,7 +24,7 @@
24
24
  .bind('form:validate:pass', function(eventData) { clientSideValidations.callbacks.form.pass( form, eventData); })
25
25
 
26
26
  // Set up the events for each validatable form element
27
- .find('[data-validate]:input')
27
+ .find('[data-validate]:input:not(:radio)')
28
28
  .live('focusout', function() { $(this).isValid(settings.validators); })
29
29
  .live('change', function() { $(this).data('changed', true); })
30
30
  // Callbacks
@@ -300,7 +300,7 @@ var clientSideValidations = {
300
300
  data[name] = element.val();
301
301
 
302
302
  if (jQuery.ajax({
303
- url: '/validators/uniqueness.json',
303
+ url: '/validators/uniqueness',
304
304
  data: data,
305
305
  async: false
306
306
  }).status == 200) {
@@ -312,7 +312,7 @@ var clientSideValidations = {
312
312
  formBuilders: {
313
313
  'ActionView::Helpers::FormBuilder': {
314
314
  add: function(element, settings, message) {
315
- if (element.data('valid') !== false) {
315
+ if (element.data('valid') !== false && jQuery('label.message[for="' + element.attr('id') + '"]')[0] == undefined) {
316
316
  var inputErrorField = jQuery(settings.input_tag),
317
317
  labelErrorField = jQuery(settings.label_tag),
318
318
  label = jQuery('label[for="' + element.attr('id') + '"]:not(.message)');
@@ -360,7 +360,7 @@ var clientSideValidations = {
360
360
  }
361
361
 
362
362
  },
363
- 'Formtastic::SemanticFormBuilder': {
363
+ 'Formtastic::FormBuilder': {
364
364
  add: function(element, settings, message) {
365
365
  if (element.data('valid') !== false) {
366
366
  var wrapper = element.closest('li');
@@ -401,4 +401,4 @@ var clientSideValidations = {
401
401
  pass: function(form, eventData) { }
402
402
  }
403
403
  }
404
- }
404
+ };
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: client_side_validations
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 3.0.5
5
+ version: 3.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brian Cardarella
@@ -10,33 +10,33 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-06-06 00:00:00 -04:00
13
+ date: 2011-06-20 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: activesupport
17
+ name: rails
18
18
  prerelease: false
19
19
  requirement: &id001 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
- - - ">="
22
+ - - "="
23
23
  - !ruby/object:Gem::Version
24
- version: "0"
25
- type: :runtime
24
+ version: 3.1.0.rc4
25
+ type: :development
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
28
- name: rails
28
+ name: sqlite3
29
29
  prerelease: false
30
30
  requirement: &id002 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
- - - ~>
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: 3.0.0
35
+ version: "0"
36
36
  type: :development
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
39
- name: sqlite3
39
+ name: bson_ext
40
40
  prerelease: false
41
41
  requirement: &id003 !ruby/object:Gem::Requirement
42
42
  none: false
@@ -47,40 +47,40 @@ dependencies:
47
47
  type: :development
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
50
- name: bson_ext
50
+ name: mongoid
51
51
  prerelease: false
52
52
  requirement: &id004 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
- - - ">="
55
+ - - ~>
56
56
  - !ruby/object:Gem::Version
57
- version: "0"
57
+ version: 2.0.0
58
58
  type: :development
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
61
- name: mongoid
61
+ name: mongo_mapper
62
62
  prerelease: false
63
63
  requirement: &id005 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 2.0.0
68
+ version: 0.9.0
69
69
  type: :development
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
- name: mongo_mapper
72
+ name: mocha
73
73
  prerelease: false
74
74
  requirement: &id006 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
- - - ~>
77
+ - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 0.9.0
79
+ version: "0"
80
80
  type: :development
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
- name: mocha
83
+ name: simple_form
84
84
  prerelease: false
85
85
  requirement: &id007 !ruby/object:Gem::Requirement
86
86
  none: false
@@ -91,40 +91,40 @@ dependencies:
91
91
  type: :development
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
- name: simple_form
94
+ name: formtastic
95
95
  prerelease: false
96
96
  requirement: &id008 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
- - - ">="
99
+ - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: "0"
101
+ version: 2.0.0.rc3
102
102
  type: :development
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
105
- name: formtastic
105
+ name: sinatra
106
106
  prerelease: false
107
107
  requirement: &id009 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
- - - ">="
110
+ - - ~>
111
111
  - !ruby/object:Gem::Version
112
- version: "0"
112
+ version: "1.0"
113
113
  type: :development
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
116
- name: sinatra
116
+ name: shotgun
117
117
  prerelease: false
118
118
  requirement: &id010 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
- - - ~>
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: "1.0"
123
+ version: "0"
124
124
  type: :development
125
125
  version_requirements: *id010
126
126
  - !ruby/object:Gem::Dependency
127
- name: shotgun
127
+ name: thin
128
128
  prerelease: false
129
129
  requirement: &id011 !ruby/object:Gem::Requirement
130
130
  none: false
@@ -135,7 +135,7 @@ dependencies:
135
135
  type: :development
136
136
  version_requirements: *id011
137
137
  - !ruby/object:Gem::Dependency
138
- name: thin
138
+ name: json
139
139
  prerelease: false
140
140
  requirement: &id012 !ruby/object:Gem::Requirement
141
141
  none: false
@@ -146,7 +146,7 @@ dependencies:
146
146
  type: :development
147
147
  version_requirements: *id012
148
148
  - !ruby/object:Gem::Dependency
149
- name: json
149
+ name: ruby-debug19
150
150
  prerelease: false
151
151
  requirement: &id013 !ruby/object:Gem::Requirement
152
152
  none: false
@@ -156,17 +156,6 @@ dependencies:
156
156
  version: "0"
157
157
  type: :development
158
158
  version_requirements: *id013
159
- - !ruby/object:Gem::Dependency
160
- name: ruby-debug19
161
- prerelease: false
162
- requirement: &id014 !ruby/object:Gem::Requirement
163
- none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: "0"
168
- type: :development
169
- version_requirements: *id014
170
159
  description: Client Side Validations
171
160
  email:
172
161
  - bcardarella@gmail.com
@@ -178,7 +167,6 @@ extra_rdoc_files: []
178
167
 
179
168
  files:
180
169
  - client_side_validations.gemspec
181
- - javascript/rails.validations.js
182
170
  - lib/client_side_validations.rb
183
171
  - lib/client_side_validations/action_view.rb
184
172
  - lib/client_side_validations/action_view/form_builder.rb
@@ -198,6 +186,8 @@ files:
198
186
  - lib/client_side_validations/core_ext.rb
199
187
  - lib/client_side_validations/core_ext/range.rb
200
188
  - lib/client_side_validations/core_ext/regexp.rb
189
+ - lib/client_side_validations/engine.rb
190
+ - lib/client_side_validations/files.rb
201
191
  - lib/client_side_validations/formtastic.rb
202
192
  - lib/client_side_validations/middleware.rb
203
193
  - lib/client_side_validations/mongo_mapper.rb
@@ -208,9 +198,12 @@ files:
208
198
  - lib/client_side_validations/mongoid/uniqueness.rb
209
199
  - lib/client_side_validations/simple_form.rb
210
200
  - lib/client_side_validations/version.rb
201
+ - lib/generators/client_side_validations/copy_asset_generator.rb
211
202
  - lib/generators/client_side_validations/install_generator.rb
212
- - lib/generators/templates/README
213
- - lib/generators/templates/client_side_validations.rb
203
+ - lib/generators/templates/client_side_validations/README.rails.3.0
204
+ - lib/generators/templates/client_side_validations/README.rails.3.1
205
+ - lib/generators/templates/client_side_validations/initializer.rb
206
+ - vendor/assets/javascripts/rails.validations.js
214
207
  - test/action_view/cases/helper.rb
215
208
  - test/action_view/cases/test_helpers.rb
216
209
  - test/action_view/cases/test_legacy_helpers.rb
@@ -240,7 +233,7 @@ files:
240
233
  - test/formtastic/cases/helper.rb
241
234
  - test/formtastic/cases/test_form_builder.rb
242
235
  - test/formtastic/cases/test_form_helper.rb
243
- - test/generators/cases/test_install_generator.rb
236
+ - test/generators/cases/test_generators.rb
244
237
  - test/javascript/config.ru
245
238
  - test/javascript/public/test/callbacks/elementAfter.js
246
239
  - test/javascript/public/test/callbacks/elementBefore.js
@@ -286,6 +279,7 @@ files:
286
279
  - test/simple_form/cases/helper.rb
287
280
  - test/simple_form/cases/test_form_builder.rb
288
281
  - test/simple_form/cases/test_form_helper.rb
282
+ - test/test_loader.rb
289
283
  has_rdoc: true
290
284
  homepage: https://github.com/bcardarella/client_side_validations
291
285
  licenses: []
@@ -310,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
304
  requirements: []
311
305
 
312
306
  rubyforge_project:
313
- rubygems_version: 1.3.8
307
+ rubygems_version: 1.5.3
314
308
  signing_key:
315
309
  specification_version: 3
316
310
  summary: Client Side Validations
@@ -344,7 +338,7 @@ test_files:
344
338
  - test/formtastic/cases/helper.rb
345
339
  - test/formtastic/cases/test_form_builder.rb
346
340
  - test/formtastic/cases/test_form_helper.rb
347
- - test/generators/cases/test_install_generator.rb
341
+ - test/generators/cases/test_generators.rb
348
342
  - test/javascript/config.ru
349
343
  - test/javascript/public/test/callbacks/elementAfter.js
350
344
  - test/javascript/public/test/callbacks/elementBefore.js
@@ -390,3 +384,4 @@ test_files:
390
384
  - test/simple_form/cases/helper.rb
391
385
  - test/simple_form/cases/test_form_builder.rb
392
386
  - test/simple_form/cases/test_form_helper.rb
387
+ - test/test_loader.rb
@@ -1,7 +0,0 @@
1
- **************************************
2
- Client Side Validations
3
-
4
- Currently Client Side Validations only
5
- works with jQuery. You'll need to require
6
- jQuery in your layout file before you
7
- require 'rails.validations.js'
@@ -1,15 +0,0 @@
1
- require 'rails/generators/test_case'
2
- require 'generators/client_side_validations/install_generator'
3
-
4
- class InstallGeneratorTest < Rails::Generators::TestCase
5
- tests ClientSideValidations::Generators::InstallGenerator
6
- destination File.expand_path('../../tmp', __FILE__)
7
- setup :prepare_destination
8
-
9
- test 'Assert all files are properly created' do
10
- run_generator
11
- assert_file 'config/initializers/client_side_validations.rb'
12
- assert_file 'public/javascripts/rails.validations.js'
13
- end
14
- end
15
-