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 +1 -5
- data/lib/indulgence/ability.rb +6 -2
- data/lib/indulgence/version.rb +3 -1
- data/test/db/test.sqlite3.db +0 -0
- data/test/lib/role.rb +4 -0
- data/test/lib/role_permission.rb +16 -0
- data/test/units/role_permission_test.rb +28 -0
- metadata +5 -1
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
|
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
|
|
data/lib/indulgence/ability.rb
CHANGED
@@ -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
|
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)
|
data/lib/indulgence/version.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
module Indulgence
|
2
|
-
VERSION = "0.0.
|
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
|
data/test/db/test.sqlite3.db
CHANGED
Binary file
|
data/test/lib/role.rb
CHANGED
@@ -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
|
+
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
|