Projet

Général

Profil

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

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

1
<?php
2

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

    
8
class DateRepeatFormTestCase extends DrupalWebTestCase {
9
  protected $privileged_user;
10

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

    
19
  /**
20
   * Implements setUp().
21
   */
22
  public function setUp() {
23
    // Load the date_repeat module.
24
    parent::setUp('field', 'field_ui', 'date_api', 'date_repeat', 'date', 'date_popup', 'date_repeat_field');
25

    
26
    // Create and log in our privileged user.
27
    $this->privileged_user = $this->drupalCreateUser(array(
28
      'administer content types', 'administer nodes', 'bypass node access', 'view date repeats'
29
    ));
30
    $this->drupalLogin($this->privileged_user);
31

    
32
    variable_set('date_format_short', 'Y-m-d H:i');
33
  }
34

    
35
  public function testDateRepeatForm() {
36
    $edit = array();
37
    $edit['name'] = 'Date';
38
    $edit['type'] = 'date';
39
    $this->drupalPost('admin/structure/types/add', $edit, t('Save content type'));
40
    $this->assertText('The content type Date has been added.', 'Content type added.');
41
    $display_all_day = FALSE;
42

    
43
    // Testing options.
44
    $widget_options = array(
45
      'date_select' => 'select',
46
      'date_text' => 'text',
47
      'date_popup' => 'popup');
48

    
49
    foreach ($widget_options as $widget => $options) {
50
      // Daily tests
51
      // Creates date field stored as a datetime.
52
      $this->createDateField($type = 'datetime', $widget, $display_all_day);
53

    
54
      $form_edit = $this->dateForm($options, 'daily_1');
55
      $this->verifyDateForm($form_edit);
56

    
57
      $form_edit = $this->dateForm($options, 'daily_2');
58
      $this->verifyDateForm($form_edit);
59

    
60
      $form_edit = $this->dateForm($options, 'daily_3');
61
      $this->verifyDateForm($form_edit);
62

    
63
      $form_edit = $this->dateForm($options, 'daily_4');
64
      $this->verifyDateForm($form_edit);
65

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

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

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

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

    
78
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude');
79
      $this->verifyDateForm($form_edit);
80

    
81
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'include');
82
      $this->verifyDateForm($form_edit);
83

    
84
      $form_edit = $this->dateForm($options, 'daily_1', FALSE, 'exclude_include');
85
      $this->verifyDateForm($form_edit);
86

    
87
      // Weekly tests
88

    
89
      $form_edit = $this->dateForm($options, 'weekly_1');
90
      $this->verifyDateForm($form_edit);
91

    
92
      $form_edit = $this->dateForm($options, 'weekly_2');
93
      $this->verifyDateForm($form_edit);
94

    
95
      $form_edit = $this->dateForm($options, 'weekly_3');
96
      $this->verifyDateForm($form_edit);
97

    
98
      $form_edit = $this->dateForm($options, 'weekly_4');
99
      $this->verifyDateForm($form_edit);
100

    
101
      $form_edit = $this->dateForm($options, 'weekly_1', TRUE);
102
      $this->verifyDateForm($form_edit);
103

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

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

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

    
113
      // Monthly tests
114

    
115
      $form_edit = $this->dateForm($options, 'monthly_1');
116
      $this->verifyDateForm($form_edit);
117

    
118
      $form_edit = $this->dateForm($options, 'monthly_2');
119
      $this->verifyDateForm($form_edit);
120

    
121
      $form_edit = $this->dateForm($options, 'monthly_3');
122
      $this->verifyDateForm($form_edit);
123

    
124
      $form_edit = $this->dateForm($options, 'monthly_4');
125
      $this->verifyDateForm($form_edit);
126

    
127
      $form_edit = $this->dateForm($options, 'monthly_5');
128
      $this->verifyDateForm($form_edit);
129

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

    
133
      $form_edit = $this->dateForm($options, 'monthly_1', TRUE);
134
      $this->verifyDateForm($form_edit);
135

    
136
      $form_edit = $this->dateForm($options, 'monthly_2', TRUE);
137
      $this->verifyDateForm($form_edit);
138

    
139
      $form_edit = $this->dateForm($options, 'monthly_3', TRUE);
140
      $this->verifyDateForm($form_edit);
141

    
142
      $form_edit = $this->dateForm($options, 'monthly_4', TRUE);
143
      $this->verifyDateForm($form_edit);
144

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

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

    
151
      // Yearly tests
152

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

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

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

    
162
      $form_edit = $this->dateForm($options, 'yearly_4');
163
      $this->verifyDateForm($form_edit);
164

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

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

    
171
      $form_edit = $this->dateForm($options, 'yearly_1', TRUE);
172
      $this->verifyDateForm($form_edit);
173

    
174
      $form_edit = $this->dateForm($options, 'yearly_2', TRUE);
175
      $this->verifyDateForm($form_edit);
176

    
177
      $form_edit = $this->dateForm($options, 'yearly_3', TRUE);
178
      $this->verifyDateForm($form_edit);
179

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

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

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

    
189
      $this->deleteDateField();
190
    }
191
  }
192

    
193
  function dateForm($options, $test_id = NULL, $is_count = FALSE, $exclude_include = NULL) {
194
    // Tests that date field functions properly.
195
    $edit = array();
196
    $edit['title'] = $this->randomName(8);
197
    $edit['body[und][0][value]'] = $this->randomName(16);
198
    $current_year = date('Y');
199

    
200

    
201
    switch ($options) {
202
      case 'select':
203
        $edit['field_test[und][0][value][year]'] = $current_year;
204
        $edit['field_test[und][0][value][month]'] = '10';
205
        $edit['field_test[und][0][value][day]'] = '7';
206
        $edit['field_test[und][0][value][hour]'] = '10';
207
        $edit['field_test[und][0][value][minute]'] = '30';
208
        break;
209
      case 'text':
210
        $edit['field_test[und][0][value][date]'] = format_string('!year-10-07 10:30', array('!year' => $current_year));
211
        break;
212
      case 'popup':
213
        $edit['field_test[und][0][value][date]'] = format_string('!year-10-07', array('!year' => $current_year));
214
        $edit['field_test[und][0][value][time]'] = '10:30';
215
        break;
216
    }
217

    
218
    // Tests that Date repeat settings function properly
219
    if ($test_id !== NULL) {
220
      $edit['field_test[und][0][show_repeat_settings]'] = TRUE;
221
      $count = 5;
222

    
223
      switch ($test_id) {
224
        // Daily test cases
225
        case 'daily_1':
226
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
227
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'INTERVAL';
228
          $edit['field_test[und][0][rrule][daily][INTERVAL_child]'] = 2;
229
          break;
230
        case 'daily_2':
231
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
232
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_weekday';
233
          break;
234
        case 'daily_3':
235
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
236
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_mo_we_fr';
237
          break;
238
        case 'daily_4':
239
          $edit['field_test[und][0][rrule][FREQ]'] = 'DAILY';
240
          $edit['field_test[und][0][rrule][daily][byday_radios]'] = 'every_tu_th';
241
          break;
242

    
243
        // Weekly test cases
244
        case 'weekly_1':
245
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
246
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
247
          $edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
248
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
249
          break;
250
        case 'weekly_2':
251
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
252
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 1;
253
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
254
          $edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
255
          break;
256
        case 'weekly_3':
257
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
258
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 2;
259
          $edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
260
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
261
          break;
262
        case 'weekly_4':
263
          $edit['field_test[und][0][rrule][FREQ]'] = 'WEEKLY';
264
          $edit['field_test[und][0][rrule][weekly][INTERVAL]'] = 10;
265
          $edit['field_test[und][0][rrule][weekly][BYDAY][MO]'] = TRUE;
266
          $edit['field_test[und][0][rrule][weekly][BYDAY][TU]'] = TRUE;
267
          $edit['field_test[und][0][rrule][weekly][BYDAY][WE]'] = TRUE;
268
          $edit['field_test[und][0][rrule][weekly][BYDAY][TH]'] = TRUE;
269
          $edit['field_test[und][0][rrule][weekly][BYDAY][FR]'] = TRUE;
270
          break;
271

    
272
        // Monthly test cases
273
        case 'monthly_1':
274
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
275
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
276
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
277
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
278
          break;
279
        case 'monthly_2':
280
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
281
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
282
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
283
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
284
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
285
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
286
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
287
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
288
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
289
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
290
          break;
291
        case 'monthly_3':
292
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
293
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYDAY_BYMONTH';
294
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
295
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
296
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
297
          $edit['field_test[und][0][rrule][monthly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
298
          break;
299
        case 'monthly_4':
300
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
301
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
302
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
303
          break;
304
        case 'monthly_5':
305
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
306
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
307
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
308
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
309
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
310
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
311
          break;
312
        case 'monthly_6':
313
          $edit['field_test[und][0][rrule][FREQ]'] = 'MONTHLY';
314
          $edit['field_test[und][0][rrule][monthly][day_month]'] = 'BYMONTHDAY_BYMONTH';
315
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
316
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
317
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
318
          $edit['field_test[und][0][rrule][monthly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
319
          break;
320

    
321
        // Yearly test cases
322
        case 'yearly_1':
323
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
324
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
325
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
326
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'FR';
327
          break;
328
        case 'yearly_2':
329
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
330
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
331
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
332
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '+1';
333
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'SU';
334
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
335
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
336
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][5]'] = TRUE;
337
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][7]'] = TRUE;
338
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][9]'] = TRUE;
339
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][11]'] = TRUE;
340
          break;
341
        case 'yearly_3':
342
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
343
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
344
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYDAY_BYMONTH';
345
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_COUNT]'] = '-2';
346
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYDAY_DAY]'] = 'MO';
347
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
348
          $edit['field_test[und][0][rrule][yearly][BYDAY_BYMONTH_child][BYMONTH][12]'] = TRUE;
349
          break;
350
        case 'yearly_4':
351
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
352
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
353
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
354
          break;
355
        case 'yearly_5':
356
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
357
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 2;
358
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
359
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '10';
360
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][1]'] = TRUE;
361
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
362
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][3]'] = TRUE;
363
          break;
364
        case 'yearly_6':
365
          $edit['field_test[und][0][rrule][FREQ]'] = 'YEARLY';
366
          $edit['field_test[und][0][rrule][yearly][INTERVAL]'] = 3;
367
          $edit['field_test[und][0][rrule][yearly][day_month]'] = 'BYMONTHDAY_BYMONTH';
368
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTHDAY]'] = '-5';
369
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][2]'] = TRUE;
370
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][4]'] = TRUE;
371
          $edit['field_test[und][0][rrule][yearly][BYMONTHDAY_BYMONTH_child][BYMONTH][6]'] = TRUE;
372
          break;
373
      }
374

    
375
      // Test COUNT or UNTIL (default)
376
      if ($is_count) {
377
        $edit['field_test[und][0][rrule][range_of_repeat]'] = 'COUNT';
378
        $edit['field_test[und][0][rrule][count_child]'] = $count;
379
      }
380
      else {
381
        $edit['field_test[und][0][rrule][range_of_repeat]'] = 'UNTIL';
382
        $date = array(
383
          'year' => $current_year + 1,
384
          'month' => '10',
385
          'day' => '07'
386
        );
387
        $edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][until_child]', $options, $date);
388
      }
389

    
390
      // Test date exceptions and/or additions
391
      if ($exclude_include !== NULL) {
392
        $exclude_include_edit = array();
393
        switch ($exclude_include) {
394
          case 'exclude':
395
            $exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
396
            $date = array(
397
              'year' => $current_year,
398
              'month' => '10',
399
              'day' => '07'
400
            );
401
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
402
            break;
403
          case 'include':
404
            $exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
405
            $date = array(
406
              'year' => $current_year + 3,
407
              'month' => '10',
408
              'day' => '07'
409
            );
410
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
411
            break;
412
          case 'exclude_include':
413
            $exclude_include_edit['field_test[und][0][rrule][show_exceptions]'] = TRUE;
414
            $date = array(
415
              'year' => $current_year,
416
              'month' => '10',
417
              'day' => '07'
418
            );
419
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][exceptions][EXDATE][0]', $options, $date);
420

    
421
            $exclude_include_edit['field_test[und][0][rrule][show_additions]'] = TRUE;
422
            $date = array(
423
              'year' => $current_year + 3,
424
              'month' => '10',
425
              'day' => '07'
426
            );
427
            $exclude_include_edit += $this->formatDateForRRULEInputs('field_test[und][0][rrule][additions][RDATE][0]', $options, $date);
428
            break;
429
        }
430
        $edit += $exclude_include_edit;
431
      }
432
    }
433

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

    
437
    // Return the settings for later use in verification
438
    return $edit;
439
  }
440

    
441
  function verifyDateForm($edit) {
442
    $title = $edit['title'];
443
    $node = $this->drupalGetNodeByTitle($title);
444

    
445
    $this->drupalGet("node/{$node->nid}/edit");
446

    
447
    foreach ($edit as $field => $value) {
448
      $this->assertFieldByName($field, $value);
449
    }
450

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

    
455
  function createDateField($type, $widget, $display_all_day = FALSE) {
456
    $edit = array();
457
    $edit['fields[_add_new_field][label]'] = 'Test';
458
    $edit['fields[_add_new_field][field_name]'] = 'test';
459
    $edit['fields[_add_new_field][weight]'] = '-4';
460
    $edit['fields[_add_new_field][type]'] = $type;
461
    $edit['fields[_add_new_field][widget_type]'] = $widget;
462

    
463
    $label = $edit['fields[_add_new_field][label]'];
464

    
465
    $field_edit = array();
466
    $field_edit['field[settings][repeat]'] = 1;
467

    
468
    $instance_edit = array();
469
    switch ($widget) {
470
      case 'select':
471
      case 'popup':
472
      $instance_edit['instance[widget][settings][year_range][years_back]'] = '-5';
473
      $instance_edit['instance[widget][settings][year_range][years_forward]'] = '+5';
474
      break;
475
    }
476

    
477
    if ($display_all_day) {
478
      $instance_edit['instance[widget][settings][display_all_day]'] = TRUE;
479
    }
480

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

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

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

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

    
497
  function deleteDateField() {
498
    $this->drupalGet('admin/structure/types/manage/date/fields');
499
    $this->clickLink('delete');
500
    $this->drupalPost(NULL, NULL, t('Delete'));
501
    $this->assertText(t('The field Test has been deleted from the Date content type.'), t('Removed date field.'));
502
  }
503

    
504
  function formatDateForRRULEInputs($form_field_name, $date_widget_type, $date) {
505
    $return = array();
506

    
507
    switch ($date_widget_type) {
508
      case 'select':
509
        $return["{$form_field_name}[datetime][year]"] = $date['year'];
510
        $return["{$form_field_name}[datetime][month]"] = $date['month'];
511
        $return["{$form_field_name}[datetime][day]"] = ltrim($date['day'], '0');
512
        break;
513
      case 'text':
514
      case 'popup':
515
        $return["{$form_field_name}[datetime][date]"] = "{$date['year']}-{$date['month']}-{$date['day']}";
516
        break;
517
    }
518

    
519
    return $return;
520
  }
521
}