Projet

Général

Profil

Paste
Télécharger (22,4 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / date / date_repeat / tests / date_repeat_form.test @ 599a39cd

1
<?php
2

    
3
/**
4
 * @file
5
 * Test Date Repeat form.
6
 */
7

    
8
/**
9
 * Test Date Repeat form.
10
 */
11
class DateRepeatFormTestCase extends DrupalWebTestCase {
12
  protected $privileged_user;
13

    
14
  public static function getInfo() {
15
    return array(
16
      'name' => t('Date Repeat Form'),
17
      'description' => t('Test Date Repeat form.') ,
18
      'group' => t('Date'),
19
    );
20
  }
21

    
22
  /**
23
   * {@inheritdoc}
24
   */
25
  public function setUp(array $modules = array()) {
26
    // Load the date_repeat module.
27
    $modules[] = 'field';
28
    $modules[] = 'field_ui';
29
    $modules[] = 'date_api';
30
    $modules[] = 'date_repeat';
31
    $modules[] = 'date';
32
    $modules[] = 'date_popup';
33
    $modules[] = 'date_repeat_field';
34
    parent::setUp($modules);
35

    
36
    // Create and log in our privileged user.
37
    $this->privileged_user = $this->drupalCreateUser(array(
38
      'administer content types', 'administer nodes', 'bypass node access', 'view date repeats', 'administer fields',
39
    ));
40
    $this->drupalLogin($this->privileged_user);
41

    
42
    variable_set('date_format_short', 'Y-m-d H:i');
43
  }
44

    
45
  /**
46
   * Test the Date Repeat form.
47
   */
48
  public function testDateRepeatForm() {
49
    $edit = array();
50
    $edit['name'] = 'Date';
51
    $edit['type'] = 'date';
52
    $this->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
53
    $this->assertText('The content type Date has been added.', 'Content type added.');
54
    $display_all_day = FALSE;
55

    
56
    // Testing options.
57
    $widget_options = array(
58
      'date_select' => 'select',
59
      'date_text' => 'text',
60
      'date_popup' => 'popup');
61

    
62
    foreach ($widget_options as $widget => $options) {
63
      // Daily tests
64
      // Creates date field stored as a datetime.
65
      $this->createDateField($type = 'datetime', $widget, $display_all_day);
66

    
67
      $form_edit = $this->dateForm($options, 'daily_1');
68
      $this->verifyDateForm($form_edit);
69

    
70
      $form_edit = $this->dateForm($options, 'daily_2');
71
      $this->verifyDateForm($form_edit);
72

    
73
      $form_edit = $this->dateForm($options, 'daily_3');
74
      $this->verifyDateForm($form_edit);
75

    
76
      $form_edit = $this->dateForm($options, 'daily_4');
77
      $this->verifyDateForm($form_edit);
78

    
79
      $form_edit = $this->dateForm($options, 'daily_1', TRUE);
80
      $this->verifyDateForm($form_edit);
81

    
82
      $form_edit = $this->dateForm($options, 'daily_2', TRUE);
83
      $this->verifyDateForm($form_edit);
84

    
85
      $form_edit = $this->dateForm($options, 'daily_3', TRUE);
86
      $this->verifyDateForm($form_edit);
87

    
88
      $form_edit = $this->dateForm($options, 'daily_4', TRUE);
89
      $this->verifyDateForm($form_edit);
90

    
91
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude');
92
      $this->verifyDateForm($form_edit);
93

    
94
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'include');
95
      $this->verifyDateForm($form_edit);
96

    
97
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude_include');
98
      $this->verifyDateForm($form_edit);
99

    
100
      // Weekly tests.
101
      $form_edit = $this->dateForm($options, 'weekly_1');
102
      $this->verifyDateForm($form_edit);
103

    
104
      $form_edit = $this->dateForm($options, 'weekly_2');
105
      $this->verifyDateForm($form_edit);
106

    
107
      $form_edit = $this->dateForm($options, 'weekly_3');
108
      $this->verifyDateForm($form_edit);
109

    
110
      $form_edit = $this->dateForm($options, 'weekly_4');
111
      $this->verifyDateForm($form_edit);
112

    
113
      $form_edit = $this->dateForm($options, 'weekly_1', TRUE);
114
      $this->verifyDateForm($form_edit);
115

    
116
      $form_edit = $this->dateForm($options, 'weekly_2', TRUE);
117
      $this->verifyDateForm($form_edit);
118

    
119
      $form_edit = $this->dateForm($options, 'weekly_3', TRUE);
120
      $this->verifyDateForm($form_edit);
121

    
122
      $form_edit = $this->dateForm($options, 'weekly_4', TRUE);
123
      $this->verifyDateForm($form_edit);
124

    
125
      // Monthly tests.
126
      $form_edit = $this->dateForm($options, 'monthly_1');
127
      $this->verifyDateForm($form_edit);
128

    
129
      $form_edit = $this->dateForm($options, 'monthly_2');
130
      $this->verifyDateForm($form_edit);
131

    
132
      $form_edit = $this->dateForm($options, 'monthly_3');
133
      $this->verifyDateForm($form_edit);
134

    
135
      $form_edit = $this->dateForm($options, 'monthly_4');
136
      $this->verifyDateForm($form_edit);
137

    
138
      $form_edit = $this->dateForm($options, 'monthly_5');
139
      $this->verifyDateForm($form_edit);
140

    
141
      $form_edit = $this->dateForm($options, 'monthly_6');
142
      $this->verifyDateForm($form_edit);
143

    
144
      $form_edit = $this->dateForm($options, 'monthly_1', TRUE);
145
      $this->verifyDateForm($form_edit);
146

    
147
      $form_edit = $this->dateForm($options, 'monthly_2', TRUE);
148
      $this->verifyDateForm($form_edit);
149

    
150
      $form_edit = $this->dateForm($options, 'monthly_3', TRUE);
151
      $this->verifyDateForm($form_edit);
152

    
153
      $form_edit = $this->dateForm($options, 'monthly_4', TRUE);
154
      $this->verifyDateForm($form_edit);
155

    
156
      $form_edit = $this->dateForm($options, 'monthly_5', TRUE);
157
      $this->verifyDateForm($form_edit);
158

    
159
      $form_edit = $this->dateForm($options, 'monthly_6', TRUE);
160
      $this->verifyDateForm($form_edit);
161

    
162
      // Yearly tests.
163
      $form_edit = $this->dateForm($options, 'yearly_1');
164
      $this->verifyDateForm($form_edit);
165

    
166
      $form_edit = $this->dateForm($options, 'yearly_2');
167
      $this->verifyDateForm($form_edit);
168

    
169
      $form_edit = $this->dateForm($options, 'yearly_3');
170
      $this->verifyDateForm($form_edit);
171

    
172
      $form_edit = $this->dateForm($options, 'yearly_4');
173
      $this->verifyDateForm($form_edit);
174

    
175
      $form_edit = $this->dateForm($options, 'yearly_5');
176
      $this->verifyDateForm($form_edit);
177

    
178
      $form_edit = $this->dateForm($options, 'yearly_6');
179
      $this->verifyDateForm($form_edit);
180

    
181
      $form_edit = $this->dateForm($options, 'yearly_1', TRUE);
182
      $this->verifyDateForm($form_edit);
183

    
184
      $form_edit = $this->dateForm($options, 'yearly_2', TRUE);
185
      $this->verifyDateForm($form_edit);
186

    
187
      $form_edit = $this->dateForm($options, 'yearly_3', TRUE);
188
      $this->verifyDateForm($form_edit);
189

    
190
      $form_edit = $this->dateForm($options, 'yearly_4', TRUE);
191
      $this->verifyDateForm($form_edit);
192

    
193
      $form_edit = $this->dateForm($options, 'yearly_5', TRUE);
194
      $this->verifyDateForm($form_edit);
195

    
196
      $form_edit = $this->dateForm($options, 'yearly_6', TRUE);
197
      $this->verifyDateForm($form_edit);
198

    
199
      $this->deleteDateField();
200
    }
201
  }
202

    
203
  function dateForm($options, $test_id = NULL, $is_count = FALSE, $exclude_include = NULL) {
204
    // Tests that date field functions properly.
205
    $edit = array();
206
    $edit['title'] = $this->randomName(8);
207
    $edit['body[und][0][value]'] = $this->randomName(16);
208
    $current_year = date('Y');
209

    
210
    switch ($options) {
211
      case 'select':
212
        $edit['field_test[und][0][value][year]'] = $current_year;
213
        $edit['field_test[und][0][value][month]'] = '10';
214
        $edit['field_test[und][0][value][day]'] = '7';
215
        $edit['field_test[und][0][value][hour]'] = '10';
216
        $edit['field_test[und][0][value][minute]'] = '30';
217
        break;
218

    
219
      case 'text':
220
        $edit['field_test[und][0][value][date]'] = format_string('!year-10-07 10:30', array('!year' => $current_year));
221
        break;
222

    
223
      case 'popup':
224
        $edit['field_test[und][0][value][date]'] = format_string('!year-10-07', array('!year' => $current_year));
225
        $edit['field_test[und][0][value][time]'] = '10:30';
226
        break;
227
    }
228

    
229
    // Tests that Date repeat settings function properly.
230
    if ($test_id !== NULL) {
231
      $edit['field_test[und][0][show_repeat_settings]'] = TRUE;
232
      $count = 5;
233

    
234
      switch ($test_id) {
235
        // Daily test cases.
236
        case 'daily_1':
237
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
238
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'INTERVAL';
239
          $edit['field_test[und][0][rrule][daily][INTERVAL_child]'] = 2;
240
          break;
241

    
242
        case 'daily_2':
243
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
244
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_weekday';
245
          break;
246

    
247
        case 'daily_3':
248
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
249
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_mo_we_fr';
250
          break;
251

    
252
        case 'daily_4':
253
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
254
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_tu_th';
255
          break;
256

    
257
        // Weekly test cases.
258
        case 'weekly_1':
259
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
260
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
261
          $edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
262
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
263
          break;
264

    
265
        case 'weekly_2':
266
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
267
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 1;
268
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
269
          $edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
270
          break;
271

    
272
        case 'weekly_3':
273
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
274
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 2;
275
          $edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
276
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
277
          break;
278

    
279
        case 'weekly_4':
280
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
281
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 10;
282
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
283
          $edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
284
          $edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
285
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
286
          $edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
287
          break;
288

    
289
        // Monthly test cases.
290
        case 'monthly_1':
291
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
292
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
293
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
294
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
295
          break;
296

    
297
        case 'monthly_2':
298
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
299
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
300
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
301
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
302
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
303
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
304
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
305
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
306
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
307
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
308
          break;
309

    
310
        case 'monthly_3':
311
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
312
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
313
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
314
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
315
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
316
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
317
          break;
318

    
319
        case 'monthly_4':
320
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
321
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
322
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
323
          break;
324

    
325
        case 'monthly_5':
326
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
327
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
328
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
329
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
330
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
331
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
332
          break;
333

    
334
        case 'monthly_6':
335
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
336
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
337
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
338
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
339
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
340
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
341
          break;
342

    
343
        // Yearly test cases.
344
        case 'yearly_1':
345
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
346
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
347
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
348
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
349
          break;
350

    
351
        case 'yearly_2':
352
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
353
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
354
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
355
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
356
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
357
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
358
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
359
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
360
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
361
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
362
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
363
          break;
364

    
365
        case 'yearly_3':
366
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
367
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
368
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
369
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
370
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
371
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
372
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
373
          break;
374

    
375
        case 'yearly_4':
376
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
377
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
378
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
379
          break;
380

    
381
        case 'yearly_5':
382
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
383
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
384
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
385
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
386
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
387
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
388
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
389
          break;
390

    
391
        case 'yearly_6':
392
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
393
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
394
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
395
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
396
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
397
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
398
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
399
          break;
400
      }
401

    
402
      // Test COUNT or UNTIL (default).
403
      if ($is_count) {
404
        $edit['field_test[und][0][rrule][range_of_repeat]'] = 'COUNT';
405
        $edit['field_test[und][0][rrule][count_child]'] = $count;
406
      }
407
      else {
408
        $edit['field_test[und][0][rrule][range_of_repeat]'] = 'UNTIL';
409
        $date = array(
410
          'year' => $current_year + 1,
411
          'month' => '10',
412
          'day' => '07',
413
        );
414
        $edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][until_child]', $options, $date);
415
      }
416

    
417
      // Test date exceptions and/or additions.
418
      if ($exclude_include !== NULL) {
419
        $exclude_include_edit = array();
420
        switch ($exclude_include) {
421
          case 'exclude':
422
            $exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
423
            $date = array(
424
              'year' => $current_year,
425
              'month' => '10',
426
              'day' => '07',
427
            );
428
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
429
            break;
430

    
431
          case 'include':
432
            $exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
433
            $date = array(
434
              'year' => $current_year + 3,
435
              'month' => '10',
436
              'day' => '07',
437
            );
438
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
439
            break;
440

    
441
          case 'exclude_include':
442
            $exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
443
            $date = array(
444
              'year' => $current_year,
445
              'month' => '10',
446
              'day' => '07',
447
            );
448
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
449

    
450
            $exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
451
            $date = array(
452
              'year' => $current_year + 3,
453
              'month' => '10',
454
              'day' => '07',
455
            );
456
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
457
            break;
458
        }
459
        $edit += $exclude_include_edit;
460
      }
461
    }
462

    
463
    $this->drupalPost('node/add/date', $edit, t('Save'));
464
    $this->assertText($edit['body[und][0][value]'], 'Test node has been created');
465

    
466
    // Return the settings for later use in verification.
467
    return $edit;
468
  }
469

    
470
  function verifyDateForm($edit) {
471
    $title = $edit['title'];
472
    $node = $this->drupalGetNodeByTitle($title);
473

    
474
    $this->drupalGet("node/{$node->nid}/edit");
475

    
476
    foreach ($edit as $field => $value) {
477
      $this->assertFieldByName($field, $value);
478
    }
479

    
480
    $this->drupalPost("node/{$node->nid}/delete", NULL, t('Delete'));
481
    $this->assertRaw(t('Date %title has been deleted.', array('%title' => $title)), t('Deleted Date content.'));
482
  }
483

    
484
  function createDateField($type, $widget, $display_all_day = FALSE) {
485
    $edit = array();
486
    $edit['fields[_add_new_field][label]'] = 'Test';
487
    $edit['fields[_add_new_field][field_name]'] = 'test';
488
    $edit['fields[_add_new_field][weight]'] = '-100';
489
    $edit['fields[_add_new_field][type]'] = $type;
490
    $edit['fields[_add_new_field][widget_type]'] = $widget;
491

    
492
    $label = $edit['fields[_add_new_field][label]'];
493

    
494
    $field_edit = array();
495
    $field_edit['field[settings][repeat]'] = 1;
496

    
497
    $instance_edit = array();
498
    switch ($widget) {
499
      case 'select':
500
      case 'popup':
501
        $instance_edit['instance[widget][settings][year_range][years_back]'] = '-5';
502
        $instance_edit['instance[widget][settings][year_range][years_forward]'] = '+5';
503
        break;
504
    }
505

    
506
    if ($display_all_day) {
507
      $instance_edit['instance[widget][settings][display_all_day]'] = TRUE;
508
    }
509

    
510
    // First step : 'Add new field' on the 'Manage fields' page.
511
    $this->drupalPost('admin/structure/types/manage/date/fields', $edit, t('Save'));
512
    $this->assertRaw(t('These settings apply to the %label field everywhere it is used.', array('%label' => $label)), t('Field settings page was displayed.'));
513

    
514
    // Second step : 'Field settings' form.
515
    $this->drupalPost(NULL, $field_edit, t('Save field settings'));
516
    $this->assertRaw(t('Updated field %label field settings.', array('%label' => $label)), t('Redirected to instance and widget settings page.'));
517

    
518
    // Third step : 'Instance settings' form.
519
    $this->drupalPost(NULL, $instance_edit, t('Save settings'));
520
    $this->assertRaw(t('Saved %label configuration.', array('%label' => $label)), t('Redirected to "Manage fields" page.'));
521

    
522
    // Check that the field appears in the overview form.
523
    $this->assertFieldByXPath('//table[@id="field-overview"]//td[1]', $label, t('Field was created and appears in the overview page.'));
524
  }
525

    
526
  function deleteDateField() {
527
    $this->drupalGet('admin/structure/types/manage/date/fields');
528
    $this->clickLink('delete');
529
    $this->drupalPost(NULL, NULL, t('Delete'));
530
    $this->assertText(t('The field Test has been deleted from the Date content type.'), t('Removed date field.'));
531
  }
532

    
533
  function formatDateForRRULEInputs($form_field_name, $date_widget_type, $date) {
534
    $return = array();
535

    
536
    switch ($date_widget_type) {
537
      case 'select':
538
        $return["{$form_field_name}[datetime][year]"] = $date['year'];
539
        $return["{$form_field_name}[datetime][month]"] = $date['month'];
540
        $return["{$form_field_name}[datetime][day]"] = ltrim($date['day'], '0');
541
        break;
542

    
543
      case 'text':
544
      case 'popup':
545
        $return["{$form_field_name}[datetime][date]"] = "{$date['year']}-{$date['month']}-{$date['day']}";
546
        break;
547
    }
548

    
549
    return $return;
550
  }
551

    
552
}