giraffesoft-resource_controller 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. data/README.rdoc +2 -14
  2. data/VERSION.yml +4 -0
  3. data/lib/resource_controller.rb +1 -14
  4. data/lib/resource_controller/base.rb +2 -2
  5. data/lib/resource_controller/class_methods.rb +2 -2
  6. data/lib/resource_controller/helpers.rb +0 -6
  7. data/lib/resource_controller/helpers/nested.rb +1 -1
  8. data/lib/resource_controller/singleton.rb +2 -2
  9. data/test/app/controllers/cms/personnel_controller.rb +2 -0
  10. data/test/app/controllers/cms/photos_controller.rb +6 -0
  11. data/test/app/controllers/photos_controller.rb +1 -0
  12. data/test/app/models/personnel.rb +3 -0
  13. data/test/app/models/photo.rb +1 -0
  14. data/test/app/views/cms/photos/edit.rhtml +17 -0
  15. data/test/app/views/cms/photos/index.rhtml +20 -0
  16. data/test/app/views/cms/photos/new.rhtml +16 -0
  17. data/test/app/views/cms/photos/show.rhtml +8 -0
  18. data/test/config/database.yml +6 -10
  19. data/test/config/environment.rb +4 -4
  20. data/test/config/environments/development.rb +0 -1
  21. data/test/config/initializers/inflections.rb +14 -0
  22. data/test/config/routes.rb +3 -0
  23. data/test/db/migrate/013_create_personnel.rb +11 -0
  24. data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  25. data/test/db/schema.rb +9 -3
  26. data/test/test/fixtures/personnel.yml +5 -0
  27. data/test/test/functional/cms/options_controller_test.rb +1 -1
  28. data/test/test/functional/cms/photos_controller_test.rb +43 -0
  29. data/test/test/functional/cms/products_controller_test.rb +1 -1
  30. data/test/test/functional/comments_controller_test.rb +1 -1
  31. data/test/test/functional/images_controller_test.rb +1 -1
  32. data/test/test/functional/people_controller_test.rb +1 -1
  33. data/test/test/functional/photos_controller_test.rb +1 -1
  34. data/test/test/functional/posts_controller_test.rb +1 -1
  35. data/test/test/functional/projects_controller_test.rb +1 -1
  36. data/test/test/functional/somethings_controller_test.rb +1 -1
  37. data/test/test/functional/tags_controller_test.rb +1 -1
  38. data/test/test/functional/users_controller_test.rb +1 -1
  39. data/test/test/test_helper.rb +1 -1
  40. data/test/test/unit/accessors_test.rb +2 -2
  41. data/test/test/unit/account_test.rb +1 -1
  42. data/test/test/unit/action_options_test.rb +1 -1
  43. data/test/test/unit/base_test.rb +1 -1
  44. data/test/test/unit/comment_test.rb +1 -1
  45. data/test/test/unit/failable_action_options_test.rb +1 -1
  46. data/test/test/unit/helpers_test.rb +1 -1
  47. data/test/test/unit/image_test.rb +1 -1
  48. data/test/test/unit/option_test.rb +1 -1
  49. data/test/test/unit/photo_test.rb +1 -1
  50. data/test/test/unit/post_test.rb +1 -1
  51. data/test/test/unit/project_test.rb +1 -1
  52. data/test/test/unit/response_collector_test.rb +1 -1
  53. data/test/test/unit/something_test.rb +1 -1
  54. data/test/test/unit/tag_test.rb +1 -1
  55. data/test/test/unit/urligence_test.rb +1 -1
  56. data/test/vendor/gems/{resource_controller-0.5.2 → resource_controller-10.0.0} +0 -0
  57. metadata +57 -69
  58. data/LICENSE +0 -22
  59. data/Rakefile +0 -35
  60. data/init.rb +0 -1
  61. data/lib/resource_controller/version.rb +0 -9
  62. data/test/vendor/plugins/shoulda/Rakefile +0 -32
  63. data/test/vendor/plugins/shoulda/bin/convert_to_should_syntax +0 -40
  64. data/test/vendor/plugins/shoulda/init.rb +0 -3
  65. data/test/vendor/plugins/shoulda/lib/shoulda.rb +0 -43
  66. data/test/vendor/plugins/shoulda/lib/shoulda/active_record_helpers.rb +0 -580
  67. data/test/vendor/plugins/shoulda/lib/shoulda/color.rb +0 -77
  68. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/controller_tests.rb +0 -467
  69. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/html.rb +0 -201
  70. data/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/xml.rb +0 -170
  71. data/test/vendor/plugins/shoulda/lib/shoulda/gem/proc_extensions.rb +0 -14
  72. data/test/vendor/plugins/shoulda/lib/shoulda/gem/shoulda.rb +0 -239
  73. data/test/vendor/plugins/shoulda/lib/shoulda/general.rb +0 -118
  74. data/test/vendor/plugins/shoulda/lib/shoulda/private_helpers.rb +0 -22
data/README.rdoc CHANGED
@@ -4,21 +4,9 @@ resource_controller makes RESTful controllers easier, more maintainable, and sup
4
4
 
5
5
  == Get It
6
6
 
7
- Add it as a gem dependency
7
+ Install it as a plugin:
8
8
 
9
- config.gem 'resource_controller'
10
-
11
- ...or for the development version
12
-
13
- config.gem 'giraffesoft-resource_controller', :lib => 'resource_controller', :source => 'http://gems.github.com'
14
-
15
- Or install it as a gem manually
16
-
17
- sudo gem install resource_controller
18
-
19
- ...or for the development version
20
-
21
- sudo gem install giraffesoft-resource_controller
9
+ script/plugin install git://github.com/giraffesoft/resource_controller.git
22
10
 
23
11
  Or grab the source
24
12
 
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :patch: 5
3
+ :major: 0
4
+ :minor: 5
@@ -1,17 +1,4 @@
1
- $LOAD_PATH << File.dirname(__FILE__) unless $LOAD_PATH.include?(File.dirname(__FILE__))
2
- require 'application'
3
- require 'resource_controller/accessors'
4
- require 'resource_controller/action_options'
5
- require 'resource_controller/actions'
6
- require 'resource_controller/base'
7
- require 'resource_controller/class_methods'
8
- require 'resource_controller/controller'
9
- require 'resource_controller/failable_action_options'
10
- require 'resource_controller/helpers'
11
- require 'resource_controller/response_collector'
12
- require 'resource_controller/singleton'
13
- require 'resource_controller/version'
14
- require 'urligence'
1
+ require_dependency 'application'
15
2
 
16
3
  module ResourceController
17
4
  ACTIONS = [:index, :show, :new_action, :create, :edit, :update, :destroy].freeze
@@ -4,7 +4,7 @@ module ResourceController
4
4
  #
5
5
  # Inherit from this class to create your RESTful controller. See the README for usage.
6
6
  #
7
- class Base < ApplicationController
7
+ class Base < ::ApplicationController
8
8
  unloadable
9
9
 
10
10
  def self.inherited(subclass)
@@ -12,4 +12,4 @@ module ResourceController
12
12
  subclass.class_eval { resource_controller }
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -17,8 +17,8 @@ module ResourceController
17
17
  actions_to_remove += [*config[:except]] if config[:except]
18
18
  actions_to_remove.uniq!
19
19
 
20
- actions_to_remove.each { |action| undef_method(action)}
20
+ actions_to_remove.each { |action| undef_method(action) if method_defined?(action) }
21
21
  end
22
22
 
23
23
  end
24
- end
24
+ end
@@ -1,9 +1,3 @@
1
- require 'resource_controller/helpers/current_objects'
2
- require 'resource_controller/helpers/internal'
3
- require 'resource_controller/helpers/nested'
4
- require 'resource_controller/helpers/singleton_customizations'
5
- require 'resource_controller/helpers/urls'
6
-
7
1
  module ResourceController
8
2
  # == ResourceController::Helpers
9
3
  #
@@ -37,7 +37,7 @@ module ResourceController
37
37
  # Returns true/false based on whether or not a parent is a singleton.
38
38
  #
39
39
  def parent_singleton?
40
- !parent_type_from_request.nil?
40
+ !parent_type_from_request.nil? && parent_type_from_params.nil?
41
41
  end
42
42
 
43
43
  # Returns the current parent param, if there is a parent. (i.e. params[:post_id])
@@ -4,7 +4,7 @@ module ResourceController
4
4
  #
5
5
  # Inherit from this class to create your RESTful singleton controller. See the README for usage.
6
6
  #
7
- class Singleton < ApplicationController
7
+ class Singleton < ::ApplicationController
8
8
  unloadable
9
9
 
10
10
  def self.inherited(subclass)
@@ -12,4 +12,4 @@ module ResourceController
12
12
  subclass.class_eval { resource_controller :singleton }
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -0,0 +1,2 @@
1
+ class Cms::PersonnelController < ResourceController::Base
2
+ end
@@ -0,0 +1,6 @@
1
+ class Cms::PhotosController < ResourceController::Base
2
+ actions :all, :except => :update
3
+
4
+ belongs_to :personnel
5
+ create.flash { "#{@photo.title} was created!" }
6
+ end
@@ -1,5 +1,6 @@
1
1
  class PhotosController < ResourceController::Base
2
2
  actions :all, :except => :update
3
+ actions :all, :except => :update
3
4
 
4
5
  belongs_to :user
5
6
  create.flash { "#{@photo.title} was created!" }
@@ -0,0 +1,3 @@
1
+ class Personnel < ActiveRecord::Base
2
+ has_many :photos
3
+ end
@@ -1,4 +1,5 @@
1
1
  class Photo < ActiveRecord::Base
2
2
  has_and_belongs_to_many :tags
3
3
  belongs_to :user, :class_name => "Account", :foreign_key => "account_id"
4
+ belongs_to :personnel
4
5
  end
@@ -0,0 +1,17 @@
1
+ <h1>Editing photo</h1>
2
+
3
+ <%= error_messages_for :photo %>
4
+
5
+ <% form_for(:photo, :url => photo_path(@photo), :html => { :method => :put }) do |f| %>
6
+ <p>
7
+ <b>Title</b><br />
8
+ <%= f.text_field :title %>
9
+ </p>
10
+
11
+ <p>
12
+ <%= submit_tag "Update" %>
13
+ </p>
14
+ <% end %>
15
+
16
+ <%= link_to 'Show', photo_path(@photo) %> |
17
+ <%= link_to 'Back', photos_path %>
@@ -0,0 +1,20 @@
1
+ <h1>Listing photos</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Title</th>
6
+ </tr>
7
+
8
+ <% for photo in @photos %>
9
+ <tr>
10
+ <td><%=h photo.title %></td>
11
+ <td><%= link_to 'Show', object_url(photo) %></td>
12
+ <td><%= link_to 'Edit', edit_object_url(photo) %></td>
13
+ <td><%= link_to 'Destroy', object_url(photo), :confirm => 'Are you sure?', :method => :delete %></td>
14
+ </tr>
15
+ <% end %>
16
+ </table>
17
+
18
+ <br />
19
+
20
+ <%= link_to 'New photo', new_object_url %>
@@ -0,0 +1,16 @@
1
+ <h1>New photo</h1>
2
+
3
+ <%= error_messages_for :photo %>
4
+
5
+ <% form_for(:photo, :url => photos_path) do |f| %>
6
+ <p>
7
+ <b>Title</b><br />
8
+ <%= f.text_field :title %>
9
+ </p>
10
+
11
+ <p>
12
+ <%= submit_tag "Create" %>
13
+ </p>
14
+ <% end %>
15
+
16
+ <%= link_to 'Back', photos_path %>
@@ -0,0 +1,8 @@
1
+ <p>
2
+ <b>Title:</b>
3
+ <%=h @photo.title %>
4
+ </p>
5
+
6
+
7
+ <%= link_to 'Edit', edit_photo_path(@photo) %> |
8
+ <%= link_to 'Back', photos_path %>
@@ -1,13 +1,9 @@
1
1
  development:
2
- adapter: mysql
3
- database: resource_controller_test
4
- username: root
5
- password:
6
- socket: /tmp/mysql.sock
2
+ adapter: sqlite3
3
+ database: db/test.sqlite3
4
+ timeout: 5000
7
5
 
8
6
  test:
9
- adapter: mysql
10
- database: resource_controller_test
11
- username: root
12
- password:
13
- socket: /tmp/mysql.sock
7
+ adapter: sqlite3
8
+ database: db/test.sqlite3
9
+ timeout: 5000
@@ -5,7 +5,7 @@
5
5
  # ENV['RAILS_ENV'] ||= 'production'
6
6
 
7
7
  # Specifies gem version of Rails to use when vendor/rails is not present
8
- RAILS_GEM_VERSION = '2.1.1' unless defined? RAILS_GEM_VERSION
8
+ RAILS_GEM_VERSION = '2.3.0' unless defined? RAILS_GEM_VERSION
9
9
 
10
10
  # Bootstrap the Rails environment, frameworks, and default configuration
11
11
  require File.join(File.dirname(__FILE__), 'boot')
@@ -20,7 +20,7 @@ Rails::Initializer.run do |config|
20
20
  # config.plugins = %W( exception_notification ssl_requirement )
21
21
 
22
22
  # Add additional load paths for your own custom dirs
23
- config.load_paths += %W( #{RAILS_ROOT}/../lib )
23
+ # config.load_paths += %W( #{RAILS_ROOT}/../lib )
24
24
 
25
25
  # Force all environments to use the same logger level
26
26
  # (by default production uses :info, the others :debug)
@@ -29,6 +29,8 @@ Rails::Initializer.run do |config|
29
29
  # Use the database for sessions instead of the file system
30
30
  # (create the session table with 'rake db:sessions:create')
31
31
  # config.action_controller.session_store = :active_record_store
32
+ config.gem "resource_controller", :version => "10.0.0"
33
+ config.gem "thoughtbot-shoulda", :lib => "shoulda/rails"
32
34
 
33
35
  # Use SQL instead of Active Record's schema dumper when creating the test database.
34
36
  # This is necessary if your schema can't be completely dumped by the schema dumper,
@@ -44,6 +46,4 @@ Rails::Initializer.run do |config|
44
46
  # See Rails::Configuration for more options
45
47
 
46
48
  config.action_controller.session = { :session_key => "_myapp_session", :secret => "6c1372e61789239a727cdbc8252eb6da" }
47
-
48
- config.gem 'resource_controller'
49
49
  end
@@ -14,7 +14,6 @@ config.breakpoint_server = true
14
14
  # Show full error reports and disable caching
15
15
  config.action_controller.consider_all_requests_local = true
16
16
  config.action_controller.perform_caching = false
17
- config.action_view.cache_template_extensions = false
18
17
  config.action_view.debug_rjs = true
19
18
 
20
19
  # Don't care if the mailer can't send
@@ -0,0 +1,14 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format
4
+ # (all these examples are active by default):
5
+ # Inflector.inflections do |inflect|
6
+ # inflect.plural /^(ox)$/i, '\1en'
7
+ # inflect.singular /^(ox)en/i, '\1'
8
+ # inflect.irregular 'person', 'people'
9
+ # inflect.uncountable %w( fish sheep )
10
+ # end
11
+
12
+ ActiveSupport::Inflector.inflections do |inflect|
13
+ inflect.irregular "personnel", "personnel"
14
+ end
@@ -20,6 +20,9 @@ ActionController::Routing::Routes.draw do |map|
20
20
 
21
21
  map.namespace :cms do |cms|
22
22
  cms.resources :products, :has_many => :options
23
+ cms.resources :personnel do |personnel|
24
+ personnel.resources :photos
25
+ end
23
26
  end
24
27
 
25
28
  map.resources :posts do |post|
@@ -0,0 +1,11 @@
1
+ class CreatePersonnel < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :personnel, :force => true do |t|
4
+ t.timestamps
5
+ end
6
+ end
7
+
8
+ def self.down
9
+ drop_table :personnel
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class AddPersonnelIdToPhotos < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :photos, :personnel_id, :integer
4
+ end
5
+
6
+ def self.down
7
+ remove_column :photos, :personnel_id
8
+ end
9
+ end
data/test/db/schema.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is auto-generated from the current state of the database. Instead of editing this file,
2
- # please use the migrations feature of ActiveRecord to incrementally modify your database, and
2
+ # please use the migrations feature of Active Record to incrementally modify your database, and
3
3
  # then regenerate this schema definition.
4
4
  #
5
5
  # Note that this schema.rb definition is the authoritative source for your database schema. If you need
@@ -9,7 +9,7 @@
9
9
  #
10
10
  # It's strongly recommended to check this file into your version control system.
11
11
 
12
- ActiveRecord::Schema.define(:version => 12) do
12
+ ActiveRecord::Schema.define(:version => 14) do
13
13
 
14
14
  create_table "accounts", :force => true do |t|
15
15
  t.string "name"
@@ -33,9 +33,15 @@ ActiveRecord::Schema.define(:version => 12) do
33
33
  t.string "title"
34
34
  end
35
35
 
36
+ create_table "personnel", :force => true do |t|
37
+ t.datetime "created_at"
38
+ t.datetime "updated_at"
39
+ end
40
+
36
41
  create_table "photos", :force => true do |t|
37
42
  t.string "title"
38
43
  t.integer "account_id"
44
+ t.integer "personnel_id"
39
45
  end
40
46
 
41
47
  create_table "photos_tags", :force => true do |t|
@@ -45,7 +51,7 @@ ActiveRecord::Schema.define(:version => 12) do
45
51
 
46
52
  create_table "posts", :force => true do |t|
47
53
  t.string "title", :default => ""
48
- t.text "body"
54
+ t.text "body", :default => ""
49
55
  end
50
56
 
51
57
  create_table "products", :force => true do |t|
@@ -0,0 +1,5 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ two:
5
+ id: 2
@@ -4,7 +4,7 @@ require 'cms/options_controller'
4
4
  # Re-raise errors caught by the controller.
5
5
  class Cms::OptionsController; def rescue_action(e) raise e end; end
6
6
 
7
- class Cms::OptionsControllerTest < Test::Unit::TestCase
7
+ class Cms::OptionsControllerTest < ActionController::TestCase
8
8
  def setup
9
9
  @controller = Cms::OptionsController.new
10
10
  @request = ActionController::TestRequest.new
@@ -0,0 +1,43 @@
1
+ require File.dirname(__FILE__) + '/../../test_helper'
2
+ require 'cms/photos_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class Cms::PhotosController; def rescue_action(e) raise e end; end
6
+
7
+ class Cms::PhotosControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = Cms::PhotosController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @photo = Photo.find 1
13
+ end
14
+
15
+ context "with personnel as parent" do
16
+ context "on get to :index" do
17
+ setup do
18
+ get :index, :personnel_id => 1
19
+ end
20
+
21
+ should_respond_with :success
22
+ should_render_template "index"
23
+ should_assign_to :photos
24
+ should_assign_to :personnel
25
+ should "scope photos to personnel" do
26
+ assert assigns(:photos).all? { |photo| photo.personnel.id == 1 }
27
+ end
28
+ end
29
+
30
+ context "on post to :create" do
31
+ setup do
32
+ post :create, :personnel_id => 1, :photo => {}
33
+ end
34
+
35
+ should_redirect_to 'cms_personnel_photo_path(@photo.personnel, @photo)'
36
+ should_assign_to :photo
37
+ should_assign_to :personnel
38
+ should "scope photo to personel" do
39
+ assert personnel(:one), assigns(:photo).personnel
40
+ end
41
+ end
42
+ end
43
+ end
@@ -4,7 +4,7 @@ require 'cms/products_controller'
4
4
  # Re-raise errors caught by the controller.
5
5
  class Cms::ProductsController; def rescue_action(e) raise e end; end
6
6
 
7
- class Cms::ProductsControllerTest < Test::Unit::TestCase
7
+ class Cms::ProductsControllerTest < ActionController::TestCase
8
8
  def setup
9
9
  @controller = Cms::ProductsController.new
10
10
  @request = ActionController::TestRequest.new