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