Group Admin Pages - Acceptance
test
ACS subsite docs : Group Admin Pages -
Acceptance test
DEVELOPER DEFINED GROUP TYPES TEST
The first thing we have to test is developer defined group
types working in conjunction with the user defined ones.
Create the following object type in SQL*Plus.
begin
acs_object_type.create_type (
supertype => 'group',
object_type => 'developer_defined_test_type',
pretty_name => 'Developer defined test type',
pretty_plural => 'Developer defined test types',
table_name => 'developer_defined_test_types',
id_column => 'test_group_id',
package_name => 'developer_defined_test_type',
name_method => 'acs_group.name'
);
end;
/
show errors;
create table developer_defined_test_types (
test_group_id integer primary key references groups(group_id)
);
create or replace package developer_defined_test_type
as
function new (
TEST_GROUP_ID IN DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE DEFAULT NULL,
GROUP_NAME IN GROUPS.GROUP_NAME%TYPE,
OBJECT_TYPE IN ACS_OBJECTS.OBJECT_TYPE%TYPE DEFAULT 'developer_defined_test_type'
) return DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE;
procedure delete (
TEST_GROUP_ID in DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE
);
end developer_defined_test_type;
/
show errors
create or replace package body developer_defined_test_type
as
function new (
TEST_GROUP_ID IN DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE DEFAULT NULL,
GROUP_NAME IN GROUPS.GROUP_NAME%TYPE,
OBJECT_TYPE IN ACS_OBJECTS.OBJECT_TYPE%TYPE DEFAULT 'developer_defined_test_type'
) return DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE
is
v_TEST_GROUP_ID DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE;
begin
v_TEST_GROUP_ID := acs_group.new (
group_id => new.TEST_GROUP_ID,
GROUP_NAME => new.GROUP_NAME,
OBJECT_TYPE => new.OBJECT_TYPE
);
insert into DEVELOPER_DEFINED_TEST_TYPES
(TEST_GROUP_ID)
values
(v_TEST_GROUP_ID);
return v_TEST_GROUP_ID;
end new;
procedure delete (
TEST_GROUP_ID in DEVELOPER_DEFINED_TEST_TYPES.TEST_GROUP_ID%TYPE
)
is
begin
acs_group.del( developer_defined_test_type.delete.TEST_GROUP_ID );
end delete;
end developer_defined_test_type;
/
show errors
- Go to /admin/group-types and select "Developer
defined test types"
- Add a permissible rel type of Membership
Relation
- Add a group named "Test group"
GROUP TYPE PAGES BASIC FUNCTIONALITY
(Start at /admin)
- Click on group types
- Click on Groups
- Click on "Group name" under "Attributes of
this type of group"
- Ensure that you see the properties of the attribute and
that you are offered no administrative links
- Make sure you cannot add attributes or do anything under
administration
- Make sure you see Composition and Membership Relation as
the default relationship types
- Add a new group called "Foobar" - Make sure
Foobar appears after adding the group
- Click on Foobar
- Click on nuke this group then click no. Ensure group is
not deleted
- Click on nuke this group then click yes. Group should no
longer show up
- Recreate the group Foobar
- Click on foobar, then change the name to
"ArsDigita"
- Change ArsDigita's join policy to closed
DYNAMICALLY EXTENDING GROUPS
(Start at /admin/group-types/)
- Click on "Define a new group type" and create a
new group type called "Project" with type
"project". Ensure that all the fields you see are
required (try submitting without entering in anything).
- Define another group type, child of group, named
"Test"
- Define another group type, 'subproject', child of
project. Ensure that the index page correctly displays the
hierarchy.
- Define a new group type with group type = group. See
error message saying type already exists.
- Go back to the index page
(/admin/group-types).
-
Click on the Test group type. Make sure that:
- there are no groups
- Group name attribute is inherited from groups
- you have a link to add an attribute
- you see Composition and Membership Relation as the
default relationship types
- You have a link to change the default join
policy
- You have a link to delete the group type
- Click on "Add a permissible relationship type."
Ensure that you are not given a select bar but are offered a link
to "create a new relationship type"
- Create a group of type test.
- Delete the test group type (first verify that the cancel
button works)
- Go to the "project" group type
- Add a required attribute called "Project type"
of datatype enumeration. Values are "Client"
"Toolkit"
- Add an optional attribute "Monthly fee" of type
integer and default of "10000"
- Add a third attribute called test.
- Make sure you can see all the attributes. Delete the test
attribute
-
Go to
"/admin/object-types/one?object_type=project" and ensure
that start_date and monthly fees are listed as attributes. Also
make sure:
- test attribute is not visible
- monthly_fee has a default specified (NULL) in the pl/sql
parameter list
- start_date has no default specified
- Go to
"/admin/object-types/one?object_type=subproject" and
ensure the new attributes of project are in the pl/sql
package
- Now go back to the group type admin page for the
"Projects" group type. Remove the composition relation.
Make sure you get a link back to add a relationship type. Add back
the composition relation.
- Add a group of type project named
GuideStar.org
RELATIONSHIP TYPE PAGES BASIC FUNCTIONALITY
- Create a new relationship type, Employment relation, that
is a subtype of Membership relation, between group and person.
Group has role of employer, person role of employee.
- Select the employment relation and add an attribute age
(integer, not required)
- Delete the employment relationship type.
- Re-add the employment relationship type (we're
testing to make sure the age attribute is correctly removed and
flushed from the cache)
- Click on membership relation, then click on create
subtype
- Click on membership relation -> Create subtype type:
project_lead_relation name: Project Lead between projects (the
composite) and persons (the project leader new role)
- Create a new, dummy rel type, subtype of Project Lead
Relation. Make sure the only things in object type one are project
and subproject
- Select the dummy relationship type and then delete
it.
- Select the Employment relation and add a required
attribute "salary" (type integer)
SEGMENTS, CONSTRAINTS AND RELATIONS
- Go back to the admin page (/admin)
- Click on the Groups -> GuideStar.org. Add ArsDigita as
a component
- Remove the composition rel type from this
group
- Re-add the composition rel type. Make sure arsdigita
doesn't show up
- Remove the composition rel type
- Add a permissible rel type:
project_lead_relation
- Click yes to create a rel segment named "GuideStar
Project Leads"
- Go back to /admin/groups
- Click on "relationship to site"
- Remove yourself from the group.
- Add yourself again as a member (using the membership
relation). You will have to select an existing party from the
system.
- Make sure you see the segment "Main Site
Members" for parties with a membership relation to the main
site.
- Go to the ArsDigita group.
- Add guidestar.org as a component
- Remove the membership relation type from this
group
- Add the employment relation type
- Create a segment named "ArsDigita
employees"
- Add a constraint named "ArsDigita employees must be
Main Site Members" for employees and the segment "Main
Site Members"
- Go back to the guidestar.org group
- Add yourself as a project lead.
- Click on the project lead segment "GuideStar Project
Leads"
- Click delete this segment. Say no.
- Click delete this segment. Say Yes.
- Recreate the "GuideStar Project Leads"
segment
- Add a constraint named "Project leads must be
employees" that says all "project leaders must be
employees of ArsDigita"
- Make sure you see yourself as a violation. Remove the
violating relation and finish adding the constraint
- Try to add a project leader to guidestar. You should see
that there "There is no other Person that can be added as
Project Leader to GuideStar.Org"
- Add yourself as an arsdigita employee
- Make yourself the project lead on
guidestar.org
- Go back to /admin/groups and select "relationship
typ site." Remove your membership relation. You should get
prompted to remove relation to arsdigita, then to guidestar. Remove
all of these relations.
- Make yourself a project lead of guidestar
again.
Testing with more Users
Now we're going to test that the user interface remains
consistent if there are a few more users.
- Go to /acs-admin/users and add 4 users
- Go to /admin/groups and click on "relationship to
site." You should see all of the people you just entered
listed as members of the subsite.
- Try to remove your Membership relation. You should see
only one constraint violation.
- Remove one of the other people from the registered users
group. You should be allowed to do it immediately.
- Add back the person you removed.
- Remove yourself from the registered users group. Make
yourself a project lead on guidestar again.
- Make another user a project lead on
guidestar.
CLEANING UP
- Go to /admin/group-types
- Select the project group type
- Delete this group type. Should get prompted to delete sub
projects group type.
- Delete the sub projects group type.
- Should get prompt to delete the project lead rel
type
- Delete the project lead rel type. Continue until you
delete the project group type.
- Delete the ArsDigita group.
- Go to /admin/rel-types/
- Click on "View all roles"
- Click on "Project Leader" - delete this
role
- Click on "Employer" then on Employment
Relation
- Delete the employment relation type.
- Delete the employee, employer, and project_leader
roles
- Delete any groups you created for the developer defined
type
-
Drop the developer defined type (in SQL*Plus):
exec acs_object_type.drop_type('developer_defined_test_type');
drop table developer_defined_test_types;
drop package developer_defined_test_type;
Michael
Bryzek
$Id: group-admin-pages-acceptance-test.html,v
1.4.2.1 2019/10/05 13:01:38 gustafn Exp $