cancan 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,10 @@
1
+ 1.3.3 (August 20, 2010)
2
+
3
+ * Switching to Rspec namespace to remove deprecation warning in Rspec 2 - see issue #119
4
+
5
+ * Pluralize nested associations for conditions in accessible_by (thanks mlooney) - see issue #123
6
+
7
+
1
8
  1.3.2 (August 7, 2010)
2
9
 
3
10
  * Fixing slice error when passing in custom resource name - see issue #112
@@ -14,8 +21,7 @@
14
21
 
15
22
  * Adding :singleton option to load_resource - see issue #93
16
23
 
17
- * Supporting multiple resources in :through option for polymorphic
18
- associations - see issue #73
24
+ * Supporting multiple resources in :through option for polymorphic associations - see issue #73
19
25
 
20
26
  * Supporting Single Table Inheritance for "can" comparisons - see issue #55
21
27
 
@@ -34,14 +34,14 @@ module CanCan
34
34
  end
35
35
  end
36
36
 
37
- # Returns a hash of conditions, pluralizing the table names
38
- def tableized_conditions
39
- if @conditions
40
- @conditions.inject({}) do |tableized_conditions, (name, value)|
41
- name = name.to_s.tableize.to_sym if value.kind_of? Hash
42
- tableized_conditions[name] = value
43
- tableized_conditions
37
+ def tableized_conditions(conditions = @conditions)
38
+ conditions.inject({}) do |result_hash, (name, value)|
39
+ if value.kind_of? Hash
40
+ name = name.to_s.tableize.to_sym
41
+ value = tableized_conditions(value)
44
42
  end
43
+ result_hash[name] = value
44
+ result_hash
45
45
  end
46
46
  end
47
47
 
@@ -1,4 +1,5 @@
1
- Spec::Matchers.define :be_able_to do |*args|
1
+ RSpec = Spec unless defined? RSpec # for RSpec 1 compatability
2
+ RSpec::Matchers.define :be_able_to do |*args|
2
3
  match do |ability|
3
4
  ability.can?(*args)
4
5
  end
@@ -31,8 +31,8 @@ describe CanCan::ActiveRecordAdditions do
31
31
  @ability.can :read, @model_class, :too => {:car => 1, :far => {:bar => 1}}
32
32
 
33
33
  condition_variants = [
34
- '(toos.far.bar=1 AND toos.car=1) OR (foos.bar=1)', # faked sql sanitizer is stupid ;-)
35
- '(toos.car=1 AND toos.far.bar=1) OR (foos.bar=1)'
34
+ '(toos.fars.bar=1 AND toos.car=1) OR (foos.bar=1)', # faked sql sanitizer is stupid ;-)
35
+ '(toos.car=1 AND toos.fars.bar=1) OR (foos.bar=1)'
36
36
  ]
37
37
  joins_variants = [
38
38
  [:foo, {:too => [:far]}],
@@ -31,6 +31,18 @@ describe CanCan::CanDefinition do
31
31
  @can.associations_hash.should == {:foo => {:bar => {}}}
32
32
  end
33
33
 
34
+ it "should tableize correctly for absurdly complex permissions" do
35
+ @conditions[:unit] = {:property=>{:landlord=>{:weasle_id=>560}}}
36
+ @conditions[:test] = 1
37
+ @can.tableized_conditions.should == {:units => {:properties => {:landlords=>{:weasle_id=>560}}}, :test => 1}
38
+ end
39
+
40
+ it "should tableize correctly for complex permissions" do
41
+ @conditions[:unit] = {:property=>{:landlord_id=>560}}
42
+ @conditions[:test] = 1
43
+ @can.tableized_conditions.should == {:units => {:properties => {:landlord_id=>560}}, :test => 1}
44
+ end
45
+
34
46
  it "should return table names in conditions for association joins" do
35
47
  @conditions[:foo] = {:bar => 1}
36
48
  @conditions[:test] = 1
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cancan
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 3
8
+ - 3
9
+ version: 1.3.3
5
10
  platform: ruby
6
11
  authors:
7
12
  - Ryan Bates
@@ -9,7 +14,7 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-08-07 00:00:00 -07:00
17
+ date: 2010-08-20 00:00:00 -07:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
@@ -60,18 +65,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
60
65
  requirements:
61
66
  - - ">="
62
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
63
70
  version: "0"
64
- version:
65
71
  required_rubygems_version: !ruby/object:Gem::Requirement
66
72
  requirements:
67
73
  - - ">="
68
74
  - !ruby/object:Gem::Version
75
+ segments:
76
+ - 1
77
+ - 3
78
+ - 4
69
79
  version: 1.3.4
70
- version:
71
80
  requirements: []
72
81
 
73
82
  rubyforge_project: cancan
74
- rubygems_version: 1.3.5
83
+ rubygems_version: 1.3.6
75
84
  signing_key:
76
85
  specification_version: 3
77
86
  summary: Simple authorization solution for Rails.