client_side_validations 3.0.10 → 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.
- data/client_side_validations.gemspec +2 -2
- data/lib/client_side_validations/action_view.rb +4 -3
- data/lib/client_side_validations/active_model.rb +1 -2
- data/lib/client_side_validations/engine.rb +6 -0
- data/lib/client_side_validations/files.rb +8 -0
- data/lib/client_side_validations/formtastic.rb +3 -3
- data/lib/client_side_validations/middleware.rb +3 -7
- data/lib/client_side_validations/version.rb +1 -1
- data/lib/client_side_validations.rb +8 -5
- data/lib/generators/client_side_validations/copy_asset_generator.rb +23 -0
- data/lib/generators/client_side_validations/install_generator.rb +18 -6
- data/lib/generators/templates/client_side_validations/README.rails.3.0 +6 -0
- data/lib/generators/templates/client_side_validations/README.rails.3.1 +7 -0
- data/lib/generators/templates/{client_side_validations.rb → client_side_validations/initializer.rb} +1 -1
- data/test/action_view/cases/helper.rb +29 -13
- data/test/action_view/cases/test_helpers.rb +1 -1
- data/test/action_view/cases/test_legacy_helpers.rb +1 -1
- data/test/active_record/cases/test_middleware.rb +18 -18
- data/test/core_ext/cases/test_core_ext.rb +1 -0
- data/test/formtastic/cases/helper.rb +5 -0
- data/test/formtastic/cases/test_form_builder.rb +3 -3
- data/test/formtastic/cases/test_form_helper.rb +3 -4
- data/test/generators/cases/test_generators.rb +31 -0
- data/test/javascript/public/test/form_builders/validateFormtastic.js +1 -1
- data/test/javascript/server.rb +1 -1
- data/test/middleware/cases/helper.rb +3 -0
- data/test/mongo_mapper/cases/test_middleware.rb +7 -7
- data/test/mongoid/cases/test_middleware.rb +7 -7
- data/test/simple_form/cases/helper.rb +3 -0
- data/test/simple_form/cases/test_form_helper.rb +2 -0
- data/test/test_loader.rb +6 -0
- data/vendor/assets/javascripts/rails.validations.js +4 -4
- metadata +15 -9
- data/lib/generators/templates/README +0 -7
- data/test/generators/cases/test_install_generator.rb +0 -15
|
@@ -17,14 +17,14 @@ Gem::Specification.new do |s|
|
|
|
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_development_dependency 'rails', '
|
|
20
|
+
s.add_development_dependency 'rails', '3.1.0.rc4'
|
|
21
21
|
s.add_development_dependency 'sqlite3'
|
|
22
22
|
s.add_development_dependency 'bson_ext'
|
|
23
23
|
s.add_development_dependency 'mongoid', '~> 2.0.0'
|
|
24
24
|
s.add_development_dependency 'mongo_mapper','~>0.9.0'
|
|
25
25
|
s.add_development_dependency 'mocha'
|
|
26
26
|
s.add_development_dependency 'simple_form'
|
|
27
|
-
s.add_development_dependency 'formtastic'
|
|
27
|
+
s.add_development_dependency 'formtastic', '~> 2.0.0.rc3'
|
|
28
28
|
|
|
29
29
|
# For QUnit testing
|
|
30
30
|
s.add_development_dependency 'sinatra', '~> 1.0'
|
|
@@ -3,9 +3,10 @@ module ClientSideValidations::ActionView
|
|
|
3
3
|
end
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
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,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
|
|
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::
|
|
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::
|
|
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+)
|
|
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,10 +1,13 @@
|
|
|
1
1
|
module ClientSideValidations
|
|
2
2
|
end
|
|
3
3
|
|
|
4
|
-
require 'client_side_validations/active_model'
|
|
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'
|
|
7
|
-
require 'client_side_validations/mongo_mapper'
|
|
8
|
-
require 'client_side_validations/action_view'
|
|
9
|
-
|
|
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
|
-
|
|
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 '
|
|
13
|
+
copy_file 'initializer.rb', 'config/initializers/client_side_validations.rb'
|
|
10
14
|
end
|
|
11
15
|
|
|
12
|
-
def
|
|
13
|
-
|
|
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
|
-
|
|
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
|
data/lib/generators/templates/{client_side_validations.rb → client_side_validations/initializer.rb}
RENAMED
|
@@ -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'
|
|
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 '
|
|
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
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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",
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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?
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
require 'formtastic/cases/helper'
|
|
2
2
|
|
|
3
|
-
class ClientSideValidations::Formtastic::
|
|
3
|
+
class ClientSideValidations::Formtastic::FormBuilderTest < Test::Unit::TestCase
|
|
4
4
|
def test_client_side_form_js_hash
|
|
5
5
|
expected = {
|
|
6
|
-
:type => 'Formtastic::
|
|
6
|
+
:type => 'Formtastic::FormBuilder',
|
|
7
7
|
:inline_error_class => 'inline-errors'
|
|
8
8
|
}
|
|
9
|
-
assert_equal expected, Formtastic::
|
|
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::
|
|
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="✓" /><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"
|
|
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="✓" /><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::
|
|
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+/}}
|
data/test/javascript/server.rb
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,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
|
data/test/test_loader.rb
ADDED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Rails 3 Client Side Validations - v3.0
|
|
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
|
|
@@ -300,7 +300,7 @@ var clientSideValidations = {
|
|
|
300
300
|
data[name] = element.val();
|
|
301
301
|
|
|
302
302
|
if (jQuery.ajax({
|
|
303
|
-
url: '/validators/uniqueness
|
|
303
|
+
url: '/validators/uniqueness',
|
|
304
304
|
data: data,
|
|
305
305
|
async: false
|
|
306
306
|
}).status == 200) {
|
|
@@ -360,7 +360,7 @@ var clientSideValidations = {
|
|
|
360
360
|
}
|
|
361
361
|
|
|
362
362
|
},
|
|
363
|
-
'Formtastic::
|
|
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
|
+
version: 3.1.0
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Brian Cardarella
|
|
@@ -19,9 +19,9 @@ dependencies:
|
|
|
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: 3.0.
|
|
24
|
+
version: 3.1.0.rc4
|
|
25
25
|
type: :development
|
|
26
26
|
version_requirements: *id001
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
@@ -96,9 +96,9 @@ dependencies:
|
|
|
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:
|
|
101
|
+
version: 2.0.0.rc3
|
|
102
102
|
type: :development
|
|
103
103
|
version_requirements: *id008
|
|
104
104
|
- !ruby/object:Gem::Dependency
|
|
@@ -186,6 +186,8 @@ files:
|
|
|
186
186
|
- lib/client_side_validations/core_ext.rb
|
|
187
187
|
- lib/client_side_validations/core_ext/range.rb
|
|
188
188
|
- lib/client_side_validations/core_ext/regexp.rb
|
|
189
|
+
- lib/client_side_validations/engine.rb
|
|
190
|
+
- lib/client_side_validations/files.rb
|
|
189
191
|
- lib/client_side_validations/formtastic.rb
|
|
190
192
|
- lib/client_side_validations/middleware.rb
|
|
191
193
|
- lib/client_side_validations/mongo_mapper.rb
|
|
@@ -196,9 +198,11 @@ files:
|
|
|
196
198
|
- lib/client_side_validations/mongoid/uniqueness.rb
|
|
197
199
|
- lib/client_side_validations/simple_form.rb
|
|
198
200
|
- lib/client_side_validations/version.rb
|
|
201
|
+
- lib/generators/client_side_validations/copy_asset_generator.rb
|
|
199
202
|
- lib/generators/client_side_validations/install_generator.rb
|
|
200
|
-
- lib/generators/templates/README
|
|
201
|
-
- lib/generators/templates/client_side_validations.
|
|
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
|
|
202
206
|
- vendor/assets/javascripts/rails.validations.js
|
|
203
207
|
- test/action_view/cases/helper.rb
|
|
204
208
|
- test/action_view/cases/test_helpers.rb
|
|
@@ -229,7 +233,7 @@ files:
|
|
|
229
233
|
- test/formtastic/cases/helper.rb
|
|
230
234
|
- test/formtastic/cases/test_form_builder.rb
|
|
231
235
|
- test/formtastic/cases/test_form_helper.rb
|
|
232
|
-
- test/generators/cases/
|
|
236
|
+
- test/generators/cases/test_generators.rb
|
|
233
237
|
- test/javascript/config.ru
|
|
234
238
|
- test/javascript/public/test/callbacks/elementAfter.js
|
|
235
239
|
- test/javascript/public/test/callbacks/elementBefore.js
|
|
@@ -275,6 +279,7 @@ files:
|
|
|
275
279
|
- test/simple_form/cases/helper.rb
|
|
276
280
|
- test/simple_form/cases/test_form_builder.rb
|
|
277
281
|
- test/simple_form/cases/test_form_helper.rb
|
|
282
|
+
- test/test_loader.rb
|
|
278
283
|
has_rdoc: true
|
|
279
284
|
homepage: https://github.com/bcardarella/client_side_validations
|
|
280
285
|
licenses: []
|
|
@@ -333,7 +338,7 @@ test_files:
|
|
|
333
338
|
- test/formtastic/cases/helper.rb
|
|
334
339
|
- test/formtastic/cases/test_form_builder.rb
|
|
335
340
|
- test/formtastic/cases/test_form_helper.rb
|
|
336
|
-
- test/generators/cases/
|
|
341
|
+
- test/generators/cases/test_generators.rb
|
|
337
342
|
- test/javascript/config.ru
|
|
338
343
|
- test/javascript/public/test/callbacks/elementAfter.js
|
|
339
344
|
- test/javascript/public/test/callbacks/elementBefore.js
|
|
@@ -379,3 +384,4 @@ test_files:
|
|
|
379
384
|
- test/simple_form/cases/helper.rb
|
|
380
385
|
- test/simple_form/cases/test_form_builder.rb
|
|
381
386
|
- test/simple_form/cases/test_form_helper.rb
|
|
387
|
+
- test/test_loader.rb
|
|
@@ -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
|
-
|