Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.html,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.html 30 Sep 2003 12:10:03 -0000 1.3 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.html 7 Aug 2017 23:47:59 -0000 1.4 @@ -1,418 +1,418 @@ - - - -Group Admin Pages - Acceptance test - - - - -

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
-
-
- -
    - -
  1. Go to /admin/group-types and select "Developer defined test types" -
  2. Add a permissible rel type of Membership Relation -
  3. Add a group named "Test group" - -
- - - -

GROUP TYPE PAGES BASIC FUNCTIONALITY

- -(Start at /admin) -

- -

    - -
  1. Click on group types - -
  2. Click on Groups - -
  3. Click on "Group name" under "Attributes of this type of group" - -
  4. Ensure that you see the properties of the attribute and that you - are offered no administrative links - -
  5. Make sure you cannot add attributes or do anything under administration - -
  6. Make sure you see Composition and Membership Relation as the - default relationship types - -
  7. Add a new group called "Foobar" - Make sure Foobar appears after - adding the group - -
  8. Click on Foobar - -
  9. Click on nuke this group then click no. Ensure group is not deleted - -
  10. Click on nuke this group then click yes. Group should no longer show up - -
  11. Recreate the group Foobar - -
  12. Click on foobar, then change the name to "ArsDigita" - -
  13. Change ArsDigita's join policy to closed - -
- -

DYNAMICALLY EXTENDING GROUPS

- -(Start at /admin/group-types/) - -
    - -
  1. 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). - -
  2. Define another group type, child of group, named "Test" - -
  3. Define another group type, 'subproject', child of project. Ensure - that the index page correctly displays the hierarchy. - -
  4. Define a new group type with group type = group. See error - message saying type already exists. - -
  5. Go back to the index page (/admin/group-types). - -
  6. 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 -
    - -
  7. 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" - -
  8. Create a group of type test. - -
  9. Delete the test group type (first verify that the cancel button - works) - -
  10. Go to the "project" group type - -
  11. Add a required attribute called "Project type" of datatype - enumeration. Values are "Client" "Toolkit" - -
  12. Add an optional attribute "Monthly fee" of type integer and - default of "10000" - -
  13. Add a third attribute called test. - -
  14. Make sure you can see all the attributes. Delete the test attribute - -
  15. 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 -
    - -
  16. Go to "/admin/object-types/one?object_type=subproject" and - ensure the new attributes of project are in the pl/sql package - -
  17. 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. - -
  18. Add a group of type project named GuideStar.org - -
- -

RELATIONSHIP TYPE PAGES BASIC FUNCTIONALITY

- -
    - -
  1. 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. - -
  2. Select the employment relation and add an attribute age (integer, - not required) - -
  3. Delete the employment relationship type. - -
  4. Re-add the employment relationship type (we're testing to make - sure the age attribute is correctly removed and flushed from the - cache) - -
  5. Click on membership relation, then click on create subtype - -
  6. Click on membership relation -> Create subtype - type: project_lead_relation - name: Project Lead - between projects (the composite) and persons (the project leader - new role) - -
  7. Create a new, dummy rel type, subtype of Project Lead - Relation. Make sure the only things in object type one are - project and subproject - -
  8. Select the dummy relationship type and then delete it. - -
  9. Select the Employment relation and add a required attribute - "salary" (type integer) - -
- -

SEGMENTS, CONSTRAINTS AND RELATIONS

- -
    - -
  1. Go back to the admin page (/admin) - -
  2. Click on the Groups -> GuideStar.org. Add ArsDigita as a component - -
  3. Remove the composition rel type from this group - -
  4. Readd the composition rel type. Make sure arsdigita doesn't show up - -
  5. remove the composition rel type - -
  6. Add a permissible rel type: project_lead_relation - -
  7. Click yes to create a rel segment named "GuideStar Project Leads" - -
  8. Go back to /admin/groups - -
  9. Click on "relationship to site" - -
  10. Remove yourself from the group. - -
  11. Add yourself again as a member (using the membership - relation). You will have to select an existing party from the - system. - -
  12. Make sure you see the segment "Main Site Members" for parties - with a membership relation to the main site. - -
  13. Go to the ArsDigita group. - -
  14. Add guidestar.org as a component - -
  15. Remove the membership relation type from this group - -
  16. Add the employment relation type - -
  17. Create a segment named "ArsDigita employees" - -
  18. Add a constraint named "ArsDigita employees must be Main Site - Members" for employees and the segment "Main Site Members" - -
  19. Go back to the guidestar.org group - -
  20. Add yourself as a project lead. - -
  21. Click on the project lead segment "GuideStar Project Leads" - -
  22. Click delete this segment. Say no. - -
  23. Click delete this segment. Say Yes. - -
  24. Recreate the "GuideStar Project Leads" segment - -
  25. Add a constraint named "Project leads must be employees" that - says all "project leaders must be employees of ArsDigita" - -
  26. Make sure you see yourself as a violation. Remove the violating - relation and finish adding the constraint - -
  27. 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" - -
  28. Add yourself as an arsdigita employee - -
  29. Make yourself the project lead on guidestar.org - -
  30. 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. - -
  31. 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. - -
    - -
  1. Go to /acs-admin/users and add 4 users - -
  2. 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. - -
  3. Try to remove your Membership relation. You should see only one - constraint violation. - -
  4. Remove one of the other people from the registered users - group. You should be allowed to do it immediately. - -
  5. Add back the person you removed. - -
  6. Remove yourself from the registered users group. Make yourself - a project lead on guidestar again. - -
  7. Make another user a project lead on guidestar. - -
- - - -

CLEANING UP

- -
    -
  1. Go to /admin/group-types - -
  2. Select the project group type - -
  3. Delete this group type. Should get prompted to delete sub - projects group type. - -
  4. Delete the sub projects group type. - -
  5. Should get prompt to delete the project lead rel type - -
  6. Delete the project lead rel type. Continue until you delete the - project group type. - -
  7. Delete the ArsDigita group. - -
  8. Go to /admin/rel-types/ - -
  9. Click on "View all roles" - -
  10. Click on "Project Leader" - delete this role - -
  11. Click on "Employer" then on Employment Relation - -
  12. Delete the employment relation type. - -
  13. Delete the employee, employer, and project_leader roles - -
  14. Delete any groups you created for the developer defined type - -
  15. 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 + + + + +

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
+
+
+ +
    + +
  1. Go to /admin/group-types and select "Developer defined test types" +
  2. Add a permissible rel type of Membership Relation +
  3. Add a group named "Test group" + +
+ + + +

GROUP TYPE PAGES BASIC FUNCTIONALITY

+ +(Start at /admin) +

+ +

    + +
  1. Click on group types + +
  2. Click on Groups + +
  3. Click on "Group name" under "Attributes of this type of group" + +
  4. Ensure that you see the properties of the attribute and that you + are offered no administrative links + +
  5. Make sure you cannot add attributes or do anything under administration + +
  6. Make sure you see Composition and Membership Relation as the + default relationship types + +
  7. Add a new group called "Foobar" - Make sure Foobar appears after + adding the group + +
  8. Click on Foobar + +
  9. Click on nuke this group then click no. Ensure group is not deleted + +
  10. Click on nuke this group then click yes. Group should no longer show up + +
  11. Recreate the group Foobar + +
  12. Click on foobar, then change the name to "ArsDigita" + +
  13. Change ArsDigita's join policy to closed + +
+ +

DYNAMICALLY EXTENDING GROUPS

+ +(Start at /admin/group-types/) + +
    + +
  1. 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). + +
  2. Define another group type, child of group, named "Test" + +
  3. Define another group type, 'subproject', child of project. Ensure + that the index page correctly displays the hierarchy. + +
  4. Define a new group type with group type = group. See error + message saying type already exists. + +
  5. Go back to the index page (/admin/group-types). + +
  6. 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 +
    + +
  7. 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" + +
  8. Create a group of type test. + +
  9. Delete the test group type (first verify that the cancel button + works) + +
  10. Go to the "project" group type + +
  11. Add a required attribute called "Project type" of datatype + enumeration. Values are "Client" "Toolkit" + +
  12. Add an optional attribute "Monthly fee" of type integer and + default of "10000" + +
  13. Add a third attribute called test. + +
  14. Make sure you can see all the attributes. Delete the test attribute + +
  15. 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 +
    + +
  16. Go to "/admin/object-types/one?object_type=subproject" and + ensure the new attributes of project are in the pl/sql package + +
  17. 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. + +
  18. Add a group of type project named GuideStar.org + +
+ +

RELATIONSHIP TYPE PAGES BASIC FUNCTIONALITY

+ +
    + +
  1. 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. + +
  2. Select the employment relation and add an attribute age (integer, + not required) + +
  3. Delete the employment relationship type. + +
  4. Re-add the employment relationship type (we're testing to make + sure the age attribute is correctly removed and flushed from the + cache) + +
  5. Click on membership relation, then click on create subtype + +
  6. Click on membership relation -> Create subtype + type: project_lead_relation + name: Project Lead + between projects (the composite) and persons (the project leader + new role) + +
  7. Create a new, dummy rel type, subtype of Project Lead + Relation. Make sure the only things in object type one are + project and subproject + +
  8. Select the dummy relationship type and then delete it. + +
  9. Select the Employment relation and add a required attribute + "salary" (type integer) + +
+ +

SEGMENTS, CONSTRAINTS AND RELATIONS

+ +
    + +
  1. Go back to the admin page (/admin) + +
  2. Click on the Groups -> GuideStar.org. Add ArsDigita as a component + +
  3. Remove the composition rel type from this group + +
  4. Readd the composition rel type. Make sure arsdigita doesn't show up + +
  5. remove the composition rel type + +
  6. Add a permissible rel type: project_lead_relation + +
  7. Click yes to create a rel segment named "GuideStar Project Leads" + +
  8. Go back to /admin/groups + +
  9. Click on "relationship to site" + +
  10. Remove yourself from the group. + +
  11. Add yourself again as a member (using the membership + relation). You will have to select an existing party from the + system. + +
  12. Make sure you see the segment "Main Site Members" for parties + with a membership relation to the main site. + +
  13. Go to the ArsDigita group. + +
  14. Add guidestar.org as a component + +
  15. Remove the membership relation type from this group + +
  16. Add the employment relation type + +
  17. Create a segment named "ArsDigita employees" + +
  18. Add a constraint named "ArsDigita employees must be Main Site + Members" for employees and the segment "Main Site Members" + +
  19. Go back to the guidestar.org group + +
  20. Add yourself as a project lead. + +
  21. Click on the project lead segment "GuideStar Project Leads" + +
  22. Click delete this segment. Say no. + +
  23. Click delete this segment. Say Yes. + +
  24. Recreate the "GuideStar Project Leads" segment + +
  25. Add a constraint named "Project leads must be employees" that + says all "project leaders must be employees of ArsDigita" + +
  26. Make sure you see yourself as a violation. Remove the violating + relation and finish adding the constraint + +
  27. 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" + +
  28. Add yourself as an arsdigita employee + +
  29. Make yourself the project lead on guidestar.org + +
  30. 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. + +
  31. 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. + +
    + +
  1. Go to /acs-admin/users and add 4 users + +
  2. 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. + +
  3. Try to remove your Membership relation. You should see only one + constraint violation. + +
  4. Remove one of the other people from the registered users + group. You should be allowed to do it immediately. + +
  5. Add back the person you removed. + +
  6. Remove yourself from the registered users group. Make yourself + a project lead on guidestar again. + +
  7. Make another user a project lead on guidestar. + +
+ + + +

CLEANING UP

+ +
    +
  1. Go to /admin/group-types + +
  2. Select the project group type + +
  3. Delete this group type. Should get prompted to delete sub + projects group type. + +
  4. Delete the sub projects group type. + +
  5. Should get prompt to delete the project lead rel type + +
  6. Delete the project lead rel type. Continue until you delete the + project group type. + +
  7. Delete the ArsDigita group. + +
  8. Go to /admin/rel-types/ + +
  9. Click on "View all roles" + +
  10. Click on "Project Leader" - delete this role + +
  11. Click on "Employer" then on Employment Relation + +
  12. Delete the employment relation type. + +
  13. Delete the employee, employer, and project_leader roles + +
  14. Delete any groups you created for the developer defined type + +
  15. 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$ + +