indulgence 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -188,10 +188,6 @@ This will create an Ability object with the following methods:
188
188
  [compare_single] Used by :indulge?
189
189
  [filter_many] Used by :indulgence
190
190
 
191
- Alternatively, you can achieve the same result by defining lambdas for the
192
- ability methods :compare_single and :filter_many. If you use lambdas, you must
193
- also define a name.
194
-
195
191
  Alternatively you can define the ability like this:
196
192
 
197
193
  def things_they_wrote
@@ -199,7 +195,7 @@ Alternatively you can define the ability like this:
199
195
  end
200
196
 
201
197
  This will use :author to define attributes of an ability object. :author could
202
- be an association or an attribute that return either the entity or the entity.id.
198
+ be an association or an attribute that returns either the entity or the entity.id.
203
199
 
204
200
  So this also works:
205
201
 
@@ -30,8 +30,12 @@ module Indulgence
30
30
  def compare_single(thing, entity)
31
31
  return @compare_single.call thing, entity if @compare_single
32
32
 
33
- identifier = thing.send(relationship)
34
- identifier == entity.id || identifier == entity
33
+ identifier = thing.send(relationship)
34
+ if identifier.kind_of?(Array)
35
+ identifier.include? entity
36
+ else
37
+ identifier == entity.id || identifier == entity
38
+ end
35
39
  end
36
40
 
37
41
  def filter_many(things, entity)
@@ -1,10 +1,12 @@
1
1
  module Indulgence
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
4
4
 
5
5
  # History
6
6
  # =======
7
7
  #
8
+ # 0.0.5 Allows simplified ability definition to be used with has_many
9
+ #
8
10
  # 0.0.4 Simplifies defining abilities
9
11
  #
10
12
  # Allows and ability to be defined by passing in the name of the
Binary file
data/test/lib/role.rb CHANGED
@@ -1,6 +1,10 @@
1
+ require 'indulgence'
2
+
1
3
  class Role < ActiveRecord::Base
2
4
  has_many :users
3
5
 
6
+ acts_as_indulgent
7
+
4
8
  def title
5
9
  self.name
6
10
  end
@@ -0,0 +1,16 @@
1
+ require 'indulgence'
2
+
3
+ class RolePermission < Indulgence::Permission
4
+ def default
5
+ {
6
+ create: from_has_many,
7
+ read: from_has_many,
8
+ update: all,
9
+ delete: none
10
+ }
11
+ end
12
+
13
+ def from_has_many
14
+ define_ability(:users)
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../test_helper'
2
+ require 'user'
3
+ require 'role'
4
+ require 'role_permission'
5
+
6
+ class RolePermissionTest < Test::Unit::TestCase
7
+ def setup
8
+ @role = Role.create(:name => 'mortal')
9
+ @user = User.create(:name => 'Trevor', :role_id => @role.id)
10
+ end
11
+
12
+ def test_indulge_with_has_many
13
+ assert_equal(true, @role.indulge?(@user, :read))
14
+ assert_equal(false, @role.indulge?(@user, :delete))
15
+ end
16
+
17
+ def test_indulgence_with_has_many
18
+ assert_equal([@role], Role.indulgence(@user, :read))
19
+ assert_raise ActiveRecord::RecordNotFound do
20
+ Role.indulgence(@user, :delete)
21
+ end
22
+ end
23
+
24
+ def teardown
25
+ User.delete_all
26
+ Role.delete_all
27
+ end
28
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: indulgence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -82,12 +82,14 @@ files:
82
82
  - test/units/indulgence/ability_tests/method_only.rb
83
83
  - test/units/indulgence/ability_tests/with_lambdas.rb
84
84
  - test/units/user_test.rb
85
+ - test/units/role_permission_test.rb
85
86
  - test/units/thing_permission_test.rb
86
87
  - test/units/thing_test.rb
87
88
  - test/lib/role.rb
88
89
  - test/lib/user.rb
89
90
  - test/lib/thing.rb
90
91
  - test/lib/thing_permission.rb
92
+ - test/lib/role_permission.rb
91
93
  - test/db/migrate/20130408103015_create_roles.rb
92
94
  - test/db/migrate/20130408085511_create_users.rb
93
95
  - test/db/migrate/20130408132217_create_things.rb
@@ -126,12 +128,14 @@ test_files:
126
128
  - test/units/indulgence/ability_tests/method_only.rb
127
129
  - test/units/indulgence/ability_tests/with_lambdas.rb
128
130
  - test/units/user_test.rb
131
+ - test/units/role_permission_test.rb
129
132
  - test/units/thing_permission_test.rb
130
133
  - test/units/thing_test.rb
131
134
  - test/lib/role.rb
132
135
  - test/lib/user.rb
133
136
  - test/lib/thing.rb
134
137
  - test/lib/thing_permission.rb
138
+ - test/lib/role_permission.rb
135
139
  - test/db/migrate/20130408103015_create_roles.rb
136
140
  - test/db/migrate/20130408085511_create_users.rb
137
141
  - test/db/migrate/20130408132217_create_things.rb