function testCustomFieldChange1() { TimeSource::mock(2012, 7, 1, 7, 0, 0); $customFieldDefinition1 = new EventCustomFieldDefinitionModel(); $customFieldDefinition1->setId(1); $customFieldDefinition1->setExtensionId('org.openacalendar'); $customFieldDefinition1->setType('TextSingleLine'); $customFieldDefinition1->setKey('cats'); $customFieldDefinition1->setLabel('cats'); $event = new EventModel(); $event->setStartAt(getUTCDateTime(2012, 6, 13, 19, 0, 0)); $event->setEndAt(getUTCDateTime(2012, 6, 13, 21, 0, 0)); $event->setSummary("Event Please"); $event->setCustomField($customFieldDefinition1, "MANY"); $eventSet = new EventRecurSetModel(); $eventSet->setTimeZoneName('Europe/London'); $eventSet->setCustomFields(array($customFieldDefinition1)); $newEvents = $eventSet->getNewMonthlyEventsOnSetDayInWeek($event, 6 * 31); $this->assertTrue(count($newEvents) >= 6); $this->assertTrue($newEvents[0]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[0]->getCustomField($customFieldDefinition1)); $this->assertTrue($newEvents[1]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[1]->getCustomField($customFieldDefinition1)); $this->assertTrue($newEvents[2]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[2]->getCustomField($customFieldDefinition1)); $this->assertTrue($newEvents[3]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[3]->getCustomField($customFieldDefinition1)); // DST shift happens here! The cats do not care. $this->assertTrue($newEvents[4]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[4]->getCustomField($customFieldDefinition1)); $this->assertTrue($newEvents[5]->hasCustomField($customFieldDefinition1)); $this->assertEquals("MANY", $newEvents[5]->getCustomField($customFieldDefinition1)); }
/** test event on 1st sun in month. This is not the 1st of the month. **/ function testFirstWeekInMonthButNotFirstDayInMonth() { TimeSource::mock(2012, 9, 20, 14, 27, 0); $event = new EventModel(); $event->setStartAt($this->mktime(2012, 9, 2, 18, 30, 0)); $event->setEndAt($this->mktime(2012, 9, 2, 21, 0, 0)); $eventSet = new EventRecurSetModel(); $eventSet->setTimeZoneName('Europe/London'); $newEvents = $eventSet->getNewMonthlyEventsOnSetDayInWeek($event, 6 * 31); $this->assertTrue(count($newEvents) >= 6); $this->assertEquals($this->mktime(2012, 10, 7, 18, 30, 0)->format('r'), $newEvents[0]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2012, 10, 7, 21, 0, 0)->format('r'), $newEvents[0]->getEndAt()->format('r')); $this->assertEquals($this->mktime(2012, 11, 4, 19, 30, 0)->format('r'), $newEvents[1]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2012, 11, 4, 22, 0, 0)->format('r'), $newEvents[1]->getEndAt()->format('r')); $this->assertEquals($this->mktime(2012, 12, 2, 19, 30, 0)->format('r'), $newEvents[2]->getStartAt()->format('r')); $this->assertEquals($this->mktime(2012, 12, 2, 22, 0, 0)->format('r'), $newEvents[2]->getEndAt()->format('r')); }