id_please 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/test/roles_test.rb CHANGED
@@ -280,9 +280,10 @@ class RolesTest < ActiveSupport::TestCase
280
280
  assert_same_elements @user1.groups, [@group1, @group2, @group3, @group4]
281
281
  assert_same_elements @user2.groups, [@group2, @group4]
282
282
 
283
- assert_same_elements @group4.children, [@group2, @group1, @user1, @user2]
283
+ assert_same_elements @group4.children, [@group2, @group1, @user1, @user2, @user3]
284
284
  assert_same_elements @group2.children, [@group1, @user1, @user2]
285
-
285
+ assert_same_elements @group2.children(:nested => false), [@group1, @user2]
286
+
286
287
  assert @group4.accepts_role?(:member, @user1)
287
288
  assert @group2.accepts_role?(:member, @user1)
288
289
 
@@ -291,30 +292,23 @@ class RolesTest < ActiveSupport::TestCase
291
292
  assert_false @group4.accepts_role?(:member, @user1, :check_groups => false)
292
293
  end
293
294
 
294
- should "be able to filter children based on roles" do
295
- assert_same_elements @group4.children(), [@group2, @group1, @user1, @user2]
296
- assert_same_elements @group4.children(:roles => :any), [@group2, @group1, @user1, @user2, @user3]
297
- assert_same_elements @group4.children(:roles => [:member]), [@group2, @group1, @user1, @user2]
298
- assert_same_elements @group4.children(:roles => [:owner]), [@user3]
299
- end
300
-
301
295
  should "be able to display hashes of subject permissions" do
302
- assert_equal @group4.children(:roles => :any, :view => :subject_hash), {@group2 => [:member], @group1 => [:member], @user1 => [:member], @user2 => [:member], @user3 => [:owner]}
296
+ assert_equal @group4.children(:view => :subject_hash), {@group2 => [:member], @group1 => [:member], @user1 => [:member], @user2 => [:member], @user3 => [:owner]}
303
297
  end
304
298
 
305
299
  should "display a list of roles, or a hash of roles to users" do
306
- assert_same_elements @group4.children(:roles => :any, :view => :roles), [:member, :owner]
300
+ assert_same_elements @group4.children(:view => :roles), [:member, :owner]
307
301
 
308
- role_hash = @group4.children(:roles => :any, :view => :role_hash)
302
+ role_hash = @group4.children(:view => :role_hash)
309
303
  assert_same_elements role_hash[:member], [@group1, @group2, @user1, @user2]
310
304
  assert_same_elements role_hash[:owner], [@user3]
311
305
  end
312
306
 
313
307
  should "display a hash of roles to users with the relevant groups attached" do
314
- role_with_assignments = @group4.children(:roles => :any, :view => :role_with_assignments)
308
+ role_with_assignments = @group4.children(:view => :role_with_assignments)
315
309
  assert_equal role_with_assignments[:owner], {@user3 => [@group4]}
316
310
  assert_same_elements role_with_assignments[:member].keys, [@user1, @user2, @group1, @group2]
317
- assert_equal role_with_assignments[:member], {@group2 => [@group4], @group1 => [@group2], @user1 => [@group1, @group4], @user2 => [@group2]}
311
+ assert_same_elements_in_hash role_with_assignments[:member], {@group2 => [@group4], @group1 => [@group2], @user1 => [@group1, @group4], @user2 => [@group2]}
318
312
 
319
313
  end
320
314
 
@@ -340,6 +334,27 @@ class RolesTest < ActiveSupport::TestCase
340
334
 
341
335
  end
342
336
 
337
+ context "given a group which is both an member and an owner" do
338
+ setup do
339
+ @user1.in_group!(@group1)
340
+ @group1.in_group!(@group2)
341
+ @group1.has_role!(:owner, @group2)
342
+ end
343
+
344
+ should "propagate multiple roles through nested groups" do
345
+ @user1.has_role?(:owner, @group2)
346
+ @user1.has_role?(:member, @group2)
347
+ end
348
+
349
+ should "display handle multiple roles propagated through the children function" do
350
+ assert_same_elements @group2.children(:view => :roles), [:member, :owner]
351
+ role_hash = @group2.children(:view => :role_hash)
352
+
353
+ assert_same_elements role_hash[:member], [@group1, @user1]
354
+ assert_same_elements role_hash[:owner], [@group1, @user1]
355
+ end
356
+ end
357
+
343
358
  end
344
359
  end
345
360
 
data/test/test_helper.rb CHANGED
@@ -42,5 +42,22 @@ module Test::Unit::Assertions
42
42
  def assert_false(object, message="")
43
43
  assert_equal(false, object, message)
44
44
  end
45
+
46
+ def assert_same_elements_in_hash(hash1, hash2, message = "")
47
+ assert_kind_of Hash, hash1, message + "First object must be a hash"
48
+ assert_kind_of Hash, hash2, message + "Second object must be a hash"
49
+ assert_equal hash1.keys, hash2.keys, "Keys of hashes mismatch"
50
+
51
+ hash1.each_pair do |k, v|
52
+ case v
53
+ when Hash
54
+ assert_same_elements_in_hash v,hash2[k], message + "Under key #{k.inspect} "
55
+ when Array
56
+ assert_same_elements v, hash2[k], message + "Under key #{k.inspect} "
57
+ else
58
+ assert_equal v, hash2[k], message + "Under key #{k.inspect} "
59
+ end
60
+ end
61
+ end
45
62
  end
46
63
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: id_please
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Stuart
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-18 00:00:00 -05:00
12
+ date: 2010-02-19 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -71,6 +71,7 @@ files:
71
71
  - VERSION
72
72
  - id_please.gemspec
73
73
  - lib/id_please.rb
74
+ - lib/id_please/assignment_map.rb
74
75
  - lib/id_please/config.rb
75
76
  - lib/id_please/model_extensions.rb
76
77
  - lib/id_please/model_extensions/for_assignment.rb