am 44ae6d2f: am f2d43c39: Merge "Update unit tests for invitation creation" into froyo

Merge commit '44ae6d2fa2e79de533ceb1fdf50c578a4ed84a3f' into kraken

* commit '44ae6d2fa2e79de533ceb1fdf50c578a4ed84a3f':
  Update unit tests for invitation creation
This commit is contained in:
Marc Blank 2010-04-29 20:30:11 -07:00 committed by Android Git Automerger
commit 25fa612444

View File

@ -215,8 +215,6 @@ public class CalendarUtilitiesTests extends AndroidTestCase {
Entity entity = setupTestEventEntity(organizer, attendee, title);
ContentValues entityValues = entity.getEntityValues();
entityValues.put(Events.ORIGINAL_EVENT, 69);
// April 12, 2010 is a Monday
entityValues.put(Events.RRULE, "FREQ=WEEKLY;BYDAY=MO");
// The exception will be on April 26th
entityValues.put(Events.ORIGINAL_INSTANCE_TIME,
Utility.parseEmailDateTimeToMillis("2010-04-26T18:30:00Z"));
@ -392,6 +390,83 @@ public class CalendarUtilitiesTests extends AndroidTestCase {
assertNull(vevent.get("X-MICROSOFT-CDO-ALLDAYEVENT"));
}
public void testCreateMessageForEntity_Recurring() throws IOException {
// Set up the "event"
String title = "Discuss Unit Tests";
Entity entity = setupTestEventEntity(ORGANIZER, ATTENDEE, title);
// Set up a RRULE for this event
entity.getEntityValues().put(Events.RRULE, "FREQ=DAILY");
// Create a dummy account for the attendee
Account account = new Account();
account.mEmailAddress = ORGANIZER;
// The uid is required, but can be anything
String uid = "31415926535";
// Create the outgoing message
Message msg = CalendarUtilities.createMessageForEntity(mContext, entity,
Message.FLAG_OUTGOING_MEETING_INVITE, uid, account);
// First, we should have a message
assertNotNull(msg);
// Now check some of the fields of the message
assertEquals(Address.pack(new Address[] {new Address(ATTENDEE)}), msg.mTo);
assertEquals(title, msg.mSubject);
// And make sure we have an attachment
assertNotNull(msg.mAttachments);
assertEquals(1, msg.mAttachments.size());
Attachment att = msg.mAttachments.get(0);
// And that the attachment has the correct elements
assertEquals("invite.ics", att.mFileName);
assertEquals(Attachment.FLAG_ICS_ALTERNATIVE_PART,
att.mFlags & Attachment.FLAG_ICS_ALTERNATIVE_PART);
assertEquals("text/calendar; method=REQUEST", att.mMimeType);
assertNotNull(att.mContentBytes);
assertEquals(att.mSize, att.mContentBytes.length);
// We'll check the contents of the ics file here
BlockHash vcalendar = parseIcsContent(att.mContentBytes);
assertNotNull(vcalendar);
// We should have a VCALENDAR with a REQUEST method
assertEquals("VCALENDAR", vcalendar.name);
assertEquals("REQUEST", vcalendar.get("METHOD"));
// We should have two blocks under VCALENDAR (VTIMEZONE and VEVENT)
assertEquals(2, vcalendar.blocks.size());
// This is the time zone that should be used
TimeZone timeZone = TimeZone.getDefault();
BlockHash vtimezone = vcalendar.blocks.get(0);
// It should be a VTIMEZONE for timeZone
assertEquals("VTIMEZONE", vtimezone.name);
assertEquals(timeZone.getID(), vtimezone.get("TZID"));
BlockHash vevent = vcalendar.blocks.get(1);
// It's a VEVENT with the following fields
assertEquals("VEVENT", vevent.name);
assertEquals("Meeting Location", vevent.get("LOCATION"));
assertEquals("0", vevent.get("SEQUENCE"));
assertEquals("Discuss Unit Tests", vevent.get("SUMMARY"));
assertEquals(uid, vevent.get("UID"));
assertEquals("MAILTO:" + ATTENDEE,
vevent.get("ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE"));
// We should have DTSTART/DTEND with time zone
assertNotNull(vevent.get("DTSTART;TZID=" + timeZone.getID()));
assertNotNull(vevent.get("DTEND;TZID=" + timeZone.getID()));
assertNull(vevent.get("DTSTART"));
assertNull(vevent.get("DTEND"));
assertNull(vevent.get("DTSTART;VALUE=DATE"));
assertNull(vevent.get("DTEND;VALUE=DATE"));
// This shouldn't exist for this event
assertNull(vevent.get("X-MICROSOFT-CDO-ALLDAYEVENT"));
}
public void testCreateMessageForEntity_Exception_Cancel() throws IOException {
// Set up the "exception"...
String title = "Discuss Unit Tests";
@ -402,8 +477,6 @@ public class CalendarUtilitiesTests extends AndroidTestCase {
entityValues.put(Events._SYNC_DIRTY, 1);
// And mark it canceled
entityValues.put(Events.STATUS, Events.STATUS_CANCELED);
// Give it an RRULE so that time zone will be included
entityValues.put(Events.RRULE, "FREQ=WEEKLY;BYDAY=MO");
// Create a dummy account for the attendee
Account account = new Account();