BeastBB/t/DAO/00-group-manager.t

110 lines
3.5 KiB
Perl

use 5.32.1;
use Test::Most tests => 9;
use strict;
use warnings;
use Const::Fast;
use BeastBB::Mock::Controller;
{
use_ok 'BeastBB::DAO::GroupManager';
}
const my $APP => BeastBB::Mock::Controller->new;
const my $GROUP_MANAGER => BeastBB::DAO::GroupManager->new( app => $APP );
{
$APP->db->Mock(
sql =>
'SELECT "id_group", "groupname" FROM "group" WHERE "groupname" = ?',
results => [ [ 'id_group', 'groupname' ], [ 1, 'example_group' ] ]
);
my $maybe_group = $GROUP_MANAGER->Get( groupname => 'example_group' );
die $maybe_group->ErrorMessage if $maybe_group->IsError;
my $group = $maybe_group->Content;
ok $group->isa('BeastBB::Model::Group'),
'We can recover groups by groupname.';
is_deeply $group->Hash, { groupname => 'example_group', id_group => 1 },
'The group hash after groupname recovery is ok.';
}
{
$APP->db->Mock(
sql =>
'SELECT "id_group", "groupname" FROM "group" WHERE "id_group" = ?',
results => [ [ 'id_group', 'groupname' ], [ 1, 'example_group' ] ]
);
my $maybe_group = $GROUP_MANAGER->Get( id_group => 1 );
die $maybe_group->ErrorMessage if $maybe_group->IsError;
my $group = $maybe_group->Content;
ok $group->isa('BeastBB::Model::Group'),
'We can recover groups by id_group.';
is_deeply $group->Hash, { groupname => 'example_group', id_group => 1 },
'The group hash after id_group recovery is ok.';
}
{
$APP->db->Mock(
sql =>
'SELECT "id_group", "groupname" FROM "group" WHERE "groupname" = ?',
results => [ [ 'id_group', 'groupname' ], [ 1, 'example_group' ] ]
);
$APP->db->Mock(
sql =>
'SELECT privilege.name FROM group_privilege INNER JOIN privilege USING (id_privilege) WHERE id_group=?',
results => [
['name'],
['example_privilege'],
['example_privilege_1']
]
);
my $maybe_group = $GROUP_MANAGER->Get(
groupname => 'example_group',
recover_privileges => 1
);
die $maybe_group->ErrorMessage if $maybe_group->IsError;
my $group = $maybe_group->Content;
ok $group->isa('BeastBB::Model::Group'), 'We can recover groups with privileges by id_group.';
is_deeply $group->Hash,
{
groupname => 'example_group',
id_group => 1,
privileges => { example_privilege => 1, example_privilege_1 => 1 }
},
'The group hash after groupname recovery is ok.';
}
{
$APP->db->Mock(
sql =>
'SELECT "id_group", "groupname" FROM "group" WHERE "id_group" = ?',
results => [ [ 'id_group', 'groupname' ], [ 1, 'example_group' ] ]
);
$APP->db->Mock(
sql =>
'SELECT privilege.name FROM group_privilege INNER JOIN privilege USING (id_privilege) WHERE id_group=?',
results => [
['name'],
['example_privilege'],
['example_privilege_1']
]
);
my $maybe_group = $GROUP_MANAGER->Get(
id_group => 1,
recover_privileges => 1
);
die $maybe_group->ErrorMessage if $maybe_group->IsError;
my $group = $maybe_group->Content;
ok $group->isa('BeastBB::Model::Group'), 'We can recover groups with privileges by id_group.';
is_deeply $group->Hash,
{
groupname => 'example_group',
id_group => 1,
privileges => { example_privilege => 1, example_privilege_1 => 1 }
},
'The group hash after id_group recovery is ok.';
}