indulgence 0.0.4 → 0.0.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.
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