custom_field-1.0.x-dev/tests/src/Unit/TimeTest.php

tests/src/Unit/TimeTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\custom_field\Unit;

use Drupal\custom_field\Time;
use PHPUnit\Framework\TestCase;

/**
 * Tests the Time class.
 *
 * @coversDefaultClass \Drupal\custom_field\Time
 * @group custom_field
 */
class TimeTest extends TestCase {

  /**
   * Tests Time class creation.
   */
  public function testCreationWithInvalidArguments(): void {
    $this->expectException(\InvalidArgumentException::class);
    new Time(50);
  }

  /**
   * @covers ::createFromDateTime
   */
  public function testItCanBeCreatedByDateTime(): void {
    $time = Time::createFromDateTime(new \DateTime('2020-09-08 13:33:26'));
    static::assertEquals('13', $time->getHour());
    static::assertEquals('33', $time->getMinute());
    static::assertEquals('26', $time->getSecond());
  }

  /**
   * @covers ::createFromHtml5Format
   */
  public function testItCanBeCreatedByHtml5String(): void {
    $time = Time::createFromHtml5Format('13:40:30');
    static::assertEquals('13', $time->getHour());
    static::assertEquals('40', $time->getMinute());
    static::assertEquals('30', $time->getSecond());

    $time = Time::createFromHtml5Format('14:50');
    static::assertEquals('14', $time->getHour());
    static::assertEquals('50', $time->getMinute());
    static::assertEquals('0', $time->getSecond());

    $time = Time::createFromHtml5Format('');
    static::assertEquals('0', $time->getHour());
    static::assertEquals('0', $time->getMinute());
    static::assertEquals('0', $time->getSecond());
  }

  /**
   * @covers ::createFromTimestamp
   */
  public function testItCanBeCreatedFromDayTimestamp(): void {
    $time = Time::createFromTimestamp(3700);
    static::assertEquals('01:01:40', $time->format('H:i:s'));
  }

  /**
   * @covers ::isEmpty
   */
  public function testItDetectsEmpty(): void {
    static::assertTrue(Time::isEmpty(NULL));
    static::assertTrue(Time::isEmpty(''));
    static::assertTrue(Time::isEmpty('86401'));
    static::assertFalse(Time::isEmpty('0'));
    static::assertFalse(Time::isEmpty(0));
  }

  /**
   * @covers ::format
   */
  public function testItFormatsInExpectedFormat(): void {
    $time = new Time(13, 40, 30);
    static::assertEquals('01:40 pm', $time->format('h:i a'));
  }

  /**
   * @covers ::formatForWidget
   */
  public function testItFormatsForWidgetsInExpectedFormat(): void {
    $time = new Time(13, 40, 30);
    static::assertEquals('13:40:30', $time->formatForWidget());
    static::assertEquals('13:40', $time->formatForWidget(FALSE));
  }

  /**
   * Test it computes correctly on days when the time changes.
   */
  public function testItWorksOnDstDates(): void {
    $original_tz = date_default_timezone_get();
    date_default_timezone_set('America/New_York');
    $date = new \DateTime('2022-03-13', new \DateTimeZone('America/New_York'));
    $time = new Time(13, 0, 0);
    $date_with_time = $time->on($date);
    static::assertEquals('2022-03-13T13:00:00-04:00', $date_with_time->format('c'));
    $date = new \DateTime('2022-11-06', new \DateTimeZone('America/New_York'));
    $time = new Time(13, 0, 0);
    $date_with_time = $time->on($date);
    static::assertEquals('2022-11-06T13:00:00-05:00', $date_with_time->format('c'));
    date_default_timezone_set($original_tz);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc