first import
This commit is contained in:
455
sites/all/modules/date/date_repeat/tests/date_repeat.test
Normal file
455
sites/all/modules/date/date_repeat/tests/date_repeat.test
Normal file
@@ -0,0 +1,455 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Test Date Repeat calculations.
|
||||
*/
|
||||
|
||||
class DateRepeatTestCase extends DrupalWebTestCase {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => t('Date Repeat'),
|
||||
'description' => t('Test Date Repeat functions to create arrays of dates from iCal rules.') ,
|
||||
'group' => t('Date'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements setUp().
|
||||
*/
|
||||
public function setUp() {
|
||||
// Load the date_repeat module.
|
||||
parent::setUp('date_api', 'date_repeat');
|
||||
}
|
||||
|
||||
public function testDateRepeat() {
|
||||
require_once('./' . drupal_get_path('module', 'date_api') . '/date_api_ical.inc');
|
||||
require_once('./' . drupal_get_path('module', 'date_repeat') . '/date_repeat_calc.inc');
|
||||
// Examples adapted from http://www.faqs.org/rfcs/rfc2445.html and
|
||||
// http://www.kanzaki.com/docs/ical/rrule.html.
|
||||
|
||||
// Invalid value:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=NONE;INTERVAL=0;COUNT=10";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September 2-11
|
||||
$shouldbe = '';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
// Daily for 10 occurrences:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=DAILY;COUNT=10";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September 2-11
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-03 09:00:00, 1997-09-04 09:00:00, 1997-09-05 09:00:00, 1997-09-06 09:00:00, 1997-09-07 09:00:00, 1997-09-08 09:00:00, 1997-09-09 09:00:00, 1997-09-10 09:00:00, 1997-09-11 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Daily until September 24, 1997:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=DAILY;UNTIL=19970924T000000Z";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September 2-23
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-03 09:00:00, 1997-09-04 09:00:00, 1997-09-05 09:00:00, 1997-09-06 09:00:00, 1997-09-07 09:00:00, 1997-09-08 09:00:00, 1997-09-09 09:00:00, 1997-09-10 09:00:00, 1997-09-11 09:00:00, 1997-09-12 09:00:00, 1997-09-13 09:00:00, 1997-09-14 09:00:00, 1997-09-15 09:00:00, 1997-09-16 09:00:00, 1997-09-17 09:00:00, 1997-09-18 09:00:00, 1997-09-19 09:00:00, 1997-09-20 09:00:00, 1997-09-21 09:00:00, 1997-09-22 09:00:00, 1997-09-23 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other day - until September 30:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=DAILY;INTERVAL=2";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September2,4,6,8...24,26,28,30;
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-04 09:00:00, 1997-09-06 09:00:00, 1997-09-08 09:00:00, 1997-09-10 09:00:00, 1997-09-12 09:00:00, 1997-09-14 09:00:00, 1997-09-16 09:00:00, 1997-09-18 09:00:00, 1997-09-20 09:00:00, 1997-09-22 09:00:00, 1997-09-24 09:00:00, 1997-09-26 09:00:00, 1997-09-28 09:00:00, 1997-09-30 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every 10 days, 2 occurrences:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=DAILY;INTERVAL=10;COUNT=2";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September 2,12
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-12 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Weekly for 3 occurrences
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;COUNT=3";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
// should be (1997 9:00 AM EDT)September 2,9,16
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-09 09:00:00, 1997-09-16 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Weekly until September 24, 1997
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;UNTIL=19970924T000000Z";
|
||||
// ==> (1997 9:00 AM EDT)September 2,9,16,23
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-09 09:00:00, 1997-09-16 09:00:00, 1997-09-23 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other week - forever:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU";
|
||||
// should be (1997 9:00 AM EDT)September 2,16,30
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-16 09:00:00, 1997-09-30 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Weekly on Tuesday and Thursday for 4 weeks:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;COUNT=8;WKST=SU;BYDAY=TU,TH";
|
||||
// should be(1997 9:00 AM EDT)September 2,4,9,11,16,18,23,25
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-04 09:00:00, 1997-09-09 09:00:00, 1997-09-11 09:00:00, 1997-09-16 09:00:00, 1997-09-18 09:00:00, 1997-09-23 09:00:00, 1997-09-25 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other week on Tuesday and Thursday, for 5 occurrences:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=5;WKST=SU;BYDAY=TU,TH";
|
||||
// should be (1997 9:00 AM EDT)September 2,4,16,18,30
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-04 09:00:00, 1997-09-16 09:00:00, 1997-09-18 09:00:00, 1997-09-30 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other week on Monday, Wednesday and Friday until September 24, 1997,
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1997-09-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19970924T000000Z;WKST=SU;BYDAY=MO,WE,FR";
|
||||
// should be (1997 9:00 AM EDT)September 2,3,5,15,17,19
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-03 09:00:00, 1997-09-05 09:00:00, 1997-09-15 09:00:00, 1997-09-17 09:00:00, 1997-09-19 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the 1st Friday for 2 occurrences:
|
||||
$start = "1997-09-05 09:00:00";
|
||||
$end = "1997-10-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;COUNT=2;BYDAY=1FR";
|
||||
// should be (1997 9:00 AM EDT)September 5;October 3
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-05 09:00:00, 1997-10-03 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the 1st Friday until December 24, 1997:
|
||||
$start = "1997-09-05 09:00:00";
|
||||
$end = "1998-10-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-05 09:00:00, 1997-10-03 09:00:00, 1997-11-07 09:00:00, 1997-12-05 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other month on the 1st and last Sunday of the month for 10 occurrences:
|
||||
$start = "1997-09-07 09:00:00";
|
||||
$end = "1998-10-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU";
|
||||
// ==> (1997 9:00 AM EDT)September 7,28
|
||||
// (1997 9:00 AM EST)November 2,30
|
||||
// (1998 9:00 AM EST)January 4,25;March 1,29
|
||||
// (1998 9:00 AM EDT)May 3,31
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-07 09:00:00, 1997-09-28 09:00:00, 1997-11-02 09:00:00, 1997-11-30 09:00:00, 1998-01-04 09:00:00, 1998-01-25 09:00:00, 1998-03-01 09:00:00, 1998-03-29 09:00:00, 1998-05-03 09:00:00, 1998-05-31 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the second to last Monday of the month for 6 months:
|
||||
$start = "1997-09-22 09:00:00";
|
||||
$end = "1998-10-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO";
|
||||
//==> (1997 9:00 AM EDT)September 22;October 20
|
||||
// (1997 9:00 AM EST)November 17;December 22
|
||||
// (1998 9:00 AM EST)January 19;February 16
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-22 09:00:00, 1997-10-20 09:00:00, 1997-11-17 09:00:00, 1997-12-22 09:00:00, 1998-01-19 09:00:00, 1998-02-16 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every Tuesday, every other month:
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1998-02-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU";
|
||||
// ==> (1997 9:00 AM EDT)September 2,9,16,23,30
|
||||
// (1997 9:00 AM EST)November 4,11,18,25
|
||||
// (1998 9:00 AM EST)January 6,13,20,27;March 3,10,17,24,31
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-09 09:00:00, 1997-09-16 09:00:00, 1997-09-23 09:00:00, 1997-09-30 09:00:00, 1997-11-04 09:00:00, 1997-11-11 09:00:00, 1997-11-18 09:00:00, 1997-11-25 09:00:00, 1998-01-06 09:00:00, 1998-01-13 09:00:00, 1998-01-20 09:00:00, 1998-01-27 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Yearly in June and July for 10 occurrences:
|
||||
$start = "1997-06-10 09:00:00";
|
||||
$end = "2002-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7";
|
||||
// ==> (1997 9:00 AM EDT)June 10;July 10
|
||||
// (1998 9:00 AM EDT)June 10;July 10
|
||||
// (1999 9:00 AM EDT)June 10;July 10
|
||||
// (2000 9:00 AM EDT)June 10;July 10
|
||||
// (2001 9:00 AM EDT)June 10;July 10
|
||||
// Note: Since none of the BYDAY, BYMONTHDAY or BYYEARDAY components
|
||||
// are specified, the day is gotten from DTSTART
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-06-10 09:00:00, 1997-07-10 09:00:00, 1998-06-10 09:00:00, 1998-07-10 09:00:00, 1999-06-10 09:00:00, 1999-07-10 09:00:00, 2000-06-10 09:00:00, 2000-07-10 09:00:00, 2001-06-10 09:00:00, 2001-07-10 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every other year on January, February, and March for 10 occurrences:
|
||||
$start = "1997-03-10 09:00:00";
|
||||
$end = "2004-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3";
|
||||
// ==> (1997 9:00 AM EST)March 10
|
||||
// (1999 9:00 AM EST)January 10;February 10;March 10
|
||||
// (2001 9:00 AM EST)January 10;February 10;March 10
|
||||
// (2003 9:00 AM EST)January 10;February 10;March 10
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-03-10 09:00:00, 1999-01-10 09:00:00, 1999-02-10 09:00:00, 1999-03-10 09:00:00, 2001-01-10 09:00:00, 2001-02-10 09:00:00, 2001-03-10 09:00:00, 2003-01-10 09:00:00, 2003-02-10 09:00:00, 2003-03-10 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//An example where the days generated makes a difference because of WKST:
|
||||
$start = "1997-08-05 09:00:00";
|
||||
$end = "2004-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO";
|
||||
// ==> (1997 EDT)Aug 5,10,19,24
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-08-05 09:00:00, 1997-08-10 09:00:00, 1997-08-19 09:00:00, 1997-08-24 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//changing only WKST from MO to SU, yields different results...
|
||||
$start = "1997-08-05 09:00:00";
|
||||
$end = "2004-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU";
|
||||
// Result: 1997 EDT August 5,17,19,31;
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-08-05 09:00:00, 1997-08-17 09:00:00, 1997-08-19 09:00:00, 1997-08-31 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every 18 months on the 10th thru 15th of the month for 10 occurrences:
|
||||
$start = "1997-09-10 09:00:00";
|
||||
$end = "2004-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15";
|
||||
// ==> (1997 9:00 AM EDT)September 10,11,12,13,14,15
|
||||
// (1999 9:00 AM EST)March 10,11,12,13
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-10 09:00:00, 1997-09-11 09:00:00, 1997-09-12 09:00:00, 1997-09-13 09:00:00, 1997-09-14 09:00:00, 1997-09-15 09:00:00, 1999-03-10 09:00:00, 1999-03-11 09:00:00, 1999-03-12 09:00:00, 1999-03-13 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the third to the last day of the month, forever:
|
||||
$start = "1997-09-28 09:00:00";
|
||||
$end = "1998-03-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;BYMONTHDAY=-3";
|
||||
// ==> (1997 9:00 AM EDT)September 28
|
||||
// (1997 9:00 AM EST)October 29;November 28;December 29
|
||||
// (1998 9:00 AM EST)January 29;February 26
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-28 09:00:00, 1997-10-29 09:00:00, 1997-11-28 09:00:00, 1997-12-29 09:00:00, 1998-01-29 09:00:00, 1998-02-26 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every Thursday in March, forever:
|
||||
// ==> (1997 9:00 AM EST)March 13,20,27
|
||||
// (1998 9:00 AM EST)March 5,12,19,26
|
||||
// (1999 9:00 AM EST)March 4,11,18,25
|
||||
$start = "1997-03-13 09:00:00";
|
||||
$end = "1999-03-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-03-13 09:00:00, 1997-03-20 09:00:00, 1997-03-27 09:00:00, 1998-03-05 09:00:00, 1998-03-12 09:00:00, 1998-03-19 09:00:00, 1998-03-26 09:00:00, 1999-03-04 09:00:00, 1999-03-11 09:00:00, 1999-03-18 09:00:00, 1999-03-25 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every Thursday, but only during June, July, and August, forever:
|
||||
// ==> (1997 9:00 AM EDT)June 5,12,19,26;July 3,10,17,24,31;August 7,14,21,28
|
||||
// (1998 9:00 AM EDT)June 4,11,18,25;July 2,9,16,23,30;August 6,13,20,27
|
||||
// (1999 9:00 AM EDT)June 3,10,17,24;July 1,8,15,22,29;August 5,12,19,26
|
||||
$start = "1997-06-05 09:00:00";
|
||||
$end = "1999-08-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-06-05 09:00:00, 1997-06-12 09:00:00, 1997-06-19 09:00:00, 1997-06-26 09:00:00, 1997-07-03 09:00:00, 1997-07-10 09:00:00, 1997-07-17 09:00:00, 1997-07-24 09:00:00, 1997-07-31 09:00:00, 1997-08-07 09:00:00, 1997-08-14 09:00:00, 1997-08-21 09:00:00, 1997-08-28 09:00:00, 1998-06-04 09:00:00, 1998-06-11 09:00:00, 1998-06-18 09:00:00, 1998-06-25 09:00:00, 1998-07-02 09:00:00, 1998-07-09 09:00:00, 1998-07-16 09:00:00, 1998-07-23 09:00:00, 1998-07-30 09:00:00, 1998-08-06 09:00:00, 1998-08-13 09:00:00, 1998-08-20 09:00:00, 1998-08-27 09:00:00, 1999-06-03 09:00:00, 1999-06-10 09:00:00, 1999-06-17 09:00:00, 1999-06-24 09:00:00, 1999-07-01 09:00:00, 1999-07-08 09:00:00, 1999-07-15 09:00:00, 1999-07-22 09:00:00, 1999-07-29 09:00:00, 1999-08-05 09:00:00, 1999-08-12 09:00:00, 1999-08-19 09:00:00, 1999-08-26 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the 2nd and 15th of the month for 10 occurrences:
|
||||
// ==> (1997 9:00 AM EDT)September 2,15;October 2,15
|
||||
// (1997 9:00 AM EST)November 2,15;December 2,15
|
||||
// (1998 9:00 AM EST)January 2,15
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "1998-01-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1997-09-15 09:00:00, 1997-10-02 09:00:00, 1997-10-15 09:00:00, 1997-11-02 09:00:00, 1997-11-15 09:00:00, 1997-12-02 09:00:00, 1997-12-15 09:00:00, 1998-01-02 09:00:00, 1998-01-15 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Monthly on the first and last day of the month for 10 occurrences:
|
||||
// ==> (1997 9:00 AM EDT)September 30;October 1
|
||||
// (1997 9:00 AM EST)October 31;November 1,30;December 1,31
|
||||
// (1998 9:00 AM EST)January 1,31;February 1
|
||||
$start = "1997-09-30 09:00:00";
|
||||
$end = "1998-03-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-30 09:00:00, 1997-10-01 09:00:00, 1997-10-31 09:00:00, 1997-11-01 09:00:00, 1997-11-30 09:00:00, 1997-12-01 09:00:00, 1997-12-31 09:00:00, 1998-01-01 09:00:00, 1998-01-31 09:00:00, 1998-02-01 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every Friday the 13th, forever:
|
||||
$rule = "EXDATE;TZID=US-Eastern:19970902T090000";
|
||||
// ==> (1998 9:00 AM EST)February 13;March 13;November 13
|
||||
// (1999 9:00 AM EDT)August 13
|
||||
// (2000 9:00 AM EDT)October 13
|
||||
$start = "1997-09-02 09:00:00";
|
||||
$end = "2000-12-31 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-02 09:00:00, 1998-02-13 09:00:00, 1998-03-13 09:00:00, 1998-11-13 09:00:00, 1999-08-13 09:00:00, 2000-10-13 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//The first Saturday that follows the first Sunday of the month, forever:
|
||||
// ==> (1997 9:00 AM EDT)September 13;October 11
|
||||
// (1997 9:00 AM EST)November 8;December 13
|
||||
// (1998 9:00 AM EST)January 10;February 7;March 7
|
||||
// (1998 9:00 AM EDT)April 11;May 9;June 13...
|
||||
$start = "1997-09-13 09:00:00";
|
||||
$end = "1998-06-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13";
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-09-13 09:00:00, 1997-10-11 09:00:00, 1997-11-08 09:00:00, 1997-12-13 09:00:00, 1998-01-10 09:00:00, 1998-02-07 09:00:00, 1998-03-07 09:00:00, 1998-04-11 09:00:00, 1998-05-09 09:00:00, 1998-06-13 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every four years, the first Tuesday after a Monday in November,
|
||||
//forever (U.S. Presidential Election day):
|
||||
// ==> (1996 9:00 AM EST)November 5
|
||||
// (2000 9:00 AM EST)November 7
|
||||
// (2004 9:00 AM EST)November 2
|
||||
$start = "1996-11-05 09:00:00";
|
||||
$end = "2004-11-30 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8";
|
||||
$shouldbe = '1996-11-05 09:00:00, 2000-11-07 09:00:00, 2004-11-02 09:00:00';
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every 20th Monday of the year, forever:
|
||||
$start = "1997-05-19 09:00:00";
|
||||
$end = "2000-01-01 09:00:00";
|
||||
$rule = "RRULE:FREQ=YEARLY;BYDAY=20MO";
|
||||
// ==> (1997 9:00 AM EDT)May 19
|
||||
// (1998 9:00 AM EDT)May 18
|
||||
// (1999 9:00 AM EDT)May 17
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-05-19 09:00:00, 1998-05-18 09:00:00, 1999-05-17 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
//Every Sunday in January, every other year, forever:
|
||||
$start = "1997-01-05 09:00:00";
|
||||
$end = "2001-02-01 09:00:00";
|
||||
$rule = 'RRULE:FREQ=YEARLY;INTERVAL=2;BYMONTH=1;BYDAY=SU';
|
||||
// ==> (1997 9:00 AM EDT)January 5,12,19,26
|
||||
// (1999 9:00 AM EDT)January 3,10,17,24,31
|
||||
// (2001 9:00 AM EDT)January 7,14,21,28
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '1997-01-05 09:00:00, 1997-01-12 09:00:00, 1997-01-19 09:00:00, 1997-01-26 09:00:00, 1999-01-03 09:00:00, 1999-01-10 09:00:00, 1999-01-17 09:00:00, 1999-01-24 09:00:00, 1999-01-31 09:00:00, 2001-01-07 09:00:00, 2001-01-14 09:00:00, 2001-01-21 09:00:00, 2001-01-28 09:00:00';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
return;
|
||||
|
||||
//Every Thanksgiving, forever:
|
||||
$start = "1997-01-01 09:00:00";
|
||||
$end = "2001-02-01 09:00:00";
|
||||
$rule = 'RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=4TH';
|
||||
// ==> (1997 9:00 AM EDT)Nov
|
||||
// (1999 9:00 AM EDT)Nov
|
||||
// (2001 9:00 AM EDT)Nov
|
||||
$dates = date_repeat_calc($rule, $start, $end, array());
|
||||
$shouldbe = '';
|
||||
$result = implode(', ', $dates);
|
||||
$this->assertEqual($result, $shouldbe, $rule . '; Starting ' . $start . '; results: ' . $result);
|
||||
|
||||
// TODO:
|
||||
// BYYEARDAY, BYSETPOS,
|
||||
// BYHOUR, BYMINUTE, HOURLY, MINUTELY, SECONDLY
|
||||
// have not yet been implemented in date_repeat.
|
||||
|
||||
//Every 3rd year on the 1st, 100th and 200th day for 10 occurrences:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970101T090000";
|
||||
$rule = "RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200";
|
||||
// ==> (1997 9:00 AM EST)January 1
|
||||
// (1997 9:00 AM EDT)April 10;July 19
|
||||
// (2000 9:00 AM EST)January 1
|
||||
// (2000 9:00 AM EDT)April 9;July 18
|
||||
// (2003 9:00 AM EST)January 1
|
||||
// (2003 9:00 AM EDT)April 10;July 19
|
||||
// (2006 9:00 AM EST)January 1
|
||||
|
||||
//Monday of week number 20 (where the default start of the week is Monday), forever:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970512T090000";
|
||||
$rule = "RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO";
|
||||
// ==> (1997 9:00 AM EDT)May 12
|
||||
// (1998 9:00 AM EDT)May 11
|
||||
// (1999 9:00 AM EDT)May 17
|
||||
|
||||
//The 3rd instance into the month of one of Tuesday, Wednesday or
|
||||
//Thursday, for the next 3 months:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970904T090000";
|
||||
$rule = "RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3";
|
||||
// ==> (1997 9:00 AM EDT)September 4;October 7
|
||||
// (1997 9:00 AM EST)November 6
|
||||
|
||||
//The 2nd to last weekday of the month:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970929T090000";
|
||||
$rule = "RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2";
|
||||
// ==> (1997 9:00 AM EDT)September 29
|
||||
// (1997 9:00 AM EST)October 30;November 27;December 30
|
||||
// (1998 9:00 AM EST)January 29;February 26;March 30
|
||||
|
||||
//Every 3 hours from 9:00 AM to 5:00 PM on a specific day:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970902T090000";
|
||||
$rule = "RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z";
|
||||
// ==> (September 2, 1997 EDT)09:00,12:00,15:00
|
||||
|
||||
//Every 15 minutes for 6 occurrences:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970902T090000";
|
||||
$rule = "RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6";
|
||||
// ==> (September 2, 1997 EDT)09:00,09:15,09:30,09:45,10:00,10:15
|
||||
|
||||
//Every hour and a half for 4 occurrences:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970902T090000";
|
||||
$rule = "RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4";
|
||||
// ==> (September 2, 1997 EDT)09:00,10:30;12:00;13:30
|
||||
|
||||
//Every 20 minutes from 9:00 AM to 4:40 PM every day:
|
||||
$date = "DTSTART;TZID=US-Eastern:19970902T090000";
|
||||
$rule = "RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40";
|
||||
// or
|
||||
$rule = "RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16";
|
||||
// ==> (September 2, 1997 EDT)9:00,9:20,9:40,10:00,10:20,16:00,16:20,16:40
|
||||
// (September 3, 1997 EDT)9:00,9:20,9:40,10:00,10:20,16:00,16:20,16:40
|
||||
|
||||
}
|
||||
}
|
520
sites/all/modules/date/date_repeat/tests/date_repeat_form.test
Normal file
520
sites/all/modules/date/date_repeat/tests/date_repeat_form.test
Normal file
@@ -0,0 +1,520 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Test Date Repeat form.
|
||||
*/
|
||||
|
||||
class DateRepeatFormTestCase extends DrupalWebTestCase {
|
||||
protected $privileged_user;
|
||||
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => t('Date Repeat Form'),
|
||||
'description' => t('Test Date Repeat form.') ,
|
||||
'group' => t('Date'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements setUp().
|
||||
*/
|
||||
public function setUp() {
|
||||
// Load the date_repeat module.
|
||||
parent::setUp('field', 'field_ui', 'date_api', 'date_repeat', 'date', 'date_popup', 'date_repeat_field');
|
||||
|
||||
// Create and log in our privileged user.
|
||||
$this->privileged_user = $this->drupalCreateUser(array(
|
||||
'administer content types', 'administer nodes', 'bypass node access', 'view date repeats'
|
||||
));
|
||||
$this->drupalLogin($this->privileged_user);
|
||||
|
||||
variable_set('date_format_short', 'Y-m-d H:i');
|
||||
}
|
||||
|
||||
public function testDateRepeatForm() {
|
||||
$edit = array();
|
||||
$edit['name'] = 'Date';
|
||||
$edit['type'] = 'date';
|
||||
$this->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
|
||||
$this->assertText('The content type Date has been added.', 'Content type added.');
|
||||
$display_all_day = FALSE;
|
||||
|
||||
// Testing options.
|
||||
$widget_options = array(
|
||||
'date_select' => 'select',
|
||||
'date_text' => 'text',
|
||||
'date_popup' => 'popup');
|
||||
|
||||
foreach ($widget_options as $widget => $options) {
|
||||
// Daily tests
|
||||
// Creates date field stored as a datetime.
|
||||
$this->createDateField($type = 'datetime', $widget, $display_all_day);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_1');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_2');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_3');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_4');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_1', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_2', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_3', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_4', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_1', FALSE, 'include');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude_include');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
// Weekly tests
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_1');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_2');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_3');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_4');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_1', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_2', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_3', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'weekly_4', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
// Monthly tests
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_1');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_2');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_3');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_4');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_5');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_6');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_1', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_2', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_3', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_4', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_5', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'monthly_6', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
// Yearly tests
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_1');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_2');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_3');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_4');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_5');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_6');
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_1', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_2', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_3', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_4', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_5', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$form_edit = $this->dateForm($options, 'yearly_6', TRUE);
|
||||
$this->verifyDateForm($form_edit);
|
||||
|
||||
$this->deleteDateField();
|
||||
}
|
||||
}
|
||||
|
||||
function dateForm($options, $test_id = NULL, $is_count = FALSE, $exclude_include = NULL) {
|
||||
// Tests that date field functions properly.
|
||||
$edit = array();
|
||||
$edit['title'] = $this->randomName(8);
|
||||
$edit['body[und][0][value]'] = $this->randomName(16);
|
||||
|
||||
switch ($options) {
|
||||
case 'select':
|
||||
$edit['field_test[und][0][value][year]'] = '2010';
|
||||
$edit['field_test[und][0][value][month]'] = '10';
|
||||
$edit['field_test[und][0][value][day]'] = '7';
|
||||
$edit['field_test[und][0][value][hour]'] = '10';
|
||||
$edit['field_test[und][0][value][minute]'] = '30';
|
||||
break;
|
||||
case 'text':
|
||||
$edit['field_test[und][0][value][date]'] = '2010-10-07 10:30';
|
||||
break;
|
||||
case 'popup':
|
||||
$edit['field_test[und][0][value][date]'] = '2010-10-07';
|
||||
$edit['field_test[und][0][value][time]'] = '10:30';
|
||||
break;
|
||||
}
|
||||
|
||||
// Tests that Date repeat settings function properly
|
||||
if ($test_id !== NULL) {
|
||||
$edit['field_test[und][0][show_repeat_settings]'] = TRUE;
|
||||
$count = 5;
|
||||
|
||||
switch ($test_id) {
|
||||
// Daily test cases
|
||||
case 'daily_1':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
|
||||
$edit['field_test[und][0][rrule][daily][byday_radios]'] = 'INTERVAL';
|
||||
$edit['field_test[und][0][rrule][daily][INTERVAL_child]'] = 2;
|
||||
break;
|
||||
case 'daily_2':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
|
||||
$edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_weekday';
|
||||
break;
|
||||
case 'daily_3':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
|
||||
$edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_mo_we_fr';
|
||||
break;
|
||||
case 'daily_4':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
|
||||
$edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_tu_th';
|
||||
break;
|
||||
|
||||
// Weekly test cases
|
||||
case 'weekly_1':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
|
||||
break;
|
||||
case 'weekly_2':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
|
||||
$edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 1;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
|
||||
break;
|
||||
case 'weekly_3':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
|
||||
$edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 2;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
|
||||
break;
|
||||
case 'weekly_4':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
|
||||
$edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 10;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
|
||||
break;
|
||||
|
||||
// Monthly test cases
|
||||
case 'monthly_1':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
|
||||
break;
|
||||
case 'monthly_2':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
|
||||
break;
|
||||
case 'monthly_3':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
|
||||
break;
|
||||
case 'monthly_4':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
|
||||
break;
|
||||
case 'monthly_5':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
|
||||
break;
|
||||
case 'monthly_6':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
|
||||
$edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
|
||||
break;
|
||||
|
||||
// Yearly test cases
|
||||
case 'yearly_1':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
|
||||
break;
|
||||
case 'yearly_2':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
|
||||
break;
|
||||
case 'yearly_3':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
|
||||
break;
|
||||
case 'yearly_4':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
|
||||
break;
|
||||
case 'yearly_5':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
|
||||
break;
|
||||
case 'yearly_6':
|
||||
$edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
|
||||
$edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
|
||||
$edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
|
||||
$edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
// Test COUNT or UNTIL (default)
|
||||
if ($is_count) {
|
||||
$edit['field_test[und][0][rrule][range_of_repeat]'] = 'COUNT';
|
||||
$edit['field_test[und][0][rrule][count_child]'] = $count;
|
||||
}
|
||||
else {
|
||||
$edit['field_test[und][0][rrule][range_of_repeat]'] = 'UNTIL';
|
||||
$date = array(
|
||||
'year' => '2011',
|
||||
'month' => '10',
|
||||
'day' => '07'
|
||||
);
|
||||
$edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][until_child]', $options, $date);
|
||||
}
|
||||
|
||||
// Test date exceptions and/or additions
|
||||
if ($exclude_include !== NULL) {
|
||||
$exclude_include_edit = array();
|
||||
switch ($exclude_include) {
|
||||
case 'exclude':
|
||||
$exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
|
||||
$date = array(
|
||||
'year' => '2010',
|
||||
'month' => '10',
|
||||
'day' => '07'
|
||||
);
|
||||
$exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
|
||||
break;
|
||||
case 'include':
|
||||
$exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
|
||||
$date = array(
|
||||
'year' => '2013',
|
||||
'month' => '10',
|
||||
'day' => '07'
|
||||
);
|
||||
$exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
|
||||
break;
|
||||
case 'exclude_include':
|
||||
$exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
|
||||
$date = array(
|
||||
'year' => '2010',
|
||||
'month' => '10',
|
||||
'day' => '07'
|
||||
);
|
||||
$exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
|
||||
|
||||
$exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
|
||||
$date = array(
|
||||
'year' => '2013',
|
||||
'month' => '10',
|
||||
'day' => '07'
|
||||
);
|
||||
$exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
|
||||
break;
|
||||
}
|
||||
$edit += $exclude_include_edit;
|
||||
}
|
||||
}
|
||||
|
||||
$this->drupalPost('node/add/date', $edit, t('Save'));
|
||||
$this->assertText($edit['body[und][0][value]'], 'Test node has been created');
|
||||
|
||||
// Return the settings for later use in verification
|
||||
return $edit;
|
||||
}
|
||||
|
||||
function verifyDateForm($edit) {
|
||||
$title = $edit['title'];
|
||||
$node = $this->drupalGetNodeByTitle($title);
|
||||
|
||||
$this->drupalGet("node/{$node->nid}/edit");
|
||||
|
||||
foreach ($edit as $field => $value) {
|
||||
$this->assertFieldByName($field, $value);
|
||||
}
|
||||
|
||||
$this->drupalPost("node/{$node->nid}/delete", NULL, t('Delete'));
|
||||
$this->assertRaw(t('Date %title has been deleted.', array('%title' => $title)), t('Deleted Date content.'));
|
||||
}
|
||||
|
||||
function createDateField($type, $widget, $display_all_day = FALSE) {
|
||||
$edit = array();
|
||||
$edit['fields[_add_new_field][label]'] = 'Test';
|
||||
$edit['fields[_add_new_field][field_name]'] = 'test';
|
||||
$edit['fields[_add_new_field][weight]'] = '-4';
|
||||
$edit['fields[_add_new_field][type]'] = $type;
|
||||
$edit['fields[_add_new_field][widget_type]'] = $widget;
|
||||
|
||||
$label = $edit['fields[_add_new_field][label]'];
|
||||
|
||||
$field_edit = array();
|
||||
$field_edit['field[settings][repeat]'] = 1;
|
||||
|
||||
$instance_edit = array();
|
||||
switch ($widget) {
|
||||
case 'select':
|
||||
case 'popup':
|
||||
$instance_edit['instance[widget][settings][year_range][years_back]'] = '-5';
|
||||
$instance_edit['instance[widget][settings][year_range][years_forward]'] = '+5';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($display_all_day) {
|
||||
$instance_edit['instance[widget][settings][display_all_day]'] = TRUE;
|
||||
}
|
||||
|
||||
// First step : 'Add new field' on the 'Manage fields' page.
|
||||
$this->drupalPost('admin/structure/types/manage/date/fields', $edit, t('Save'));
|
||||
$this->assertRaw(t('These settings apply to the %label field everywhere it is used.', array('%label' => $label)), t('Field settings page was displayed.'));
|
||||
|
||||
// Second step : 'Field settings' form.
|
||||
$this->drupalPost(NULL, $field_edit, t('Save field settings'));
|
||||
$this->assertRaw(t('Updated field %label field settings.', array('%label' => $label)), t('Redirected to instance and widget settings page.'));
|
||||
|
||||
// Third step : 'Instance settings' form.
|
||||
$this->drupalPost(NULL, $instance_edit, t('Save settings'));
|
||||
$this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), t('Redirected to "Manage fields" page.'));
|
||||
|
||||
// Check that the field appears in the overview form.
|
||||
$this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', $label, t('Field was created and appears in the overview page.'));
|
||||
}
|
||||
|
||||
function deleteDateField() {
|
||||
$this->drupalGet('admin/structure/types/manage/date/fields');
|
||||
$this->clickLink('delete');
|
||||
$this->drupalPost(NULL, NULL, t('Delete'));
|
||||
$this->assertText(t('The field Test has been deleted from the Date content type.'), t('Removed date field.'));
|
||||
}
|
||||
|
||||
function formatDateForRRULEInputs($form_field_name, $date_widget_type, $date) {
|
||||
$return = array();
|
||||
|
||||
switch ($date_widget_type) {
|
||||
case 'select':
|
||||
$return["{$form_field_name}[datetime][year]"] = $date['year'];
|
||||
$return["{$form_field_name}[datetime][month]"] = $date['month'];
|
||||
$return["{$form_field_name}[datetime][day]"] = ltrim($date['day'], '0');
|
||||
break;
|
||||
case 'text':
|
||||
case 'popup':
|
||||
//$return["{$field_name}[datetime][date]"] = '2011-10-07';
|
||||
$return["{$form_field_name}[datetime][date]"] = "{$date['year']}-{$date['month']}-{$date['day']}";
|
||||
break;
|
||||
}
|
||||
|
||||
return $return;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user