rename restrict by user
[dbsrgits/DBIx-Class-Schema-RestrictWithObject.git] / t / 05restrict.t
1 use strict;
2 use warnings;
3 use Test::More;
4
5 use Scalar::Util;
6
7 plan (tests => 17);
8
9 use lib qw(t/lib);
10
11 use RestrictByUserTest;
12 my $schema = RestrictByUserTest->init_schema;
13 ok($schema, "Connected successfully");
14
15 my $user1 = $schema->resultset('Users')->create({name => 'user1'});
16 my $user2 = $schema->resultset('Users')->create({name => 'user2'});
17 ok(ref $user1 && ref $user2, "Successfully created mock users");
18
19 ok($user1->notes->create({name => 'note 1-1'}), "Successfully created 1-1 note");
20 ok($user1->notes->create({name => 'note 1-2'}), "Successfully created 1-2 note");
21
22 ok($user2->notes->create({name => 'note 2-1'}), "Successfully created 2-1 note");
23 ok($user2->notes->create({name => 'note 2-2'}), "Successfully created 2-2 note");
24 ok($user2->notes->create({name => 'note 2-3'}), "Successfully created 2-3 note");
25 ok($user2->notes->create({name => 'note 2-4'}), "Successfully created 2-4 note");
26
27 my $u1_schema = $schema->restrict_by_user($user1);
28 my $u2_schema = $schema->restrict_by_user($user2, "MY");
29 my $u3_schema = $schema->restrict_by_user($user2, "BUNK");
30
31 is($u1_schema->user->id, $user1->id, "Correct restriction for user 1");
32 is($u2_schema->user->id, $user2->id, "Correct restriction for user 2");
33 is($u2_schema->restricted_prefix, "MY", "Correct prefix for user 2");
34
35 ok(Scalar::Util::refaddr($u1_schema) ne Scalar::Util::refaddr($u2_schema), 
36    "Successful clones");
37
38 is($schema->resultset('Notes')->count, 6, 'Correct un resticted count');
39 is($u1_schema->resultset('Notes')->count, 2, 'Correct resticted count');
40 is($u2_schema->resultset('Notes')->count, 4, 'Correct resticted count using prefix');
41 is($u2_schema->resultset('Notes')->count, 4, 
42    'Correct resticted count using prefix and fallback');
43
44 is($u2_schema->resultset('Users')->count, 2, 'Unrestricted resultsets work');
45
46
47 1;