Acceptance and Regression Tests for Calendar Package and Associated Modules
===========================================================================


Calendar Package
----------------

Personal Calendar:

1. Enter /calendar/ as the url for your server.  You should see a page
beginning "Calendar for <your name>".  Make sure everything on this
page looks reasonable and there are no errors.  There should be a
mini-calendar widget on the left hand side, with some links below.
Taking up the rest of the space should be a detailed calendar in one
of the following view modes: list, day, week, month or year.


Views:

1. Select each of the different views by clicking on the corresponding
links at the top of the mini-calendar widget.
2. In the List view -- test sorting by different columns.
3. In the Day view -- test the "Compressed View" toggle.


Navigation:

1. The following actions should maintain the same view.  Make sure
   that the main calendar navigates to the expected date.
2. Select days in mini-calendar in list, day and week views.  The date
   selected should appear in bold and not be a link.
3. Select months in mini-calendar in month view.  The month
   selected should appear in bold and not be a link.
4. Select years in mini-calendar in year view.  The year
   selected should appear in bold and not be a link.
5. Enter a date in date box in mini-calendar.
6. Select "Today" link in mini-calendar.
7. Selecting arrows in mini-calendar should move by month or by year in month
and year view.
8. Selecting arrows in specific view should move the date by the
appropriate interval in the appropriate direction.
9. Selecting the day in week, month, or year view should take you to the
day view for the appropiate day.
10. Selecting the month in year view should take you to the month view for
the appropriate month.


Add a personal item:

1. Each of the following methods should bring you to a form where you
can enter information for the item.  Title, date and no time/start
time are required fields, but date and time already have default
values.  Repeating items will be tested later.  Check that the
following defaults hold.  Check that the item is added correctly.
2. From add personal item link: date should default to the currently
viewed date.  Time should be 12-1pm.
3. From No Time in day view (may need to turn compressed view off):
Date should be day being viewed and No Time checkbox should be checked.
4. From specific time in day view: Date should be day being viewed,
start time should be time selected, end time should be one hour later.
5. From "Add Item" in week view: date should be same as day Add Item
was selected from.  Time should be 12-1pm.


View item:

1. Selecting an item's title from any view should display details for
   that view, including links to edit, add attachment, and delete.
   Check that all links on all views work properly.  Note: "Work
   absences" work differently.  Clicking on the title of these items
   will take you to the intranet edit absence page for that item.


Edit item:

1. While viewing an item, select "Edit".  You should get a form
   allowing you to edit the title, date, times, types, and description
   for the item.  Non-recurring items should have a "Repeat?" field
   but not an "Update?" field.
2. Edit an item and make sure the change is reflected in the calendar.


Add repeating item:

1. When adding an item, select Yes for "Repeat?" After clicking "Add
Item", you should get a form summarizing the date and time of the item
and providing fields to set how the item repeats.  For all the
following cases, check that the item does indeed show up multiple
times as expected.
2. Add an item that repeats daily.
3. Add an item that repeats weekly, specifying multiple days of the
week.
4. Add an item that repeats every month on a particular date.
5. Add an item that repeats every month on a particular day of a
particular week.
6. By selecting a date in the 4th or 5th week of a month, a third
option will appear allowing you to repeat an item on a particular day
of the Last week of a month.  Make sure this is the case and then add
such an item.
7. Add an item that repeats yearly.


Edit repeating item:

1. When you select Edit when viewing a repeating item, at the bottom
   of the form will appear a field "Update?" with choices "Current
   instance only" and "All repeating instances."
2. Edit an item, changing the title and selecting "Current instance
   only." Check that the title has changed only for that item.
3. Edit an item, changing the title and selecting "All repeating
   instances." Check that the title has changed for all the repeating items.
4. Edit an item, changing the time and selecting "Current instance
   only." Check that the time has changed only for that item.
5. Edit an item, changing the time and selecting "All repeating
   instances." Check that the time has changed for all the repeating items.


Add attachment to item:

1. View an item.  Select "Add Attachment."  You should be taken to a
   form allowing you to add an attachment either by uploading a file,
   by entering a url, or by adding text.

2. Add an attachment by entering a title and some text in the "Text:"
   box.  You should be taken back to the item view which should show a
   link for that attachment you added.

3. Select the title of your attachment and make sure that the text
   appears properly.

4. Return to the item view and select the "Calendar Attachments"
   link.  You should be taken to a page listing all calendar
   attachements.

5. Select "manage" for the attachment you added.  You should be taken
   to a page where you can perform various actions on the attachment.

6. Select "edit" for the attachment.  You should be taken to a page
   where you can edit the text you entered.  Edit the text and make
   sure that the change is reflected when you view the attachment again.

7. Add a url attachment to an item.  When you return to viewing the
   item, clicking on the attachment title should navigate to the url.


Types:

1. Select "Types for Your Calendar".
2. Add a type.
3. Edit the name of a type.
4. Delete a type.
5. Add two more types.
6. Go back to /calendar/ (the "calendar" link in the bar doesn't go
back to the calendar as you might expect.) Add a new item. Select two
types for the item.  Make sure that the types show up properly when
viewing the item and in the New Items section of the List view.


Delete item:

I. View a non-repeating item:
 A. With Javascript enabled:
  1. Select Delete, then click Cancel on the dialog box that pops up.
     Nothing else should happen.  
  2. Select Delete again, then click OK. You should be returned to the
     view where you selected the item and the deleted item should be
     gone. 
 B. With Javascript disabled:
  1. Select Delete. You should see a confirmation form replace the
     item view.  Select Cancel.  You should be returned to the item
     view.
  2. Select Delete again, then click OK. You should be returned to the
     view where you selected the item and the deleted item should be
     gone. 
II. View a repeating item that has more than two instances:
 A. Select Delete.  You shoud see a confirmation form replace the item
    view.  The question should be "Are you sure you want to delete
    <item title>?"  There should be two radio buttons: "Current
    instance only" and "All occurrences."
 B. Click Cancel.  You should be returned to the item view.
 C. Select Delete again, click "Current instance only" and then click
    "OK."  You should be returned to the view where you selected the
    item and that instance should be deleted.  The other instances
    should still be there.
 D. Now view another instance, select Delete, click "All occurences"
    and then click "OK".  You should be returned to the originating
    view and all occurences of the item should be deleted.


Group calendars:

1. Below the mini-calendar there should be a table labeled
   "Calendars:".  At a	minimum, you should see "Your Personal
   Calendar".  If you belong to groups that have group calendars, you
   will see additional links to those group calendars.  You'll also
   see a column labeled "View Items" with check boxes next to the
   groups.  If you don't have at least two group calendars listed, you'll
   need to be an administrator so that you can either add yourself to
   a group with a calendar, or add a calendar to a group you belong
   to.  If you need additional group calendars, see "Manage group
   calendars" or "/admin/calendar/" below.

2. Select a group calendar.  The header should change to "Calendar for
   <group name>" and any personal items that were displayed on your
   calendar should disappear.  However, the calendar should be in the
   same view as before.

3. Select "Your Personal Calendar".  The calendar should appear as it
   did before selecting a group calendar.


Add group item:

1. Go back to a group calendar.  The link labeled "Add Personal Item"
   should have changed to "Add Group Item".

2. Select the link and add an item to your group calendar.  It should
   show up normally on the group calendar.


Group items on personal calendar:

1. Now select the "Your Personal Calendar" link.  The item you added
   to the group calendar should appear on your personal calendar.  It
   should display with "(for <group name>)" after the title.

2. Toggling "View Items" by clicking on the checkbox next to the group
   link should add or remove that group's items as appropriate.  

3. Now turn "View Items" off for all groups and check that each view
   displays properly.


Repeat personal item tests for group item:

1. Repeat the tests you performed with adding and editing personal
   items but now with group items.


Manage group calendars:

1. If you are an administrator for any groups, you should see a link
   to "Manage group calendars" at the bottom of the left side.  Select
   this link.  You should be taken to a page with two sections: "Your
   Groups' Calendars" and "Create Group Calendar".

2. First, make sure you administrate a group that you are willing to
   test on by adding and then deleting the group calendar.  That
   group's name should appear in the list under "Create Group
   Calendar".  Select that group and then click "Create Group
   Calendars".  The page should refresh with the group you selected
   moved from the "Create Group Calendar" list to the "Your Groups'
   Calendars" list.

3. Select that group and make sure it goes to the correct admin page.

4. Navigate back and select the "add types" link next to that
   calendar.  Add a type.  Check that the new type shows up when
   adding an item for that group.

5. Go back to the "Manage group calendars" page and select "delete
   calendar" for your group. This will take you to a confirmation
   page.

6. Select "No, Cancel"; you should be taken back to the manage page.

7. Repeat, selecting "Yes, Proceed".  You should be returned to the
   manage page and the group should have moved from "Your Groups'
   Calendars" to "Create Group Calendars".


/admin/calendar/:

1. If you are a site-wide administrator, you should be able to
   navigate to /admin/calendar/.  You should see two sections: "Group
   Types With Calendars" and "Groups With Calendars".

2. Under "Groups With Calendars" you should see "Create a group
   calendar" followed by a list of groups with calendars.  Select
   "Create....".  You should see a long list of groups.  Select one
   and then click "Create Group Calendars".  You should be returned to
   the /admin/calendar/ page and the new group calendar should be
   listed under "Groups With Calendars."

3. Select "delete calendar" for the calendar you just added.  This
   will take you to a confirmation page. 

4. Select "No, Cancel"; you should be taken back to the admin page.

5. Repeat, selecting "Yes, Proceed".  You should be returned to the
   admin page and the group should no longer be
   listed under "Groups With Calendars."

6. In the "Group Types With Calendars", select a group type that is
   not already selected and click "Update".  You should be returned to
   the admin page, the group type you selected should remain
   highlighted, and all groups of that type should have been added to
   the list under "Groups With Calendars."

7. Add a new group of the type you chose.  Navigate back to
   /admin/calendar/.  The new group will not be listed under "Groups
   With Calendars." 

8. Select "Update."  Now the new group should be listed.

8. Delete the group you just added. Navigate back to
   /admin/calendar/.  The group should no longer be listed under
   "Groups With Calendars."  

9. Deselect the group type you selected under "Group Types With
   Calendars", then click "Update."  When you return to the admin
   page, the group type should remain unselected, but the group
   calendars added previously should remain.

10. Add another group of the same type.  This time it should not have
    a group calendar created.

Regression Tests
----------------

SDM #7573:

1. Add an item with a duration long enough that the item extends over
   two days.  E.g. Start time: 11pm, duration: 120.
2. View the day view for the date the new item starts, e.g. by
   clicking on the date from the item detail.
3. There should be no errors and the end date should be displayed as
   part of the item.

Intranet Module
---------------

1. Calendar link on /intranet/ad-index.tcl links to group calendar page
   showing absences and old calendar items.

2. Go to /intranet/absences/ (follow "Work absences" link from
   workspace.)  Select "Add an office absence."  Add an absence.
   There should be no errors.  Check that the absence shows up on the
   monthly calendar. Clicking the link should go to the correct "Edit
   absence" page.

3. Edit the absence.  Check that the change shows up in the calendar.

4. Delete the absence.  Insure that it is gone from the calendar.


Reservations Module
-------------------


cr-calendar integration:

1. Navigate to /reservations/cr/. Make one reservation, leave "mark
   calendar" checkbox unchecked. 
   result: reservation is made successfully.
           no calendar relevant info asked.
           no calendar marked.

2. Make one reservation, check "mark calendar" checkbox. Then choose
   a group to mark calendar on the next page
   result: reservation is made successfully.
           the group calendar is marked with correct date time and
	   meeting information. The group calendar item shows on members'
	   calendars. 

3. Make one reservation, check "mark calendar" checkbox. Then choose
   a list of users to mark calendar on the next page
   result: reservation is made successfully.
           All users in the list have calendars marked.

4. Cancel one reservation, which isn't marked on anyone's calendar
   result: the reservation is cancelled normally.

5. Cancel one reservation, which is marked on a group'd calendar
   result: the reservation is cancelled normally.
           the calendar item is removed from that group's calendar

6. Cancel one reservation, which is marked on a list of users' calendars
   result: the reservation is cancelled normally.
           the calendar item is removed from all users' calendars in
           that list

massage-calendar integration:

1. Navigate to /reservations/massage/ Make a reservation as user A
   result: the reservation is made normally
           the calendar item is inserted with correct time and info

2. Make a reservation as user B for the same session
   result: the reservation is made normally
           the calendar item is inserted with correct time and info

3. Cancel the reservation made as user A
   result: the reservation is cancelled normally
           the calendar item on user A's calendar is removed
           the calendar item on user B's calendar remains