inherited_resources 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ # Version 1.2.2
2
+
3
+ * Fix a bug in params parsing
4
+ * Call .scoped only if it is available
5
+
1
6
  # Version 1.2.1
2
7
 
3
8
  * Fix a bug with namespaces
@@ -15,11 +15,9 @@ http://akitaonrails.com/2009/09/01/screencast-real-thin-restful-controllers-with
15
15
 
16
16
  === Rails 3
17
17
 
18
- Inherited Resources master branch is now supports Rails 3 and is NOT backward compatible.
18
+ You can let bundler install Inherited Resources by adding this line to your application's Gemfile:
19
19
 
20
- You can let bundler to install Inherited Resources by adding this line to your application's Gemfile:
21
-
22
- gem 'inherited_resources', '~> 1.2.1'
20
+ gem 'inherited_resources'
23
21
 
24
22
  And then execute:
25
23
 
@@ -27,13 +25,13 @@ And then execute:
27
25
 
28
26
  Or install it yourself as:
29
27
 
30
- gem install inherited_resources --version=1.2.1
28
+ gem install inherited_resources
31
29
 
32
30
  === Rails 2.3.x
33
31
 
34
32
  If you want to use the Rails 2.3.x version, you should install:
35
33
 
36
- sudo gem install inherited_resources --version=1.0.6
34
+ gem install inherited_resources --version=1.0.6
37
35
 
38
36
  Or checkout from the v1.0 branch:
39
37
 
@@ -71,6 +69,8 @@ that through the following configuration value:
71
69
 
72
70
  InheritedResources.flash_keys = [ :success, :failure ]
73
71
 
72
+ Notice the CollectionResponder won't work with InheritedResources, as InheritedResources hardcodes the redirect path based on the current scope (like belongs to, polymorphic associations, etc).
73
+
74
74
  == Basic Usage
75
75
 
76
76
  To use Inherited Resources you just have to inherit (duh) it:
@@ -294,7 +294,7 @@ in destroy action calculate in following order collection_url, parent_url, root_
294
294
  Example:
295
295
 
296
296
  class ButtonsConntroller < InheritedResources::Base
297
- belong_to :window
297
+ belongs_to :window
298
298
  actions :all, :except => [:show, :index]
299
299
  end
300
300
 
@@ -42,7 +42,7 @@ module InheritedResources
42
42
  def update(options={}, &block)
43
43
  object = resource
44
44
 
45
- if update_resource(object, params[resource_request_name])
45
+ if update_resource(object, resource_params)
46
46
  options[:location] ||= smart_resource_url
47
47
  end
48
48
 
@@ -20,7 +20,10 @@ module InheritedResources
20
20
  # end
21
21
  #
22
22
  def collection
23
- get_collection_ivar || set_collection_ivar(end_of_association_chain.scoped)
23
+ get_collection_ivar || begin
24
+ c = end_of_association_chain
25
+ set_collection_ivar(c.respond_to?(:scoped) ? c.scoped : c.all)
26
+ end
24
27
  end
25
28
 
26
29
  # This is how the resource is loaded.
@@ -46,7 +49,7 @@ module InheritedResources
46
49
  # instance variable.
47
50
  #
48
51
  def build_resource
49
- get_resource_ivar || set_resource_ivar(end_of_association_chain.send(method_for_build, params[resource_request_name] || {}))
52
+ get_resource_ivar || set_resource_ivar(end_of_association_chain.send(method_for_build, resource_params))
50
53
  end
51
54
 
52
55
  # Responsible for saving the resource on :create method. Overwriting this
@@ -294,6 +297,11 @@ module InheritedResources
294
297
  end
295
298
  url ||= root_url rescue nil
296
299
  end
300
+
301
+ # extract attributes from params
302
+ def resource_params
303
+ params[resource_request_name] || params[resource_instance_name] || {}
304
+ end
297
305
  end
298
306
  end
299
307
 
@@ -1,3 +1,3 @@
1
1
  module InheritedResources
2
- VERSION = '1.2.1'.freeze
2
+ VERSION = '1.2.2'.freeze
3
3
  end
@@ -35,6 +35,12 @@ module UserTestHelper
35
35
  user = mock(expectations.except(:errors))
36
36
  user.stubs(:class).returns(User)
37
37
  user.stubs(:errors).returns(expectations.fetch(:errors, {}))
38
+ user.singleton_class.class_eval do
39
+ def method_missing(symbol, *arguments, &block)
40
+ raise NoMethodError.new('this is expected by Array#flatten') if symbol == :to_ary
41
+ super
42
+ end
43
+ end
38
44
  user
39
45
  end
40
46
  end
@@ -70,6 +76,12 @@ class IndexActionBaseTest < ActionController::TestCase
70
76
  assert_response :success
71
77
  assert_equal 'Generated XML', @response.body
72
78
  end
79
+
80
+ def test_scoped_is_called_only_when_available
81
+ User.stubs(:all).returns([mock_user])
82
+ get :index
83
+ assert_equal Array, assigns(:users).class
84
+ end
73
85
  end
74
86
 
75
87
  class ShowActionBaseTest < ActionController::TestCase
@@ -64,23 +64,23 @@ class DefaultsClassMethodTest < ActiveSupport::TestCase
64
64
  end
65
65
 
66
66
  def test_defaults_are_set
67
- assert Folder, FoldersController.send(:resource_class)
68
- assert :folder, FoldersController.send(:resources_configuration)[:self][:instance_name]
69
- assert :folders, FoldersController.send(:resources_configuration)[:self][:collection_name]
67
+ assert_equal Folder, FoldersController.send(:resource_class)
68
+ assert_equal :folder, FoldersController.send(:resources_configuration)[:self][:instance_name]
69
+ assert_equal :folders, FoldersController.send(:resources_configuration)[:self][:collection_name]
70
70
  end
71
71
 
72
72
  def test_defaults_can_be_overwriten
73
73
  BooksController.send(:defaults, :resource_class => String, :instance_name => 'string', :collection_name => 'strings')
74
74
 
75
- assert String, BooksController.send(:resource_class)
76
- assert :string, BooksController.send(:resources_configuration)[:self][:instance_name]
77
- assert :strings, BooksController.send(:resources_configuration)[:self][:collection_name]
75
+ assert_equal String, BooksController.send(:resource_class)
76
+ assert_equal :string, BooksController.send(:resources_configuration)[:self][:instance_name]
77
+ assert_equal :strings, BooksController.send(:resources_configuration)[:self][:collection_name]
78
78
 
79
79
  BooksController.send(:defaults, :class_name => 'Fixnum', :instance_name => :fixnum, :collection_name => :fixnums)
80
80
 
81
- assert String, BooksController.send(:resource_class)
82
- assert :string, BooksController.send(:resources_configuration)[:self][:instance_name]
83
- assert :strings, BooksController.send(:resources_configuration)[:self][:collection_name]
81
+ assert_equal Fixnum, BooksController.send(:resource_class)
82
+ assert_equal :fixnum, BooksController.send(:resources_configuration)[:self][:instance_name]
83
+ assert_equal :fixnums, BooksController.send(:resources_configuration)[:self][:collection_name]
84
84
  end
85
85
 
86
86
  def test_defaults_raises_invalid_key
@@ -57,6 +57,20 @@ class NestedModelWithShallowTest < ActionController::TestCase
57
57
  assert_equal mock_group, assigns(:group)
58
58
  end
59
59
 
60
+ def test_expose_a_newly_create_group_with_speciality
61
+ Speciality.expects(:find).with('37').twice.returns(mock_speciality)
62
+ Plan::Group.expects(:build).with({'these' => :params}).returns(mock_group(:save => true))
63
+ post :create, :speciality_id => '37', :group => {:these => :params}
64
+ assert_equal mock_group, assigns(:group)
65
+ end
66
+
67
+ def test_expose_a_update_group_with_speciality
68
+ should_find_parents
69
+ mock_group.expects(:update_attributes).with('these' => :params).returns(true)
70
+ post :update, :id => 'forty_two', :group => {:these => :params}
71
+ assert_equal mock_group, assigns(:group)
72
+ end
73
+
60
74
  protected
61
75
  def should_find_parents
62
76
  Plan::Group.expects(:find_by_slug).with('forty_two').returns(mock_group)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inherited_resources
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 1
10
- version: 1.2.1
9
+ - 2
10
+ version: 1.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - "Jos\xC3\xA9 Valim"
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-28 00:00:00 +01:00
18
+ date: 2011-04-17 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -200,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
200
  requirements: []
201
201
 
202
202
  rubyforge_project: inherited_resources
203
- rubygems_version: 1.3.7
203
+ rubygems_version: 1.5.3
204
204
  signing_key:
205
205
  specification_version: 3
206
206
  summary: Inherited Resources speeds up development by making your controllers inherit all restful actions so you just have to focus on what is important.