Commit | Line | Data |
---|---|---|
b39946ff FW |
1 | <?php |
2 | ||
3 | use Civi\Api4\Event; | |
4 | ||
5 | class CRM_Event_Form_ManageEvent_RegistrationTest extends CiviUnitTestCase { | |
6 | ||
7 | public function preventCiviExit($event) { | |
8 | if (is_a($event->form, 'CRM_Event_Form_ManageEvent_Registration')) { | |
9 | // EventInfo form redirects to the location form if the action is ADD | |
10 | $event->form->setAction(CRM_Core_Action::NONE); | |
11 | } | |
12 | } | |
13 | ||
14 | public function testTimeZone() { | |
15 | $event_id = $this->eventCreate([ | |
16 | 'event_tz' => 'Australia/Sydney', | |
17 | 'start_date' => '2022-06-22 12:00:00', | |
18 | 'end_date' => '2022-06-22 20:00:00', | |
19 | ])['id']; | |
20 | ||
21 | $formValues = [ | |
22 | 'registration_start_date' => '2022-05-23 09:00:00', | |
23 | 'registration_end_date' => '2022-06-20 17:00:00', | |
24 | ]; | |
25 | ||
26 | Civi::dispatcher()->addListener('hook_civicrm_postProcess', [$this, 'preventCiviExit']); | |
27 | ||
28 | $this->submitForm($formValues, $event_id); | |
29 | ||
30 | $this->assertIsInt($event_id, 'Event creation success'); | |
31 | ||
32 | Civi::dispatcher()->removeListener('hook_civicrm_postProcess', [$this, 'preventCiviExit']); | |
33 | ||
34 | $event = Event::get(FALSE) | |
35 | ->addWhere('id', '=', $event_id) | |
36 | ->addSelect('id', 'registration_start_date', 'registration_end_date', 'event_tz') | |
37 | ->execute()[0]; | |
38 | ||
39 | $this->assertEquals('2022-05-22 23:00:00', $event['registration_start_date'], 'Registration start date resolved by timezone.'); | |
40 | $this->assertEquals('2022-06-20 07:00:00', $event['registration_end_date'], 'Registration end date resolved by timezone.'); | |
41 | ||
42 | } | |
43 | ||
44 | public function submitForm(array $formValues, int $eventID): int { | |
45 | $form = $this->getFormObject(CRM_Event_Form_ManageEvent_Registration::class, $formValues); | |
46 | if ($eventID) { | |
47 | $form->set('id', $eventID); | |
48 | } | |
49 | ||
50 | $form->preProcess(); | |
51 | $form->buildQuickForm(); | |
52 | $form->postProcess(); | |
53 | return $form->get('id'); | |
54 | } | |
55 | ||
56 | } |