Skip to content
Snippets Groups Projects
Commit 617bc7ff authored by Owen Bush's avatar Owen Bush
Browse files

Added unit testing for consecutive recurring dates

parent 8265ef99
No related branches found
No related tags found
No related merge requests found
<?php
namespace Drupal\Tests\recurring_events\Unit;
use Drupal\recurring_events\Plugin\Field\FieldType\ConsecutiveRecurringDate;
use Drupal\Core\Datetime\DrupalDateTime;
use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Tests\UnitTestCase;
/**
* @coversDefaultClass \Drupal\recurring_events\Plugin\Field\FieldType\ConsecutiveRecurringDate
* @group recurring_events
*/
class ConsecutiveRecurringDateTest extends UnitTestCase {
/**
* {@inheritdoc}
*/
public function setUp() {
parent::setUp();
require_once 'includes/OverriddenGlobalFunctions.php';
$container = new ContainerBuilder();
\Drupal::setContainer($container);
$language_manager_mock = $this->getMockBuilder('Drupal\\Core\\Language\\LanguageManagerInterface')
->disableOriginalConstructor()
->getMock();
$language_mock = $this->createMock('Drupal\\Core\\Language\\LanguageInterface');
$language_manager_mock->expects($this->any())
->method('getCurrentLanguage')
->will($this->returnValue($language_mock));
$container->set('language_manager', $language_manager_mock);
}
/**
* Tests ConsecutiveRecurringDate::findDailyDatesBetweenDates().
*/
public function testFindDailyDatesBetweenDates() {
$start_date = new DrupalDateTime('2019-01-01 00:00:00');
$end_date = new DrupalDateTime('2019-01-07 00:00:00');
$expected_dates = $dates = [];
$expected_date_objects = [
new DrupalDateTime('2019-01-01 00:00:00'),
new DrupalDateTime('2019-01-02 00:00:00'),
new DrupalDateTime('2019-01-03 00:00:00'),
new DrupalDateTime('2019-01-04 00:00:00'),
new DrupalDateTime('2019-01-05 00:00:00'),
new DrupalDateTime('2019-01-06 00:00:00'),
new DrupalDateTime('2019-01-07 00:00:00'),
];
$date_objects = ConsecutiveRecurringDate::findDailyDatesBetweenDates($start_date, $end_date);
foreach ($expected_date_objects as $date) {
$expected_dates[] = $date->format('r');
}
foreach ($date_objects as $date) {
$dates[] = $date->format('r');
}
$this->assertSame($expected_dates, $dates);
}
/**
* Tests ConsecutiveRecurringDate::findSlotsBetweenTimes().
*/
public function testFindSlotsBetweenTimes() {
$start_date = new DrupalDateTime('2019-01-01 00:00:00');
$form_data = [
'end_time' => '01:00:00',
'duration' => '10',
'duration_units' => 'minute',
'buffer' => '5',
'buffer_units' => 'minute',
];
$expected_dates = $dates = [];
$expected_date_objects = [
new DrupalDateTime('2019-01-01 00:00:00'),
new DrupalDateTime('2019-01-01 00:15:00'),
new DrupalDateTime('2019-01-01 00:30:00'),
new DrupalDateTime('2019-01-01 00:45:00'),
new DrupalDateTime('2019-01-01 01:00:00'),
];
$date_objects = ConsecutiveRecurringDate::findSlotsBetweenTimes($start_date, $form_data);
foreach ($expected_date_objects as $date) {
$expected_dates[] = $date->format('r');
}
foreach ($date_objects as $date) {
$dates[] = $date->format('r');
}
$this->assertSame($expected_dates, $dates);
}
}
<?php
/**
* @file
* Includes some overridden global functions.
*/
if (!function_exists('drupal_get_user_timezone')) {
/**
* Overrides global drupal_get_user_timezone if not exists.
*
* @return string
* Timezone mocked.
*/
function drupal_get_user_timezone() {
return @date_default_timezone_get();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment