refinerycms 0.9.6.7 → 0.9.6.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/Gemfile +13 -0
  2. data/VERSION +1 -1
  3. data/config/application.rb +92 -0
  4. data/config/environment.rb +4 -74
  5. data/config/preinitializer.rb +7 -4
  6. data/db/schema.rb +1 -1
  7. data/lib/attachment_fu_patch.rb +16 -0
  8. data/public/.htaccess +3 -3
  9. data/public/javascripts/refinery/admin.js +6 -1
  10. data/test/files/teng.pdf +0 -0
  11. data/test/fixtures/inquiries.yml +22 -0
  12. data/test/fixtures/news_items.yml +14 -0
  13. data/test/fixtures/pages.yml +10 -4
  14. data/test/fixtures/refinery_settings.yml +3 -0
  15. data/test/fixtures/resources.yml +4 -0
  16. data/test/fixtures/themes.yml +5 -0
  17. data/test/unit/image_test.rb +4 -2
  18. data/test/unit/inquiry_test.rb +41 -0
  19. data/test/unit/news_items_test.rb +33 -0
  20. data/test/unit/page_test.rb +12 -9
  21. data/test/unit/refinery_setting_test.rb +57 -0
  22. data/test/unit/resource_test.rb +33 -0
  23. data/test/unit/theme_test.rb +19 -0
  24. data/todo.md +9 -0
  25. data/vendor/cache/aasm-2.1.3.gem +0 -0
  26. data/vendor/cache/actionmailer-2.3.5.gem +0 -0
  27. data/vendor/cache/actionpack-2.3.5.gem +0 -0
  28. data/vendor/cache/activerecord-2.3.5.gem +0 -0
  29. data/vendor/cache/activeresource-2.3.5.gem +0 -0
  30. data/vendor/cache/activesupport-2.3.5.gem +0 -0
  31. data/vendor/cache/friendly_id-2.3.1.gem +0 -0
  32. data/vendor/cache/hpricot-0.8.2.gem +0 -0
  33. data/vendor/cache/rack-1.0.1.gem +0 -0
  34. data/vendor/cache/rails-2.3.5.gem +0 -0
  35. data/vendor/cache/rake-0.8.7.gem +0 -0
  36. data/vendor/cache/rubyzip-0.9.1.gem +0 -0
  37. data/vendor/cache/slim_scrooge-1.0.3.gem +0 -0
  38. data/vendor/cache/will_paginate-2.3.11.gem +0 -0
  39. data/vendor/plugins/authentication/app/models/user.rb +1 -0
  40. data/vendor/plugins/images/app/models/image.rb +23 -15
  41. data/vendor/plugins/images/rails/init.rb +1 -1
  42. data/vendor/plugins/inquiries/app/controllers/admin/inquiries_controller.rb +1 -1
  43. data/vendor/plugins/inquiries/app/models/inquiry.rb +6 -9
  44. data/vendor/plugins/inquiries/rails/init.rb +1 -1
  45. data/vendor/plugins/news/app/controllers/admin/news_items_controller.rb +1 -1
  46. data/vendor/plugins/news/app/controllers/news_items_controller.rb +3 -3
  47. data/vendor/plugins/news/app/models/news_item.rb +6 -8
  48. data/vendor/plugins/news/app/views/admin/news_items/_form.html.erb +4 -4
  49. data/vendor/plugins/news/app/views/admin/news_items/_news_item.html.erb +5 -4
  50. data/vendor/plugins/news/app/views/admin/news_items/edit.html.erb +1 -1
  51. data/vendor/plugins/news/rails/init.rb +1 -1
  52. data/vendor/plugins/pages/app/models/page.rb +2 -2
  53. data/vendor/plugins/pages/rails/init.rb +1 -1
  54. data/vendor/plugins/refinery/app/views/admin/_head.html.erb +2 -9
  55. data/vendor/plugins/refinery/app/views/shared/_content_page.html.erb +7 -6
  56. data/vendor/plugins/refinery/app/views/shared/_head.html.erb +1 -0
  57. data/vendor/plugins/refinery/app/views/shared/_menu_branch.html.erb +1 -1
  58. data/vendor/plugins/refinery/lib/crud.rb +2 -2
  59. data/vendor/plugins/refinery/lib/refinery/application_controller.rb +15 -15
  60. data/vendor/plugins/refinery/lib/refinery/application_helper.rb +12 -0
  61. data/vendor/plugins/refinery/lib/refinery/plugin.rb +1 -1
  62. data/vendor/plugins/refinery/plugins.md +2 -2
  63. data/vendor/plugins/refinery_settings/app/models/refinery_setting.rb +40 -18
  64. data/vendor/plugins/refinery_settings/rails/init.rb +1 -2
  65. data/vendor/plugins/resources/app/models/resource.rb +10 -2
  66. data/vendor/plugins/themes/app/models/theme.rb +1 -1
  67. data/vendor/plugins/themes/lib/theme_server.rb +13 -4
  68. data/vendor/plugins/themes/rails/init.rb +12 -1
  69. metadata +36 -2
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ # Please add your gems above the Refinery required gems here:
2
+
3
+ #===REFINERY REQUIRED GEMS===
4
+ source "http://gemcutter.org"
5
+ gem "aasm", ">= 2.1.3", :require => "aasm"
6
+ gem "friendly_id", ">= 2.2.2", :require => "friendly_id"
7
+ gem "hpricot", ">= 0.8.1", :require => "hpricot"
8
+ gem "slim_scrooge", ">= 1.0.3", :require => "slim_scrooge" unless RUBY_PLATFORM =~ /mswin|mingw/ # kill gem requirement when windows is running.
9
+ gem "will_paginate", ">= 2.3.11", :require => "will_paginate"
10
+ gem "rails", ">= 2.3.5", :require => "rails"
11
+ gem "rubyzip", ">= 0.9.1", :require => "zip/zip"
12
+ gem "rake", ">= 0.8.3", :require => "rake"
13
+ #===REFINERY END OF REQUIRED GEMS===
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.6.7
1
+ 0.9.6.8
@@ -0,0 +1,92 @@
1
+ if defined?(Rails::Application)
2
+ module Refinery
3
+ class Application < Rails::Application
4
+ config.action_controller.session = {
5
+ :session_key => '_refinery_session',
6
+ :secret => 'eec8fffc3637c05895f8e6a355179eaad0003ac5617e5368955baf7989e1faca4d8ab37140d690c20b05d5815609b7c680c644277b6a892be316a85c6596d75c'
7
+ }
8
+ end
9
+
10
+ def gem_version
11
+ #0.9.6
12
+ end
13
+ end
14
+ else
15
+ # Be sure to restart your server when you modify this file
16
+
17
+ # Uncomment below to force Rails into production mode when
18
+ # you don't control web/app server and can't set it the proper way
19
+ # ENV['RAILS_ENV'] ||= 'production'
20
+
21
+ # Specifies gem version of Rails to use when vendor/rails is not present
22
+ RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
23
+ # Freeze to a specific version of refinerycms when running as a gem
24
+ # REFINERY_GEM_VERSION = '0.9.6' unless defined? REFINERY_GEM_VERSION
25
+
26
+ # Bootstrap the Rails environment, frameworks, and default configuration
27
+ require File.join(File.dirname(__FILE__), 'boot')
28
+
29
+ eval("#{(defined? Refinery::Initializer) ? Refinery : Rails}::Initializer").run do |config|
30
+ # Settings in config/environments/* take precedence over those specified here.
31
+ # Application configuration should go into files in config/initializers
32
+ # -- all .rb files in that directory are automatically loaded.
33
+ # See Rails::Configuration for more options.
34
+
35
+ # Skip frameworks you're not going to use (only works if using vendor/rails).
36
+ # To use Rails without a database, you must remove the Active Record framework
37
+ # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
38
+
39
+ # Only load the plugins named here, in the order given. By default, all plugins
40
+ # in vendor/plugins are loaded in alphabetical order.
41
+ # :all can be used as a placeholder for all plugins not explicitly named
42
+ # config.plugins = [ :authentication, :acts_as_tree, :attachment_fu, :all ]
43
+
44
+ # Add additional load paths for your own custom dirs
45
+ # config.load_paths += %W( #{RAILS_ROOT}/extras )
46
+
47
+ # Force all environments to use the same logger level
48
+ # (by default production uses :info, the others :debug)
49
+ # config.log_level = :debug
50
+
51
+ # Your secret key for verifying cookie session data integrity.
52
+ # If you change this key, all old sessions will become invalid!
53
+ # Make sure the secret is at least 30 characters and all random,
54
+ # no regular words or you'll be exposed to dictionary attacks.
55
+ config.action_controller.session = {
56
+ :session_key => '_refinery_session',
57
+ :secret => 'eec8fffc3637c05895f8e6a355179eaad0003ac5617e5368955baf7989e1faca4d8ab37140d690c20b05d5815609b7c680c644277b6a892be316a85c6596d75c'
58
+ }
59
+
60
+ # Use the database for sessions instead of the cookie-based default,
61
+ # which shouldn't be used to store highly confidential information
62
+ # (create the session table with 'rake db:sessions:create')
63
+ # config.action_controller.session_store = :active_record_store
64
+
65
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
66
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
67
+ # like if you have constraints or database-specific column types
68
+ # config.active_record.schema_format = :sql
69
+
70
+ # Activate observers that should always be running
71
+ # config.active_record.observers = :cacher, :garbage_collector
72
+
73
+ # Make Active Record use UTC-base instead of local time
74
+ # config.active_record.default_timezone = :utc
75
+ #
76
+
77
+ #===REFINERY REQUIRED GEMS===
78
+ config.gem "bundler", :version => ">= 0.9.4"
79
+ config.gem "rake", :version => ">= 0.8.3", :lib => "rake"
80
+ config.gem "rubyzip", :version => ">= 0.9.1", :lib => "zip/zip"
81
+ config.gem "friendly_id", :version => ">= 2.2.2", :lib => "friendly_id"
82
+ config.gem "will_paginate", :version => ">= 2.3.11", :lib => "will_paginate", :source => "http://gemcutter.org"
83
+ config.gem "rails", :version => ">= 2.3.5", :lib => "rails"
84
+ config.gem "aasm", :version => ">= 2.1.3", :lib => "aasm", :source => "http://gemcutter.org"
85
+ config.gem "slim_scrooge", :version => ">= 1.0.3", :lib => "slim_scrooge", :source => "http://gemcutter.org" unless RUBY_PLATFORM =~ /mswin|mingw/ # kill gem when windows is running.
86
+ config.gem "hpricot", :version => ">= 0.8.1", :lib => "hpricot", :source => "http://gemcutter.org"
87
+ #===REFINERY END OF REQUIRED GEMS===
88
+
89
+ # Pull in attachment_fu patch for windows
90
+ require 'attachment_fu_patch' if RUBY_PLATFORM =~ /mswin/
91
+ end
92
+ end
@@ -1,75 +1,5 @@
1
- # Be sure to restart your server when you modify this file
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
2
3
 
3
- # Uncomment below to force Rails into production mode when
4
- # you don't control web/app server and can't set it the proper way
5
- # ENV['RAILS_ENV'] ||= 'production'
6
-
7
- # Specifies gem version of Rails to use when vendor/rails is not present
8
- RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION
9
- # Freeze to a specific version of refinerycms when running as a gem
10
- # REFINERY_GEM_VERSION = '0.9.6' unless defined? REFINERY_GEM_VERSION
11
-
12
- # Bootstrap the Rails environment, frameworks, and default configuration
13
- require File.join(File.dirname(__FILE__), 'boot')
14
-
15
- eval("#{(defined? Refinery::Initializer) ? Refinery : Rails}::Initializer").run do |config|
16
- # Settings in config/environments/* take precedence over those specified here.
17
- # Application configuration should go into files in config/initializers
18
- # -- all .rb files in that directory are automatically loaded.
19
- # See Rails::Configuration for more options.
20
-
21
- # Skip frameworks you're not going to use (only works if using vendor/rails).
22
- # To use Rails without a database, you must remove the Active Record framework
23
- # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
24
-
25
- # Only load the plugins named here, in the order given. By default, all plugins
26
- # in vendor/plugins are loaded in alphabetical order.
27
- # :all can be used as a placeholder for all plugins not explicitly named
28
- # config.plugins = [ :authentication, :acts_as_tree, :attachment_fu, :all ]
29
-
30
- # Add additional load paths for your own custom dirs
31
- # config.load_paths += %W( #{RAILS_ROOT}/extras )
32
-
33
- # Force all environments to use the same logger level
34
- # (by default production uses :info, the others :debug)
35
- # config.log_level = :debug
36
-
37
- # Your secret key for verifying cookie session data integrity.
38
- # If you change this key, all old sessions will become invalid!
39
- # Make sure the secret is at least 30 characters and all random,
40
- # no regular words or you'll be exposed to dictionary attacks.
41
- config.action_controller.session = {
42
- :session_key => '_refinery_session',
43
- :secret => 'eec8fffc3637c05895f8e6a355179eaad0003ac5617e5368955baf7989e1faca4d8ab37140d690c20b05d5815609b7c680c644277b6a892be316a85c6596d75c'
44
- }
45
-
46
- # Use the database for sessions instead of the cookie-based default,
47
- # which shouldn't be used to store highly confidential information
48
- # (create the session table with 'rake db:sessions:create')
49
- # config.action_controller.session_store = :active_record_store
50
-
51
- # Use SQL instead of Active Record's schema dumper when creating the test database.
52
- # This is necessary if your schema can't be completely dumped by the schema dumper,
53
- # like if you have constraints or database-specific column types
54
- # config.active_record.schema_format = :sql
55
-
56
- # Activate observers that should always be running
57
- # config.active_record.observers = :cacher, :garbage_collector
58
-
59
- # Make Active Record use UTC-base instead of local time
60
- # config.active_record.default_timezone = :utc
61
- #
62
-
63
- # Please add your gems above the Refinery required gems here:
64
-
65
- #===REFINERY REQUIRED GEMS===
66
- config.gem "rake", :version => ">= 0.8.3", :lib => "rake"
67
- config.gem "rubyzip", :version => ">= 0.9.1", :lib => "zip/zip"
68
- config.gem "friendly_id", :version => ">= 2.2.2", :lib => "friendly_id"
69
- config.gem "will_paginate", :version => ">= 2.3.11", :lib => "will_paginate", :source => "http://gemcutter.org"
70
- config.gem "rails", :version => ">= 2.3.5", :lib => "rails"
71
- config.gem "aasm", :version => ">= 2.1.3", :lib => "aasm", :source => "http://gemcutter.org"
72
- config.gem "slim_scrooge", :version => ">= 1.0.3", :lib => "slim_scrooge", :source => "http://gemcutter.org" unless RUBY_PLATFORM =~ /mswin|mingw/ # kill gem when windows is running.
73
- config.gem "hpricot", :version => ">= 0.8.1", :lib => "hpricot", :source => "http://gemcutter.org"
74
- #===REFINERY END OF REQUIRED GEMS===
75
- end
4
+ # Initialize the rails application
5
+ Refinery::Application.initialize! if Rails.version.to_f >= 3.0
@@ -1,6 +1,9 @@
1
+ # until Rails 3
2
+ ENV["GEM_HOME"] = File.expand_path('../../vendor/bundler_gems', __FILE__)
3
+
1
4
  # pick the refinery root path
2
- if File.exist?(File.join(%W(#{RAILS_ROOT} lib refinery_initializer.rb)))
3
- require File.join(%W(#{RAILS_ROOT} lib refinery_initializer.rb))
5
+ if File.exist?(non_gem_path=File.join(%W(#{RAILS_ROOT} lib refinery_initializer.rb)))
6
+ require non_gem_path
4
7
  else
5
8
  require 'rubygems'
6
9
  version = if defined? REFINERY_GEM_VERSION
@@ -8,7 +11,7 @@ else
8
11
  elsif ENV.include?("REFINERY_GEM_VERSION")
9
12
  ENV["REFINERY_GEM_VERSION"]
10
13
  else
11
- $1 if File.read("#{RAILS_ROOT}/config/environment.rb") =~ /^[^#]*REFINERY_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
14
+ $1 if File.read(File.join(%W(#{RAILS_ROOT} config environment.rb))) =~ /^[^#]*REFINERY_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
12
15
  end
13
16
 
14
17
  if version
@@ -21,7 +24,7 @@ else
21
24
  end
22
25
 
23
26
 
24
- REFINERY_ROOT = Rails.root.to_s unless defined? REFINERY_ROOT
27
+ REFINERY_ROOT = RAILS_ROOT unless defined? REFINERY_ROOT
25
28
 
26
29
  # Set to true in your environment specific file (e.g. production.rb) to use Amazon's Simple
27
30
  # Storage Service instead of the default file system for resources and images
@@ -125,7 +125,7 @@ ActiveRecord::Schema.define(:version => 20100204011654) do
125
125
  t.string "filename"
126
126
  t.string "title"
127
127
  t.text "description"
128
- t.text "license"
128
+ t.text "licence"
129
129
  t.datetime "created_at"
130
130
  t.datetime "updated_at"
131
131
  end
@@ -0,0 +1,16 @@
1
+ # This patches the windows tempfile problem that attachment_fu depends on. See:
2
+ # http://epirsch.blogspot.com/2008/01/fixing-attachmentfu-on-windows-like.html
3
+
4
+ require 'tempfile'
5
+
6
+ class Tempfile
7
+ def size
8
+ if @tmpfile
9
+ @tmpfile.fsync # added this line
10
+ @tmpfile.flush
11
+ @tmpfile.stat.size
12
+ else
13
+ 0
14
+ end
15
+ end
16
+ end
@@ -5,14 +5,14 @@ Options +FollowSymLinks +ExecCGI
5
5
 
6
6
  # If you don't want Rails to look in certain directories,
7
7
  # use the following rewrite rules so that Apache won't rewrite certain requests
8
- #
8
+ #
9
9
  # Example:
10
10
  # RewriteCond %{REQUEST_URI} ^/notrails.*
11
11
  # RewriteRule .* - [L]
12
12
 
13
13
  # Redirect all requests not available on the filesystem to Rails
14
14
  # By default the cgi dispatcher is used which is very slow
15
- #
15
+ #
16
16
  # For better performance replace the dispatcher with the fastcgi one
17
17
  #
18
18
  # Example:
@@ -33,7 +33,7 @@ RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
33
33
 
34
34
  # In case Rails experiences terminal errors
35
35
  # Instead of displaying this message you can supply a file here which will be rendered instead
36
- #
36
+ #
37
37
  # Example:
38
38
  # ErrorDocument 500 /500.html
39
39
 
@@ -580,7 +580,12 @@ var list_reorder = {
580
580
 
581
581
  serialized = "";
582
582
  list_reorder.sortable_list.find('> li[id]').each(function(index, li) {
583
- serialized += list_reorder.parse_branch([index], li);
583
+ if (list_reorder.tree) {
584
+ serialized += list_reorder.parse_branch([index], li);
585
+ }
586
+ else {
587
+ serialized += "&sortable_list[]=" + $($(li).attr('id').split('_')).last().get(0);
588
+ }
584
589
  });
585
590
  serialized += "&tree=" + list_reorder.tree + "&authenticity_token=" + encodeURIComponent($('#reorder_authenticity_token').val() + "&continue_reordering=false");
586
591
 
Binary file
@@ -0,0 +1,22 @@
1
+ dave:
2
+ name: Dave
3
+ email: dave@test.com
4
+ phone: 955 955555
5
+ message: Hi - I would like to buy stuff. Please call me
6
+ open: true
7
+ created_at: <%= Date.today - 3.days %>
8
+
9
+ phil:
10
+ name: Phil
11
+ email: phil@test.com
12
+ phone: 188 8181812
13
+ message: Call me. Cheers.
14
+ open: true
15
+ created_at: <%= Date.today - 1.day %>
16
+
17
+ barry:
18
+ name: Barry
19
+ email: barryl@test.com
20
+ phone: 92393332
21
+ message: Hey I found a problem with your website. Email me to find out what is the problem.
22
+ open: false
@@ -0,0 +1,14 @@
1
+ website_launched:
2
+ title: New website launched!
3
+ body: Oh yes our brand new website is here and it is running on Refinery CMS.
4
+ publish_date: <%= Date.today - 4.days %>
5
+
6
+ new_team_member:
7
+ title: Amanda joins Resolve Digital
8
+ body: Welcome Amanda to the Resolve Digital team.
9
+ publish_date: <%= Date.today - 2.days %>
10
+
11
+ product_launch:
12
+ title: Secret new product launched
13
+ body: Oh yes our brand new website is here and it is running on Refinery CMS.
14
+ publish_date: <%= Date.today.tomorrow %>
@@ -23,7 +23,7 @@ draft_page:
23
23
  show_in_menu: true
24
24
  deletable: true
25
25
  draft: true
26
-
26
+
27
27
  # page inside draft_page
28
28
  draft_page_child:
29
29
  title: Secret information about secret product
@@ -44,6 +44,12 @@ services:
44
44
  custom_title_type: text
45
45
  custom_title: Programming Services
46
46
 
47
+ # this page links to an external URL
48
+ resolve_digital_page:
49
+ title: "Resolve Digital Ltd"
50
+ position: 6
51
+ link_url: "http://www.resolvedigital.co.nz"
52
+
47
53
  # this page is the home page
48
54
  home_page:
49
55
  title: Home Page
@@ -51,21 +57,21 @@ home_page:
51
57
  show_in_menu: true
52
58
  deletable: false
53
59
  link_url: /
54
-
60
+
55
61
  # this is a products page that has 3 children, 1 that is hidden from the menu
56
62
  products:
57
63
  title: Products
58
64
  position: 1
59
65
  show_in_menu: true
60
66
  deletable: true
61
-
67
+
62
68
  blue_jelly:
63
69
  title: Blue Jelly
64
70
  position: 0
65
71
  show_in_menu: true
66
72
  deletable: true
67
73
  parent: products
68
-
74
+
69
75
  green_jelly:
70
76
  title: Green Jelly
71
77
  position: 1
@@ -0,0 +1,3 @@
1
+ site_name:
2
+ name: site_name
3
+ value: My Site
@@ -0,0 +1,4 @@
1
+ pdf_document:
2
+ content_type: application/pdf
3
+ filename: teng.pdf
4
+ size: 52319
@@ -0,0 +1,5 @@
1
+ my_theme:
2
+ title: My Theme
3
+ description: this is my awesome theme
4
+ licence: free for all
5
+ filename: my_theme.zip
@@ -18,8 +18,10 @@ class ImageTest < ActiveSupport::TestCase
18
18
  end
19
19
 
20
20
  def test_attachment_fu_options
21
- assert_equal 50.megabytes, Image.attachment_options[:max_size]
21
+ assert_equal 20.megabytes, Image.attachment_options[:max_size]
22
+
23
+ # want to change this to ImageScience at some point. Rmagick sucks.
22
24
  assert_equal 'Rmagick', Image.attachment_options[:processor]
23
25
  end
24
26
 
25
- end
27
+ end
@@ -0,0 +1,41 @@
1
+ require 'test_helper'
2
+
3
+ class InquiryTest < ActiveSupport::TestCase
4
+
5
+ fixtures :inquiries
6
+
7
+ def setup
8
+ @new_inquiry = Inquiry.new
9
+ @bad_email_inquiry = Inquiry.new(:email => "foo.bar.com", :name => "Dave")
10
+ @valid_inquiry = Inquiry.new(:email => "foo@bar.com", :name => "Dave")
11
+ @full_valid_inquiry = Inquiry.new(:email => "foo@bar.com", :name => "Dave", :phone => "3232332", :message => "message")
12
+ end
13
+
14
+ def test_should_force_name_and_email_to_be_valid
15
+ assert !@new_inquiry.save
16
+
17
+ assert_equal "can't be blank", @new_inquiry.errors.on('name')
18
+ assert_equal "must be valid", @new_inquiry.errors.on('email')
19
+
20
+ assert_nil @new_inquiry.errors.on('phone')
21
+ assert_nil @new_inquiry.errors.on('message')
22
+
23
+ assert !@bad_email_inquiry.save
24
+ assert_equal "must be valid", @bad_email_inquiry.errors.on('email')
25
+ assert_nil @bad_email_inquiry.errors.on('phone')
26
+ assert_nil @bad_email_inquiry.errors.on('message')
27
+ assert_nil @bad_email_inquiry.errors.on('name')
28
+
29
+ assert @valid_inquiry.save
30
+ assert @full_valid_inquiry.save
31
+ end
32
+
33
+ def test_named_scopes
34
+ assert_equal 2, Inquiry.open.size
35
+ assert_equal 1, Inquiry.closed.size
36
+
37
+ # check the order. Phil is the newest person to inquire
38
+ assert_equal inquiries(:phil), Inquiry.open.first
39
+ end
40
+
41
+ end