muck-shares 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. data/.gitignore +24 -0
  2. data/Rakefile +4 -4
  3. data/VERSION +1 -1
  4. data/muck-shares.gemspec +10 -34
  5. data/test/rails_root/Rakefile +2 -1
  6. data/test/rails_root/app/models/profile.rb +3 -0
  7. data/test/rails_root/app/models/user.rb +1 -1
  8. data/test/rails_root/config/environment.rb +8 -6
  9. data/test/rails_root/config/environments/test.rb +0 -14
  10. data/test/rails_root/db/migrate/20090512013727_create_profiles.rb +21 -0
  11. data/test/rails_root/test/test_helper.rb +5 -42
  12. data/test/rails_root/test/unit/share_test.rb +2 -0
  13. metadata +9 -32
  14. data/test/rails_root/Capfile +0 -3
  15. data/test/rails_root/test/factories.rb +0 -75
  16. data/test/rails_root/test/mocks/development/.keep +0 -0
  17. data/test/rails_root/test/mocks/test/.keep +0 -0
  18. data/test/rails_root/test/shoulda_macros/controller.rb +0 -49
  19. data/test/rails_root/test/shoulda_macros/forms.rb +0 -32
  20. data/test/rails_root/test/shoulda_macros/models.rb +0 -50
  21. data/test/rails_root/test/shoulda_macros/pagination.rb +0 -53
  22. data/test/rails_root/test/shoulda_macros/plugins.rb +0 -34
  23. data/test/rails_root/vendor/plugins/validation_reflection/CHANGELOG +0 -24
  24. data/test/rails_root/vendor/plugins/validation_reflection/LICENSE +0 -20
  25. data/test/rails_root/vendor/plugins/validation_reflection/README +0 -64
  26. data/test/rails_root/vendor/plugins/validation_reflection/Rakefile +0 -22
  27. data/test/rails_root/vendor/plugins/validation_reflection/about.yml +0 -7
  28. data/test/rails_root/vendor/plugins/validation_reflection/init.rb +0 -8
  29. data/test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb +0 -129
  30. data/test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb +0 -36
  31. data/test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb +0 -126
data/.gitignore CHANGED
@@ -1,5 +1,29 @@
1
+ **/*.pid
2
+ log/*.log
3
+ log/*.pid
4
+ tmp
5
+ .DS_Store
6
+ public/cache/**/*
7
+ public/system/**/*
8
+ doc/**/*
9
+ db/*.sqlite3
10
+ .project
11
+ .loadpath
12
+ nbproject/
13
+ .idea
14
+ testjour.log
15
+ *.so
16
+ *.o
17
+ Makefile
18
+ mkmf.log
19
+ *.bundle
20
+ conftest
21
+ content/
22
+ .idea
23
+ *.sw?
1
24
  .DS_Store
2
25
  coverage
3
26
  rdoc
4
27
  pkg
28
+ pkg/*
5
29
  log/*
data/Rakefile CHANGED
@@ -49,10 +49,10 @@ begin
49
49
  Jeweler::Tasks.new do |gemspec|
50
50
  gemspec.name = "muck-shares"
51
51
  gemspec.summary = "The share engine for the muck system"
52
- gemspec.email = "justinball@gmail.com"
53
- gemspec.homepage = "http://github.com/jbasdf/muck_shares"
52
+ gemspec.email = "justin@tatemae.com"
53
+ gemspec.homepage = "http://github.com/tatemae/muck_shares"
54
54
  gemspec.description = "The share engine for the muck system."
55
- gemspec.authors = ["Justin Ball"]
55
+ gemspec.authors = ["Justin Ball", "Joel Duffin"]
56
56
  gemspec.rubyforge_project = 'muck-shares'
57
57
  gemspec.add_dependency "muck-engine"
58
58
  gemspec.add_dependency "muck-users"
@@ -64,5 +64,5 @@ begin
64
64
  rubyforge.doc_task = "rdoc"
65
65
  end
66
66
  rescue LoadError
67
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
67
+ puts "Jeweler not available. Install it with: sudo gem install jeweler"
68
68
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.7
1
+ 0.1.8
data/muck-shares.gemspec CHANGED
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-shares}
8
- s.version = "0.1.7"
8
+ s.version = "0.1.8"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Justin Ball"]
12
- s.date = %q{2009-10-27}
11
+ s.authors = ["Justin Ball", "Joel Duffin"]
12
+ s.date = %q{2009-11-13}
13
13
  s.description = %q{The share engine for the muck system.}
14
- s.email = %q{justinball@gmail.com}
14
+ s.email = %q{justin@tatemae.com}
15
15
  s.extra_rdoc_files = [
16
16
  "README.rdoc"
17
17
  ]
@@ -87,7 +87,6 @@ Gem::Specification.new do |s|
87
87
  "tasks/muck_shares_tasks.rake",
88
88
  "test/rails_root/.gitignore",
89
89
  "test/rails_root/.rake_tasks",
90
- "test/rails_root/Capfile",
91
90
  "test/rails_root/Rakefile",
92
91
  "test/rails_root/app/controllers/application_controller.rb",
93
92
  "test/rails_root/app/controllers/default_controller.rb",
@@ -95,6 +94,7 @@ Gem::Specification.new do |s|
95
94
  "test/rails_root/app/models/.keep",
96
95
  "test/rails_root/app/models/activity.rb",
97
96
  "test/rails_root/app/models/comment.rb",
97
+ "test/rails_root/app/models/profile.rb",
98
98
  "test/rails_root/app/models/share.rb",
99
99
  "test/rails_root/app/models/user.rb",
100
100
  "test/rails_root/app/models/user_session.rb",
@@ -120,6 +120,7 @@ Gem::Specification.new do |s|
120
120
  "test/rails_root/db/migrate/20090402234137_create_languages.rb",
121
121
  "test/rails_root/db/migrate/20090426041056_create_countries.rb",
122
122
  "test/rails_root/db/migrate/20090426041103_create_states.rb",
123
+ "test/rails_root/db/migrate/20090512013727_create_profiles.rb",
123
124
  "test/rails_root/db/migrate/20090602041838_create_users.rb",
124
125
  "test/rails_root/db/migrate/20090608073052_create_friends.rb",
125
126
  "test/rails_root/db/migrate/20090613173314_create_comments.rb",
@@ -308,16 +309,8 @@ Gem::Specification.new do |s|
308
309
  "test/rails_root/script/process/spawner",
309
310
  "test/rails_root/script/runner",
310
311
  "test/rails_root/script/server",
311
- "test/rails_root/test/factories.rb",
312
312
  "test/rails_root/test/functional/.keep",
313
313
  "test/rails_root/test/functional/shares_controller_test.rb",
314
- "test/rails_root/test/mocks/development/.keep",
315
- "test/rails_root/test/mocks/test/.keep",
316
- "test/rails_root/test/shoulda_macros/controller.rb",
317
- "test/rails_root/test/shoulda_macros/forms.rb",
318
- "test/rails_root/test/shoulda_macros/models.rb",
319
- "test/rails_root/test/shoulda_macros/pagination.rb",
320
- "test/rails_root/test/shoulda_macros/plugins.rb",
321
314
  "test/rails_root/test/test_helper.rb",
322
315
  "test/rails_root/test/unit/.keep",
323
316
  "test/rails_root/test/unit/share_test.rb",
@@ -325,18 +318,9 @@ Gem::Specification.new do |s|
325
318
  "test/rails_root/vendor/plugins/ssl_requirement/README",
326
319
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
327
320
  "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb",
328
- "test/rails_root/vendor/plugins/validation_reflection/CHANGELOG",
329
- "test/rails_root/vendor/plugins/validation_reflection/LICENSE",
330
- "test/rails_root/vendor/plugins/validation_reflection/README",
331
- "test/rails_root/vendor/plugins/validation_reflection/Rakefile",
332
- "test/rails_root/vendor/plugins/validation_reflection/about.yml",
333
- "test/rails_root/vendor/plugins/validation_reflection/init.rb",
334
- "test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb",
335
- "test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb",
336
- "test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb",
337
321
  "uninstall.rb"
338
322
  ]
339
- s.homepage = %q{http://github.com/jbasdf/muck_shares}
323
+ s.homepage = %q{http://github.com/tatemae/muck_shares}
340
324
  s.rdoc_options = ["--charset=UTF-8"]
341
325
  s.require_paths = ["lib"]
342
326
  s.rubyforge_project = %q{muck-shares}
@@ -348,6 +332,7 @@ Gem::Specification.new do |s|
348
332
  "test/rails_root/app/helpers/application_helper.rb",
349
333
  "test/rails_root/app/models/activity.rb",
350
334
  "test/rails_root/app/models/comment.rb",
335
+ "test/rails_root/app/models/profile.rb",
351
336
  "test/rails_root/app/models/share.rb",
352
337
  "test/rails_root/app/models/user.rb",
353
338
  "test/rails_root/app/models/user_session.rb",
@@ -367,6 +352,7 @@ Gem::Specification.new do |s|
367
352
  "test/rails_root/db/migrate/20090402234137_create_languages.rb",
368
353
  "test/rails_root/db/migrate/20090426041056_create_countries.rb",
369
354
  "test/rails_root/db/migrate/20090426041103_create_states.rb",
355
+ "test/rails_root/db/migrate/20090512013727_create_profiles.rb",
370
356
  "test/rails_root/db/migrate/20090602041838_create_users.rb",
371
357
  "test/rails_root/db/migrate/20090608073052_create_friends.rb",
372
358
  "test/rails_root/db/migrate/20090613173314_create_comments.rb",
@@ -383,22 +369,12 @@ Gem::Specification.new do |s|
383
369
  "test/rails_root/features/support/paths.rb",
384
370
  "test/rails_root/public/dispatch.rb",
385
371
  "test/rails_root/script/create_project.rb",
386
- "test/rails_root/test/factories.rb",
387
372
  "test/rails_root/test/functional/shares_controller_test.rb",
388
- "test/rails_root/test/shoulda_macros/controller.rb",
389
- "test/rails_root/test/shoulda_macros/forms.rb",
390
- "test/rails_root/test/shoulda_macros/models.rb",
391
- "test/rails_root/test/shoulda_macros/pagination.rb",
392
- "test/rails_root/test/shoulda_macros/plugins.rb",
393
373
  "test/rails_root/test/test_helper.rb",
394
374
  "test/rails_root/test/unit/share_test.rb",
395
375
  "test/rails_root/test/unit/user_test.rb",
396
376
  "test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb",
397
- "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb",
398
- "test/rails_root/vendor/plugins/validation_reflection/init.rb",
399
- "test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb",
400
- "test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb",
401
- "test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb"
377
+ "test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb"
402
378
  ]
403
379
 
404
380
  if s.respond_to? :specification_version then
@@ -13,4 +13,5 @@ require 'muck_shares/tasks'
13
13
  require 'muck_engine/tasks'
14
14
  require 'muck_users/tasks'
15
15
  require 'muck_activities/tasks'
16
- require 'muck_comments/tasks'
16
+ require 'muck_comments/tasks'
17
+ require 'muck_profiles/tasks'
@@ -0,0 +1,3 @@
1
+ class Profile < ActiveRecord::Base
2
+ acts_as_muck_profile
3
+ end
@@ -6,7 +6,7 @@ class User < ActiveRecord::Base
6
6
  acts_as_muck_user
7
7
  acts_as_muck_sharer
8
8
  has_activities
9
-
9
+ has_muck_profile
10
10
  def feed_to
11
11
  self
12
12
  end
@@ -1,4 +1,4 @@
1
- RAILS_GEM_VERSION = '2.3.3' unless defined? RAILS_GEM_VERSION
1
+ RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION
2
2
 
3
3
  require File.join(File.dirname(__FILE__), 'boot')
4
4
 
@@ -15,16 +15,18 @@ end
15
15
 
16
16
  Rails::Initializer.run do |config|
17
17
  config.time_zone = 'UTC'
18
- config.gem 'mislav-will_paginate', :lib => 'will_paginate', :source => 'http://gems.github.com'
18
+ config.gem "will_paginate"
19
19
  config.gem "binarylogic-authlogic", :lib => 'authlogic', :source => 'http://gems.github.com', :version => ">=2.1.1"
20
- config.gem "binarylogic-searchlogic", :lib => 'searchlogic', :source => 'http://gems.github.com', :version => '~> 2.1.1'
20
+ config.gem "searchlogic"
21
21
  config.gem "bcrypt-ruby", :lib => "bcrypt", :version => ">=2.0.5"
22
- config.gem 'mbleigh-acts-as-taggable-on', :lib => "acts-as-taggable-on", :source => "http://gems.github.com"
23
- config.gem "collectiveidea-awesome_nested_set", :lib => 'awesome_nested_set', :source => "http://gems.github.com"
24
- config.gem "friendly_id", :version => '>=2.1.3'
22
+ config.gem "acts-as-taggable-on"
23
+ config.gem "awesome_nested_set"
24
+ config.gem "friendly_id"
25
+ config.gem "paperclip"
25
26
  config.gem "babelphish"
26
27
  config.gem 'muck-engine', :lib => 'muck_engine'
27
28
  config.gem 'muck-users', :lib => 'muck_users'
29
+ config.gem 'muck-profiles', :lib => 'muck_profiles'
28
30
  config.gem 'muck-activities', :lib => 'muck_activities'
29
31
  config.gem 'muck-comments', :lib => 'muck_comments'
30
32
  config.plugin_locators << TestGemLocator
@@ -26,17 +26,3 @@ HOST = "localhost"
26
26
  # This is necessary if your schema can't be completely dumped by the schema dumper,
27
27
  # like if you have constraints or database-specific column types
28
28
  # config.active_record.schema_format = :sql
29
-
30
- config.gem 'thoughtbot-factory_girl', :lib => 'factory_girl', :source => 'http://gems.github.com'
31
- config.gem 'thoughtbot-shoulda', :lib => 'shoulda', :source => 'http://gems.github.com'
32
- config.gem 'treetop', :version => '>=1.2.4'
33
- config.gem 'term-ansicolor', :version => '>=1.0.3', :lib => 'term/ansicolor'
34
- config.gem 'polyglot', :version => '>=0.2.4'
35
- config.gem "rcov", :version => '>=0.8.1.2.0'
36
-
37
- # only required if you want to use selenium for testing
38
- config.gem 'selenium-client', :lib => 'selenium/client'
39
- config.gem 'bmabey-database_cleaner', :lib => 'database_cleaner', :source => 'http://gems.github.com'
40
-
41
- require 'factory_girl'
42
- begin require 'redgreen'; rescue LoadError; end
@@ -0,0 +1,21 @@
1
+ class CreateProfiles < ActiveRecord::Migration
2
+
3
+ def self.up
4
+
5
+ create_table :profiles, :force => true do |t|
6
+ t.integer :user_id
7
+ t.string :photo_file_name
8
+ t.string :photo_content_type
9
+ t.integer :photo_file_size
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :profiles, ['user_id']
14
+
15
+ end
16
+
17
+ def self.down
18
+ drop_table :profiles
19
+ end
20
+
21
+ end
@@ -1,48 +1,11 @@
1
1
  $:.reject! { |e| e.include? 'TextMate' }
2
2
  ENV["RAILS_ENV"] = "test"
3
3
  require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
4
- require 'test_help'
5
- require 'ruby-debug'
6
- gem 'thoughtbot-factory_girl' # from github
7
- require 'factory_girl'
4
+ gem 'muck-engine'
5
+ require 'muck_test_helper'
8
6
  require 'authlogic/test_case'
9
- require 'redgreen' rescue LoadError
10
- require File.expand_path(File.dirname(__FILE__) + '/factories')
11
- require File.join(File.dirname(__FILE__), 'shoulda_macros', 'controller')
12
- require File.join(File.dirname(__FILE__), 'shoulda_macros', 'models')
13
-
14
- class ActiveSupport::TestCase
15
- self.use_transactional_fixtures = true
16
- self.use_instantiated_fixtures = false
17
7
 
8
+ class ActiveSupport::TestCase
9
+ include MuckTestMethods
18
10
  include Authlogic::TestCase
19
-
20
- def login_as(user)
21
- success = UserSession.create(user)
22
- if !success
23
- errors = user.errors.full_messages.to_sentence
24
- message = 'User has not been activated' if !user.active?
25
- raise "could not login as #{user.to_param}. Please make sure the user is valid. #{message} #{errors}"
26
- end
27
- UserSession.find
28
- end
29
-
30
- def assure_logout
31
- user_session = UserSession.find
32
- user_session.destroy if user_session
33
- end
34
-
35
- def ensure_flash(val)
36
- assert_contains flash.values, val, ", Flash: #{flash.inspect}"
37
- end
38
-
39
- # For Selenium
40
- # setup do |session|
41
- # session.host! "localhost:3001"
42
- # end
43
-
44
- def make_parent_params(parent)
45
- { :parent_id => parent.id, :parent_type => parent.class.to_s }
46
- end
47
-
48
- end
11
+ end
@@ -10,6 +10,8 @@ class ShareTest < ActiveSupport::TestCase
10
10
  @share.save!
11
11
  end
12
12
 
13
+ subject { @share }
14
+
13
15
  should_validate_presence_of :uri
14
16
 
15
17
  should_belong_to :shared_by
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-shares
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
8
+ - Joel Duffin
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
12
 
12
- date: 2009-10-27 00:00:00 -06:00
13
+ date: 2009-11-13 00:00:00 -07:00
13
14
  default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
@@ -53,7 +54,7 @@ dependencies:
53
54
  version: "0"
54
55
  version:
55
56
  description: The share engine for the muck system.
56
- email: justinball@gmail.com
57
+ email: justin@tatemae.com
57
58
  executables: []
58
59
 
59
60
  extensions: []
@@ -132,7 +133,6 @@ files:
132
133
  - tasks/muck_shares_tasks.rake
133
134
  - test/rails_root/.gitignore
134
135
  - test/rails_root/.rake_tasks
135
- - test/rails_root/Capfile
136
136
  - test/rails_root/Rakefile
137
137
  - test/rails_root/app/controllers/application_controller.rb
138
138
  - test/rails_root/app/controllers/default_controller.rb
@@ -140,6 +140,7 @@ files:
140
140
  - test/rails_root/app/models/.keep
141
141
  - test/rails_root/app/models/activity.rb
142
142
  - test/rails_root/app/models/comment.rb
143
+ - test/rails_root/app/models/profile.rb
143
144
  - test/rails_root/app/models/share.rb
144
145
  - test/rails_root/app/models/user.rb
145
146
  - test/rails_root/app/models/user_session.rb
@@ -165,6 +166,7 @@ files:
165
166
  - test/rails_root/db/migrate/20090402234137_create_languages.rb
166
167
  - test/rails_root/db/migrate/20090426041056_create_countries.rb
167
168
  - test/rails_root/db/migrate/20090426041103_create_states.rb
169
+ - test/rails_root/db/migrate/20090512013727_create_profiles.rb
168
170
  - test/rails_root/db/migrate/20090602041838_create_users.rb
169
171
  - test/rails_root/db/migrate/20090608073052_create_friends.rb
170
172
  - test/rails_root/db/migrate/20090613173314_create_comments.rb
@@ -353,16 +355,8 @@ files:
353
355
  - test/rails_root/script/process/spawner
354
356
  - test/rails_root/script/runner
355
357
  - test/rails_root/script/server
356
- - test/rails_root/test/factories.rb
357
358
  - test/rails_root/test/functional/.keep
358
359
  - test/rails_root/test/functional/shares_controller_test.rb
359
- - test/rails_root/test/mocks/development/.keep
360
- - test/rails_root/test/mocks/test/.keep
361
- - test/rails_root/test/shoulda_macros/controller.rb
362
- - test/rails_root/test/shoulda_macros/forms.rb
363
- - test/rails_root/test/shoulda_macros/models.rb
364
- - test/rails_root/test/shoulda_macros/pagination.rb
365
- - test/rails_root/test/shoulda_macros/plugins.rb
366
360
  - test/rails_root/test/test_helper.rb
367
361
  - test/rails_root/test/unit/.keep
368
362
  - test/rails_root/test/unit/share_test.rb
@@ -370,18 +364,9 @@ files:
370
364
  - test/rails_root/vendor/plugins/ssl_requirement/README
371
365
  - test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb
372
366
  - test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb
373
- - test/rails_root/vendor/plugins/validation_reflection/CHANGELOG
374
- - test/rails_root/vendor/plugins/validation_reflection/LICENSE
375
- - test/rails_root/vendor/plugins/validation_reflection/README
376
- - test/rails_root/vendor/plugins/validation_reflection/Rakefile
377
- - test/rails_root/vendor/plugins/validation_reflection/about.yml
378
- - test/rails_root/vendor/plugins/validation_reflection/init.rb
379
- - test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb
380
- - test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb
381
- - test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb
382
367
  - uninstall.rb
383
368
  has_rdoc: true
384
- homepage: http://github.com/jbasdf/muck_shares
369
+ homepage: http://github.com/tatemae/muck_shares
385
370
  licenses: []
386
371
 
387
372
  post_install_message:
@@ -414,6 +399,7 @@ test_files:
414
399
  - test/rails_root/app/helpers/application_helper.rb
415
400
  - test/rails_root/app/models/activity.rb
416
401
  - test/rails_root/app/models/comment.rb
402
+ - test/rails_root/app/models/profile.rb
417
403
  - test/rails_root/app/models/share.rb
418
404
  - test/rails_root/app/models/user.rb
419
405
  - test/rails_root/app/models/user_session.rb
@@ -433,6 +419,7 @@ test_files:
433
419
  - test/rails_root/db/migrate/20090402234137_create_languages.rb
434
420
  - test/rails_root/db/migrate/20090426041056_create_countries.rb
435
421
  - test/rails_root/db/migrate/20090426041103_create_states.rb
422
+ - test/rails_root/db/migrate/20090512013727_create_profiles.rb
436
423
  - test/rails_root/db/migrate/20090602041838_create_users.rb
437
424
  - test/rails_root/db/migrate/20090608073052_create_friends.rb
438
425
  - test/rails_root/db/migrate/20090613173314_create_comments.rb
@@ -449,19 +436,9 @@ test_files:
449
436
  - test/rails_root/features/support/paths.rb
450
437
  - test/rails_root/public/dispatch.rb
451
438
  - test/rails_root/script/create_project.rb
452
- - test/rails_root/test/factories.rb
453
439
  - test/rails_root/test/functional/shares_controller_test.rb
454
- - test/rails_root/test/shoulda_macros/controller.rb
455
- - test/rails_root/test/shoulda_macros/forms.rb
456
- - test/rails_root/test/shoulda_macros/models.rb
457
- - test/rails_root/test/shoulda_macros/pagination.rb
458
- - test/rails_root/test/shoulda_macros/plugins.rb
459
440
  - test/rails_root/test/test_helper.rb
460
441
  - test/rails_root/test/unit/share_test.rb
461
442
  - test/rails_root/test/unit/user_test.rb
462
443
  - test/rails_root/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb
463
444
  - test/rails_root/vendor/plugins/ssl_requirement/test/ssl_requirement_test.rb
464
- - test/rails_root/vendor/plugins/validation_reflection/init.rb
465
- - test/rails_root/vendor/plugins/validation_reflection/lib/boiler_plate/validation_reflection.rb
466
- - test/rails_root/vendor/plugins/validation_reflection/test/test_helper.rb
467
- - test/rails_root/vendor/plugins/validation_reflection/test/validation_reflection_test.rb
@@ -1,3 +0,0 @@
1
- load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
- Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
- load 'config/deploy'
@@ -1,75 +0,0 @@
1
- Factory.sequence :email do |n|
2
- "somebody#{n}@example.com"
3
- end
4
-
5
- Factory.sequence :login do |n|
6
- "inquire#{n}"
7
- end
8
-
9
- Factory.sequence :name do |n|
10
- "a_name#{n}"
11
- end
12
-
13
- Factory.sequence :title do |n|
14
- "a_title#{n}"
15
- end
16
-
17
- Factory.sequence :abbr do |n|
18
- "abbr#{n}"
19
- end
20
-
21
- Factory.sequence :description do |n|
22
- "This is the description: #{n}"
23
- end
24
-
25
- Factory.sequence :uri do |n|
26
- "n#{n}.example.com"
27
- end
28
-
29
- Factory.define :state do |f|
30
- f.name { Factory.next(:name) }
31
- f.abbreviation { Factory.next(:abbr) }
32
- f.country {|a| a.association(:country) }
33
- end
34
-
35
- Factory.define :country do |f|
36
- f.name { Factory.next(:name) }
37
- f.abbreviation { Factory.next(:abbr) }
38
- end
39
-
40
- Factory.define :user do |f|
41
- f.login { Factory.next(:login) }
42
- f.email { Factory.next(:email) }
43
- f.password 'inquire_pass'
44
- f.password_confirmation 'inquire_pass'
45
- f.first_name 'test'
46
- f.last_name 'guy'
47
- f.terms_of_service true
48
- f.activated_at DateTime.now
49
- end
50
-
51
- Factory.define :permission do |f|
52
- f.role {|a| a.association(:role)}
53
- f.user {|a| a.association(:user)}
54
- end
55
-
56
- Factory.define :role do |f|
57
- f.rolename 'administrator'
58
- end
59
-
60
- Factory.define :share do |f|
61
- f.uri { Factory.next(:uri) }
62
- f.title { Factory.next(:title) }
63
- f.shared_by {|a| a.association(:user)}
64
- end
65
-
66
- Factory.define :domain_theme do |f|
67
- f.name { Factory.next(:name) }
68
- f.uri { Factory.next(:uri) }
69
- end
70
-
71
- Factory.define :theme do |f|
72
- f.name { Factory.next(:name) }
73
- end
74
-
75
-
File without changes
File without changes
@@ -1,49 +0,0 @@
1
- module MuckControllerMacros
2
-
3
- def should_require_login(*args)
4
- args = Hash[*args]
5
- login_url = args.delete :login_url
6
- args.each do |action, verb|
7
- should "Require login for '#{action}' action" do
8
- if [:put, :delete].include?(verb) # put and delete require an id even if it is a bogus one
9
- send(verb, action, :id => 1)
10
- else
11
- send(verb, action)
12
- end
13
- assert_redirected_to(login_url)
14
- end
15
- end
16
- end
17
-
18
- def should_require_role(role, redirect_url, *actions)
19
- actions.each do |action|
20
- should "require role for '#{action}' action" do
21
- get(action)
22
- ensure_flash(/permission/i)
23
- assert_response :redirect
24
- end
25
- end
26
- end
27
-
28
- #from: http://blog.internautdesign.com/2008/9/11/more-on-custom-shoulda-macros-scoping-of-instance-variables
29
- def should_not_allow action, object, url= "/login", msg=nil
30
- msg ||= "a #{object.class.to_s.downcase}"
31
- should "not be able to #{action} #{msg}" do
32
- object = eval(object, self.send(:binding), __FILE__, __LINE__)
33
- get action, :id => object.id
34
- assert_redirected_to url
35
- end
36
- end
37
-
38
- def should_allow action, object, msg=nil
39
- msg ||= "a #{object.class.to_s.downcase}"
40
- should "be able to #{action} #{msg}" do
41
- object = eval(object, self.send(:binding), __FILE__, __LINE__)
42
- get action, :id => object.id
43
- assert_response :success
44
- end
45
- end
46
-
47
- end
48
-
49
- ActionController::TestCase.extend(MuckControllerMacros)
@@ -1,32 +0,0 @@
1
- module ShouldaFormMacros
2
- def self.should_have_form(opts)
3
- model = self.name.gsub(/ControllerTest$/, '').singularize.downcase
4
- model = model[model.rindex('::')+2..model.size] if model.include?('::')
5
- http_method, hidden_http_method = form_http_method opts[:method]
6
- should "have a #{model} form" do
7
- assert_select "form[action=?][method=#{http_method}]", eval(opts[:action]) do
8
- if hidden_http_method
9
- assert_select "input[type=hidden][name=_method][value=#{hidden_http_method}]"
10
- end
11
- opts[:fields].each do |attribute, type|
12
- attribute = attribute.is_a?(Symbol) ? "#{model}[#{attribute.to_s}]" : attribute
13
- assert_select "input[type=#{type.to_s}][name=?]", attribute
14
- end
15
- assert_select "input[type=submit]"
16
- end
17
- end
18
- end
19
-
20
- def self.form_http_method(http_method)
21
- http_method = http_method.nil? ? 'post' : http_method.to_s
22
- if http_method == "post" || http_method == "get"
23
- return http_method, nil
24
- else
25
- return "post", http_method
26
- end
27
- end
28
- end
29
-
30
- class ActiveSupport::TestCase
31
- extend ShouldaFormMacros
32
- end
@@ -1,50 +0,0 @@
1
- module ShouldaModelMacros
2
-
3
- def should_sanitize(*attributes)
4
- bad_scripts = [
5
- %|';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//";alert(String.fromCharCode(88,83,83))//--></SCRIPT>">'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>|,
6
- %|'';!--"<XSS>=&{()}|,
7
- %|<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>|,
8
- %|<IMG SRC="javascript:alert('XSS');">|,
9
- %|<IMG SRC=javascript:alert('XSS')>|,
10
- %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
11
- %|<IMG SRC=JaVaScRiPt:alert('XSS')>|,
12
- %|<IMG SRC=`javascript:alert("RSnake says, 'XSS'")`>|,
13
- %|<IMG """><SCRIPT>alert("XSS")</SCRIPT>">|,
14
- %|<IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>|,
15
- %|<A HREF="h
16
- tt p://6&#9;6.000146.0x7.147/">XSS</A>|,
17
- %|<script>alert('message');</script>| ]
18
-
19
- klass = model_class
20
- attributes.each do |attribute|
21
- attribute = attribute.to_sym
22
- should "white list #{attribute}" do
23
- assert object = klass.find(:first), "Can't find first #{klass}"
24
- bad_scripts.each do |bad_value|
25
- object.send("#{attribute}=", bad_value)
26
- object.save
27
- clean_value = object.send("#{attribute}")
28
- assert !clean_value.include?(bad_value), "#{attribute} is not white listed. #{bad_value} made it through"
29
- end
30
- end
31
- end
32
- end
33
-
34
- def should_accept_nested_attributes_for(*attr_names)
35
- klass = self.name.gsub(/Test$/, '').constantize
36
-
37
- context "#{klass}" do
38
- attr_names.each do |association_name|
39
- should "accept nested attrs for #{association_name}" do
40
- assert klass.instance_methods.include?("#{association_name}_attributes="),
41
- "#{klass} does not accept nested attributes for #{association_name}"
42
- end
43
- end
44
- end
45
- end
46
- end
47
-
48
- class ActiveSupport::TestCase
49
- extend ShouldaModelMacros
50
- end
@@ -1,53 +0,0 @@
1
- module ShouldaPaginationMacros
2
- # Example:
3
- # context "a GET to index logged in as admin" do
4
- # setup do
5
- # login_as_admin
6
- # get :index
7
- # end
8
- # should_paginate_collection :users
9
- # should_display_pagination
10
- # end
11
- def self.should_paginate_collection(collection_name)
12
- should "paginate #{collection_name}" do
13
- assert collection = assigns(collection_name),
14
- "Controller isn't assigning to @#{collection_name.to_s}."
15
- assert_kind_of WillPaginate::Collection, collection,
16
- "@#{collection_name.to_s} isn't a WillPaginate collection."
17
- end
18
- end
19
-
20
- def self.should_display_pagination
21
- should "display pagination" do
22
- assert_select "div.pagination", { :minimum => 1 },
23
- "View isn't displaying pagination. Add <%= will_paginate @collection %>."
24
- end
25
- end
26
-
27
- # Example:
28
- # context "a GET to index not logged in as admin" do
29
- # setup { get :index }
30
- # should_not_paginate_collection :users
31
- # should_not_display_pagination
32
- # end
33
- def self.should_not_paginate_collection(collection_name)
34
- should "not paginate #{collection_name}" do
35
- assert collection = assigns(collection_name),
36
- "Controller isn't assigning to @#{collection_name.to_s}."
37
- assert_not_equal WillPaginate::Collection, collection.class,
38
- "@#{collection_name.to_s} is a WillPaginate collection."
39
- end
40
- end
41
-
42
- def self.should_not_display_pagination
43
- should "not display pagination" do
44
- assert_select "div.pagination", { :count => 0 },
45
- "View is displaying pagination. Check your logic."
46
- end
47
- end
48
- end
49
-
50
-
51
- class ActiveSupport::TestCase
52
- extend ShouldaPaginationMacros
53
- end
@@ -1,34 +0,0 @@
1
- module ShouldaPluginMacros
2
-
3
- def self.should_act_as_taggable_on_steroids
4
- klass = self.name.gsub(/Test$/, '').constantize
5
-
6
- should "include ActsAsTaggableOnSteroids methods" do
7
- assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::ClassMethods)
8
- assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::SingletonMethods)
9
- assert klass.include?(ActiveRecord::Acts::Taggable::InstanceMethods)
10
- end
11
-
12
- should_have_many :taggings, :tags
13
- end
14
-
15
-
16
- def self.should_act_as_list
17
- klass = self.name.gsub(/Test$/, '').constantize
18
-
19
- context "To support acts_as_list" do
20
- should_have_db_column('position', :type => :integer)
21
- end
22
-
23
- should "include ActsAsList methods" do
24
- assert klass.include?(ActiveRecord::Acts::List::InstanceMethods)
25
- end
26
-
27
- should_have_instance_methods :acts_as_list_class, :position_column, :scope_condition
28
- end
29
-
30
- end
31
-
32
- ActiveSupport::TestCase.extend(ShouldaPluginMacros)
33
- Test::Unit::TestCase.extend(ShouldaPluginMacros)
34
- ActionController::TestCase.extend(ShouldaPluginMacros)
@@ -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