muck-contents 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -63,9 +63,9 @@ begin
63
63
  gemspec.add_dependency "muck-engine"
64
64
  gemspec.add_dependency "muck-users"
65
65
  gemspec.add_dependency "muck-comments"
66
- gemspec.add_dependency "collectiveidea-awesome_nested_set"
67
- gemspec.add_dependency "rgrove-sanitize"
68
- gemspec.add_dependency "mbleigh-acts-as-taggable-on"
66
+ gemspec.add_dependency "awesome_nested_set"
67
+ gemspec.add_dependency "sanitize"
68
+ gemspec.add_dependency "acts-as-taggable-on"
69
69
  gemspec.add_dependency "friendly_id"
70
70
  end
71
71
  Jeweler::GemcutterTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.8
1
+ 0.1.9
@@ -1,9 +1,9 @@
1
1
  module MuckContentsHelper
2
2
 
3
3
  # share is an optional share object that can be used to pre populate the form.
4
- # options:
5
- # html options for form:
6
- # :html => {:id => 'a form'}
4
+ # content: Optional content object to be edited.
5
+ # options: html options for form. For example:
6
+ # :html => {:id => 'a form'}
7
7
  def content_form(content = nil, options = {}, &block)
8
8
  content ||= Content.new
9
9
  options[:html] = {} if options[:html].nil?
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-contents}
8
- s.version = "0.1.8"
8
+ s.version = "0.1.9"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Ball"]
12
- s.date = %q{2009-10-27}
12
+ s.date = %q{2009-10-29}
13
13
  s.email = %q{justinball@gmail.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -573,16 +573,7 @@ Gem::Specification.new do |s|
573
573
  "test/rails_root/test/unit/user_test.rb",
574
574
  "test/rails_root/vendor/plugins/ssl_requirement/README",
575
575
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
576
- "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb",
577
- "test/rails_root/vendor/plugins/validation_reflection/CHANGELOG",
578
- "test/rails_root/vendor/plugins/validation_reflection/LICENSE",
579
- "test/rails_root/vendor/plugins/validation_reflection/README",
580
- "test/rails_root/vendor/plugins/validation_reflection/Rakefile",
581
- "test/rails_root/vendor/plugins/validation_reflection/about.yml",
582
- "test/rails_root/vendor/plugins/validation_reflection/init.rb",
583
- "test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb",
584
- "test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb",
585
- "test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb"
576
+ "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb"
586
577
  ]
587
578
  s.homepage = %q{http://github.com/jbasdf/muck_contents}
588
579
  s.rdoc_options = ["--charset=UTF-8"]
@@ -644,11 +635,7 @@ Gem::Specification.new do |s|
644
635
  "test/rails_root/test/unit/content_translation_test.rb",
645
636
  "test/rails_root/test/unit/user_test.rb",
646
637
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
647
- "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb",
648
- "test/rails_root/vendor/plugins/validation_reflection/init.rb",
649
- "test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb",
650
- "test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb",
651
- "test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb"
638
+ "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb"
652
639
  ]
653
640
 
654
641
  if s.respond_to? :specification_version then
@@ -659,26 +646,26 @@ Gem::Specification.new do |s|
659
646
  s.add_runtime_dependency(%q<muck-engine>, [">= 0"])
660
647
  s.add_runtime_dependency(%q<muck-users>, [">= 0"])
661
648
  s.add_runtime_dependency(%q<muck-comments>, [">= 0"])
662
- s.add_runtime_dependency(%q<collectiveidea-awesome_nested_set>, [">= 0"])
663
- s.add_runtime_dependency(%q<rgrove-sanitize>, [">= 0"])
664
- s.add_runtime_dependency(%q<mbleigh-acts-as-taggable-on>, [">= 0"])
649
+ s.add_runtime_dependency(%q<awesome_nested_set>, [">= 0"])
650
+ s.add_runtime_dependency(%q<sanitize>, [">= 0"])
651
+ s.add_runtime_dependency(%q<acts-as-taggable-on>, [">= 0"])
665
652
  s.add_runtime_dependency(%q<friendly_id>, [">= 0"])
666
653
  else
667
654
  s.add_dependency(%q<muck-engine>, [">= 0"])
668
655
  s.add_dependency(%q<muck-users>, [">= 0"])
669
656
  s.add_dependency(%q<muck-comments>, [">= 0"])
670
- s.add_dependency(%q<collectiveidea-awesome_nested_set>, [">= 0"])
671
- s.add_dependency(%q<rgrove-sanitize>, [">= 0"])
672
- s.add_dependency(%q<mbleigh-acts-as-taggable-on>, [">= 0"])
657
+ s.add_dependency(%q<awesome_nested_set>, [">= 0"])
658
+ s.add_dependency(%q<sanitize>, [">= 0"])
659
+ s.add_dependency(%q<acts-as-taggable-on>, [">= 0"])
673
660
  s.add_dependency(%q<friendly_id>, [">= 0"])
674
661
  end
675
662
  else
676
663
  s.add_dependency(%q<muck-engine>, [">= 0"])
677
664
  s.add_dependency(%q<muck-users>, [">= 0"])
678
665
  s.add_dependency(%q<muck-comments>, [">= 0"])
679
- s.add_dependency(%q<collectiveidea-awesome_nested_set>, [">= 0"])
680
- s.add_dependency(%q<rgrove-sanitize>, [">= 0"])
681
- s.add_dependency(%q<mbleigh-acts-as-taggable-on>, [">= 0"])
666
+ s.add_dependency(%q<awesome_nested_set>, [">= 0"])
667
+ s.add_dependency(%q<sanitize>, [">= 0"])
668
+ s.add_dependency(%q<acts-as-taggable-on>, [">= 0"])
682
669
  s.add_dependency(%q<friendly_id>, [">= 0"])
683
670
  end
684
671
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-contents
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-27 00:00:00 -06:00
12
+ date: 2009-10-29 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: "0"
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
- name: collectiveidea-awesome_nested_set
46
+ name: awesome_nested_set
47
47
  type: :runtime
48
48
  version_requirement:
49
49
  version_requirements: !ruby/object:Gem::Requirement
@@ -53,7 +53,7 @@ dependencies:
53
53
  version: "0"
54
54
  version:
55
55
  - !ruby/object:Gem::Dependency
56
- name: rgrove-sanitize
56
+ name: sanitize
57
57
  type: :runtime
58
58
  version_requirement:
59
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +63,7 @@ dependencies:
63
63
  version: "0"
64
64
  version:
65
65
  - !ruby/object:Gem::Dependency
66
- name: mbleigh-acts-as-taggable-on
66
+ name: acts-as-taggable-on
67
67
  type: :runtime
68
68
  version_requirement:
69
69
  version_requirements: !ruby/object:Gem::Requirement
@@ -650,15 +650,6 @@ files:
650
650
  - test/rails_root/vendor/plugins/ssl_requirement/README
651
651
  - test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb
652
652
  - test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb
653
- - test/rails_root/vendor/plugins/validation_reflection/CHANGELOG
654
- - test/rails_root/vendor/plugins/validation_reflection/LICENSE
655
- - test/rails_root/vendor/plugins/validation_reflection/README
656
- - test/rails_root/vendor/plugins/validation_reflection/Rakefile
657
- - test/rails_root/vendor/plugins/validation_reflection/about.yml
658
- - test/rails_root/vendor/plugins/validation_reflection/init.rb
659
- - test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb
660
- - test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb
661
- - test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb
662
653
  has_rdoc: true
663
654
  homepage: http://github.com/jbasdf/muck_contents
664
655
  licenses: []
@@ -742,7 +733,3 @@ test_files:
742
733
  - test/rails_root/test/unit/user_test.rb
743
734
  - test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb
744
735
  - test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb
745
- - test/rails_root/vendor/plugins/validation_reflection/init.rb
746
- - test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb
747
- - test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb
748
- - test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb
@@ -1,24 +0,0 @@
1
-
2
- == 0.3.1, 2008-01-03
3
- * require 'ostruct'; thanks to Georg Friedrich.
4
-
5
- == 0.3, 2008-01-01
6
- * Added configurability in config/plugins/validation_reflection.rb
7
-
8
- == 0.2.1, 2006-12-28
9
- * Moved lib files into subfolder boiler_plate.
10
-
11
- == 0.2, 2006-08-06
12
- ?
13
-
14
- = Deprecation Notice
15
-
16
- Version 0.1 had supplied three methods
17
-
18
- - validates_presence_of_mandatory_content_columns
19
- - validates_lengths_of_string_attributes
20
- - validates_all_associated
21
-
22
- These have been removed. Please use the Enforce Schema Rules plugin instead
23
-
24
- http://enforce-schema-rules.googlecode.com/svn/trunk/enforce_schema_rules/
@@ -1,20 +0,0 @@
1
- Copyright (c) 2006 Michael Schuerig
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,64 +0,0 @@
1
- Validation Reflection
2
- =====================
3
-
4
- Version 0.3.1, 2008-01-03
5
-
6
- This plugin adds reflective access to validations
7
-
8
- - ModelClass.reflect_on_all_validations
9
- - ModelClass.reflect_on_validations_for(:property)
10
-
11
- Both of these methods return arrays containing instances of
12
- ActiveRecord::Reflection::MacroReflection. For example
13
-
14
- class Person < ActiveRecord::Base
15
- validates_presence_of :name
16
- validates_numericality_of :size, :only_integer => true
17
- end
18
-
19
- refl = Person.reflect_on_validations_for(:name)
20
- refl[0].macro
21
- # => :validates_presence_of
22
-
23
- refl = Person.reflect_on_validations_for(:size)
24
- refl[0].macro
25
- # => :validates_numericality_of
26
- refl[0].options
27
- # => { :only_integer => true }
28
-
29
-
30
- == Customization
31
-
32
- Usually, all the standard Rails validations are reflected.
33
- You can change this -- add or remove validations -- in an
34
- application-specific configuration file,
35
-
36
- config/plugins/validation_reflection.rb
37
-
38
- In that file change config.reflected_validations to suit your
39
- needs. Say, you have a custom validation for email addresses,
40
- validates_as_email, then you could add it like this
41
-
42
- config.reflected_validations << :validates_as_email
43
-
44
- If validates_as_email is implemented in terms of other validation
45
- methods, these validations are added to the reflection metadata,
46
- too. As that may not be what you want, you can disable reflection
47
- for these subordinate validations
48
-
49
- config.reflected_validations << {
50
- :method => :validates_as_email,
51
- :ignore_subvalidations => true
52
- }
53
-
54
- You have to make sure that all reflected validations are defined
55
- before this plugin is loaded. To this end, you may have to
56
- explicitly set the load order of plugins somewhere in the environment
57
- configuration using
58
-
59
- config.plugins = [...]
60
-
61
-
62
-
63
-
64
- Copyright (c) 2006-2008, Michael Schuerig, michael@schuerig.de
@@ -1,22 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test the validation_reflection plugin.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.pattern = 'test/**/*_test.rb'
12
- t.verbose = true
13
- end
14
-
15
- desc 'Generate documentation for the validation_reflection plugin.'
16
- Rake::RDocTask.new(:rdoc) do |rdoc|
17
- rdoc.rdoc_dir = 'rdoc'
18
- rdoc.title = 'ValidationReflection'
19
- rdoc.options << '--line-numbers' << '--inline-source'
20
- rdoc.rdoc_files.include('README')
21
- rdoc.rdoc_files.include('lib/**/*.rb')
22
- end
@@ -1,7 +0,0 @@
1
- author: Michael Schuerig
2
- summary: Reflection on validations
3
- homepage: http://rubyforge.org/projects/valirefl/validation_reflection/trunk
4
- plugin: validation_reflection
5
- license: MIT
6
- version: 0.3.1
7
- rails_version: >= 1.1.6
@@ -1,8 +0,0 @@
1
-
2
- require 'boiler_plate/validation_reflection'
3
-
4
- ActiveRecord::Base.class_eval do
5
- include BoilerPlate::ActiveRecordExtensions::ValidationReflection
6
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.load_config
7
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.install(self)
8
- end
@@ -1,129 +0,0 @@
1
- #--
2
- # Copyright (c) 2006-2008, Michael Schuerig, michael@schuerig.de
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
-
25
- require 'active_record/reflection'
26
- require 'ostruct'
27
-
28
- # Based on code by Sebastian Kanthak
29
- # See http://dev.rubyonrails.org/ticket/861
30
- module BoilerPlate # :nodoc:
31
- module ActiveRecordExtensions # :nodoc:
32
- module ValidationReflection # :nodoc:
33
- CONFIG_PATH = File.join(RAILS_ROOT, 'config', 'plugins', 'validation_reflection.rb')
34
-
35
- mattr_accessor :reflected_validations
36
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.reflected_validations = %w(
37
- validates_acceptance_of
38
- validates_associated
39
- validates_confirmation_of
40
- validates_exclusion_of
41
- validates_format_of
42
- validates_inclusion_of
43
- validates_length_of
44
- validates_numericality_of
45
- validates_presence_of
46
- validates_uniqueness_of
47
- )
48
-
49
- mattr_accessor :in_ignored_subvalidation
50
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.in_ignored_subvalidation = false
51
-
52
- def self.included(base)
53
- return if base.kind_of?(BoilerPlate::ActiveRecordExtensions::ValidationReflection::ClassMethods)
54
- base.extend(ClassMethods)
55
- end
56
-
57
- def self.load_config
58
- if File.file?(CONFIG_PATH)
59
- config = OpenStruct.new
60
- config.reflected_validations = reflected_validations
61
- silence_warnings do
62
- eval(IO.read(CONFIG_PATH), binding, CONFIG_PATH)
63
- end
64
- end
65
- end
66
-
67
- def self.install(base)
68
- reflected_validations.freeze
69
- reflected_validations.each do |validation_type|
70
- next if base.respond_to?("#{validation_type}_with_reflection")
71
- ignore_subvalidations = false
72
- if validation_type.kind_of?(Hash)
73
- ignore_subvalidations = validation_type[:ignore_subvalidations]
74
- validation_type = validation_type[:method]
75
- end
76
- base.class_eval <<-"end_eval"
77
- class << self
78
- def #{validation_type}_with_reflection(*attr_names)
79
- ignoring_subvalidations(#{ignore_subvalidations}) do
80
- #{validation_type}_without_reflection(*attr_names)
81
- remember_validation_metadata(:#{validation_type}, *attr_names)
82
- end
83
- end
84
-
85
- alias_method_chain :#{validation_type}, :reflection
86
- end
87
- end_eval
88
- end
89
- end
90
-
91
- module ClassMethods
92
-
93
- # Returns an array of MacroReflection objects for all validations in the class
94
- def reflect_on_all_validations
95
- read_inheritable_attribute(:validations) || []
96
- end
97
-
98
- # Returns an array of MacroReflection objects for all validations defined for the field +attr_name+.
99
- def reflect_on_validations_for(attr_name)
100
- attr_name = attr_name.to_sym
101
- reflect_on_all_validations.select do |reflection|
102
- reflection.name == attr_name
103
- end
104
- end
105
-
106
- private
107
-
108
- def remember_validation_metadata(validation_type, *attr_names)
109
- configuration = attr_names.last.is_a?(Hash) ? attr_names.pop : {}
110
- attr_names.each do |attr_name|
111
- write_inheritable_array :validations,
112
- [ ActiveRecord::Reflection::MacroReflection.new(validation_type, attr_name.to_sym, configuration, self) ]
113
- end
114
- end
115
-
116
- def ignoring_subvalidations(ignore)
117
- save_ignore = BoilerPlate::ActiveRecordExtensions::ValidationReflection.in_ignored_subvalidation
118
- unless BoilerPlate::ActiveRecordExtensions::ValidationReflection.in_ignored_subvalidation
119
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.in_ignored_subvalidation = ignore
120
- yield
121
- end
122
- ensure
123
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.in_ignored_subvalidation = save_ignore
124
- end
125
- end
126
-
127
- end
128
- end
129
- end
@@ -1,36 +0,0 @@
1
-
2
- ENV["RAILS_ENV"] = "test"
3
- RAILS_ROOT = File.join(File.dirname(__FILE__), '../../../..')
4
-
5
- $:.unshift File.join(File.dirname(__FILE__), '../lib')
6
- $:.unshift File.join(RAILS_ROOT, 'lib')
7
- $:.unshift File.join(RAILS_ROOT, 'vendor/rails/activerecord/lib')
8
- $:.unshift File.join(RAILS_ROOT, 'vendor/rails/actionpack/lib')
9
- $:.unshift File.join(RAILS_ROOT, 'vendor/rails/activesupport/lib')
10
-
11
-
12
- require 'test/unit'
13
- require 'logger'
14
- require 'active_support'
15
- require 'active_record'
16
- require 'action_controller'
17
- require 'action_controller/assertions'
18
- require 'html/document'
19
-
20
- require 'ruby-debug'
21
-
22
- RAILS_DEFAULT_LOGGER = Logger.new(STDERR)
23
- ### TODO why is this necessary?
24
- ActionController::Base.logger = RAILS_DEFAULT_LOGGER
25
- ActiveRecord::Base.logger = RAILS_DEFAULT_LOGGER
26
- ActiveRecord::Base.colorize_logging = false
27
-
28
-
29
- def with_log_level(level)
30
- old_level = RAILS_DEFAULT_LOGGER.level
31
- RAILS_DEFAULT_LOGGER.level = level
32
- yield
33
- ensure
34
- RAILS_DEFAULT_LOGGER.level = old_level
35
- end
36
-
@@ -1,126 +0,0 @@
1
-
2
- $:.unshift File.join(File.dirname(__FILE__))
3
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
4
-
5
- require 'test_helper'
6
-
7
- ActiveRecord::Base.class_eval do
8
- def self.validates_something_weird(*cols)
9
- cols.each do |col|
10
- validates_format_of col, :with => /weird/
11
- end
12
- end
13
- def self.validates_something_selfcontained(*cols)
14
- cols.each do |col|
15
- validates_format_of col, :with => /blablabla/
16
- end
17
- end
18
- end
19
-
20
- require 'boiler_plate/validation_reflection'
21
-
22
- ActiveRecord::Base.class_eval do
23
- include BoilerPlate::ActiveRecordExtensions::ValidationReflection
24
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.reflected_validations << :validates_something_weird
25
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.reflected_validations << {
26
- :method => :validates_something_selfcontained,
27
- :ignore_subvalidations => true
28
- }
29
- BoilerPlate::ActiveRecordExtensions::ValidationReflection.install(self)
30
- end
31
-
32
-
33
- class ValidationReflectionTest < Test::Unit::TestCase
34
-
35
- class Dummy < ActiveRecord::Base
36
- class << self
37
-
38
- def create_fake_column(name, null = true, limit = nil)
39
- sql_type = limit ? "varchar (#{limit})" : nil
40
- col = ActiveRecord::ConnectionAdapters::Column.new(name, nil, sql_type, null)
41
- col
42
- end
43
-
44
- def columns
45
- [
46
- create_fake_column('col0'),
47
- create_fake_column('col1'),
48
- create_fake_column('col2', false, 100),
49
- create_fake_column('col3'),
50
- create_fake_column('col4'),
51
- create_fake_column('col5'),
52
- create_fake_column('col6'),
53
- create_fake_column('col7')
54
- ]
55
- end
56
- end
57
-
58
- has_one :nothing
59
-
60
- validates_presence_of :col1
61
- validates_length_of :col2, :maximum => 100
62
- validates_format_of :col3, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
63
- validates_numericality_of :col4, :only_integer => true
64
- validates_numericality_of :col5, :less_than => 5
65
- validates_something_weird :col6
66
- validates_something_selfcontained :col7
67
- end
68
-
69
-
70
- def test_sanity
71
- assert_equal [], Dummy.reflect_on_validations_for(:col0)
72
- end
73
-
74
- def test_validates_presence_of_is_reflected
75
- refls = Dummy.reflect_on_validations_for(:col1)
76
- assert refls.all? { |r| r.name.to_s == 'col1' }
77
- assert refls.find { |r| r.macro == :validates_presence_of }
78
- end
79
-
80
- def test_string_limit_is_reflected
81
- refls = Dummy.reflect_on_validations_for(:col2)
82
- assert refls.any? { |r| r.macro == :validates_length_of && r.options[:maximum] == 100 }
83
- end
84
-
85
- def test_format_is_reflected
86
- refls = Dummy.reflect_on_validations_for(:col3)
87
- assert refls.any? { |r| r.macro == :validates_format_of && r.options[:with] == /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i }
88
- end
89
-
90
- def test_numeric_integer_is_reflected
91
- refls = Dummy.reflect_on_validations_for(:col4)
92
- assert refls.any? { |r| r.macro == :validates_numericality_of && r.options[:only_integer] }
93
- end
94
-
95
- def test_numeric_is_reflected
96
- refls = Dummy.reflect_on_validations_for(:col5)
97
- assert refls.any? { |r| r.macro == :validates_numericality_of }
98
- end
99
-
100
- def test_validation_options_are_reflected
101
- refls = Dummy.reflect_on_validations_for(:col5)
102
- refl = refls[0]
103
- assert_equal 5, refl.options[:less_than]
104
- end
105
-
106
- def test_custom_validations_are_reflected
107
- refls = Dummy.reflect_on_validations_for(:col6)
108
- assert refls.any? { |r| r.macro == :validates_something_weird }
109
- assert refls.any? { |r| r.macro == :validates_format_of }
110
- end
111
-
112
- def test_custom_validations_with_options_are_reflected
113
- refls = Dummy.reflect_on_validations_for(:col7)
114
- assert refls.any? { |r| r.macro == :validates_something_selfcontained }
115
- end
116
-
117
- def test_subvalidations_are_reflected
118
- refls = Dummy.reflect_on_validations_for(:col6)
119
- assert_equal 2, refls.size
120
- end
121
-
122
- def test_ignored_subvalidations_are_not_reflected
123
- refls = Dummy.reflect_on_validations_for(:col7)
124
- assert_equal 1, refls.size
125
- end
126
- end