--
-- packages/acs-kernel/sql/test/groups-test.sql
--
-- @author rhs@mit.edu
-- @creation-date 2000-10-07
-- @cvs-id $Id: groups-test.sql,v 1.2 2011/07/07 10:46:02 gustafn Exp $
--
-- set serveroutput on
create table groups_test_groups (
group_id integer,
sorder integer,
gname varchar(100)
);
create table groups_test_users (
user_id integer,
sorder integer,
uname varchar(100)
);
--
-- procedure test_groups/0
--
CREATE OR REPLACE FUNCTION test_groups(
) RETURNS integer AS $$
DECLARE
A integer;
B integer;
C integer;
D integer;
E integer;
F integer;
G integer;
joe integer;
jane integer;
bob integer;
betty integer;
jack integer;
jill integer;
sven integer;
stacy integer;
rel_a integer;
rel_b integer;
rel_c integer;
rel_d integer;
rel_e integer;
rel_f integer;
rel_g integer;
rel_h integer;
rel_i integer;
rel_j integer;
rel_k integer;
rel_l integer;
gp record;
n_rows integer;
BEGIN
-- Create the test groups.
A := acs_group__new('A');
B := acs_group__new('B');
C := acs_group__new('C');
D := acs_group__new('D');
E := acs_group__new('E');
F := acs_group__new('F');
G := acs_group__new('G');
insert into groups_test_groups values (A,1,'A');
insert into groups_test_groups values (B,2,'B');
insert into groups_test_groups values (C,3,'C');
insert into groups_test_groups values (D,4,'D');
insert into groups_test_groups values (E,5,'E');
insert into groups_test_groups values (F,6,'F');
insert into groups_test_groups values (G,7,'G');
-- Create the test members.
joe := acs_user__new('joe@asdf.com','Joe',
'Smith','assword','p');
jane := acs_user__new('jane@asdf.com','Jane',
'Smith','assword','p');
bob := acs_user__new('bob@asdf.com','Bob',
'Smith','assword','p');
betty := acs_user__new('betty@asdf.com','Betty',
'Smith','assword','p');
jack := acs_user__new('jack@asdf.com','Jack',
'Smith','assword','p');
jill := acs_user__new('jill@asdf.com','Jill',
'Smith','assword','p');
sven := acs_user__new('sven@asdf.com','Sven',
'Smith','assword','p');
stacy := acs_user__new('stacy@asdf.com','Stacy',
'Smith','assword','p');
insert into groups_test_users values (joe,1,'joe');
insert into groups_test_users values (jane,2,'jane');
insert into groups_test_users values (bob,3,'bob');
insert into groups_test_users values (betty,4,'betty');
insert into groups_test_users values (jack,5,'jack');
insert into groups_test_users values (jill,6,'jill');
insert into groups_test_users values (sven,7,'sven');
insert into groups_test_users values (stacy,8,'stacy');
-- Make a couple of compositions.
rel_a := composition_rel__new(A, B);
rel_b := composition_rel__new(A, C);
rel_c := composition_rel__new(A, D);
rel_d := composition_rel__new(E, A);
rel_e := composition_rel__new(F, A);
rel_f := composition_rel__new(G, A);
-- Make a couple of memberships.
rel_g := membership_rel__new(B, joe);
rel_h := membership_rel__new(B, jane);
rel_i := membership_rel__new(B, betty);
rel_j := membership_rel__new(A, bob);
rel_k := membership_rel__new(A, betty);
rel_l := membership_rel__new(E, betty);
delete from acs_logs;
return null;
END;
$$ LANGUAGE plpgsql;
--
-- procedure check_groups/0
--
CREATE OR REPLACE FUNCTION check_groups(
) RETURNS integer AS $$
DECLARE
gp record;
v_rec record;
BEGIN
for gp in select * from groups order by group_name LOOP
if NOT acs_group__check_representation(gp.group_id) then
raise notice 'Group % (%) failed', gp.group_name, gp.group_id;
else
raise notice 'Group % (%) passed', gp.group_name, gp.group_id;
end if;
end LOOP;
for v_rec in select group_id from groups_test_groups order by sorder desc
LOOP
raise notice 'dropping %', v_rec.group_id;
PERFORM acs_group__delete(v_rec.group_id);
end LOOP;
delete from groups_test_groups;
for v_rec in select user_id from groups_test_users order by sorder
LOOP
raise notice 'dropping %', v_rec.user_id;
PERFORM acs_user__delete(v_rec.user_id);
end LOOP;
delete from groups_test_users;
return null;
END;
$$ LANGUAGE plpgsql;
select test_groups();
select check_groups();
drop table groups_test_groups;
drop table groups_test_users;
drop function test_groups();
drop function check_groups();
select log_level, log_key, message
from acs_logs
where log_level = 'error';