TimeEntityTest::testGetStartTimeNotLocalized()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 15
rs 9.7666
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
/**
4
 * Created by PhpStorm.
5
 * User: benedikt
6
 * Date: 10/1/17
7
 * Time: 12:52 PM
8
 */
9
10
namespace Tfboe\FmLib\Tests\Unit\Entity\Helpers;
11
12
use Tfboe\FmLib\Entity\Helpers\TimeEntity;
13
use Tfboe\FmLib\Tests\Helpers\UnitTestCase;
14
15
/**
16
 * Class BaseEntityTest
17
 * @package Tfboe\FmLib\Tests\Unit\Entity\Helpers
18
 */
19
class TimeEntityTest extends UnitTestCase
20
{
21
//<editor-fold desc="Public Methods">
22
  /**
23
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::setEndTime
24
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::getEndTime
25
   */
26
  public function testEndTime()
27
  {
28
    $entity = $this->mock();
29
    $time = new \DateTime('2017-12-31 16:00', new \DateTimeZone('Europe/Vienna'));
30
    $entity->setEndTime($time);
31
    self::assertEquals($time, $entity->getEndTime());
32
  }
33
34
  /**
35
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::getEndTime
36
   */
37
  public function testGetEndTimeNotLocalized()
38
  {
39
    $entity = $this->mock();
40
    $parentClass = (new \ReflectionObject($entity))->getParentClass();
41
    $property = $parentClass->getProperty('endTime');
42
    $property->setAccessible(true);
43
44
    /** @noinspection PhpUnhandledExceptionInspection */
45
    self::getProperty(get_class($entity), 'endTime')->setValue($entity,
46
      new \DateTime("2017-01-01 05:00:00", new \DateTimeZone("UTC")));
47
    /** @noinspection PhpUnhandledExceptionInspection */
48
    self::getProperty(get_class($entity), 'endTimezone')->setValue($entity, "+02:00");
49
50
    $time = $entity->getEndTime();
51
    self::assertEquals("2017-01-01 07:00:00 +0200", $time->format("Y-m-d H:i:s O"));
52
  }
53
54
  /**
55
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::getStartTime
56
   */
57
  public function testGetStartTimeNotLocalized()
58
  {
59
    $entity = $this->mock();
60
    $parentClass = (new \ReflectionObject($entity))->getParentClass();
61
    $property = $parentClass->getProperty('startTime');
62
    $property->setAccessible(true);
63
    $property->setValue($entity, new \DateTime("2017-01-01 05:00:00", new \DateTimeZone("UTC")));
64
65
    $property = $parentClass->getProperty('startTimezone');
66
    $property->setAccessible(true);
67
    $property->setValue($entity, "+02:00");
68
69
    $time = $entity->getStartTime();
70
    self::assertEquals("2017-01-01 07:00:00 +0200", $time->format("Y-m-d H:i:s O"));
71
  }
72
73
  /**
74
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity
75
   */
76
  public function testInitialState()
77
  {
78
    $entity = $this->mock();
79
    self::assertNull($entity->getStartTime());
80
    self::assertNull($entity->getEndTime());
81
  }
82
83
  /**
84
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::setStartTime
85
   * @covers \Tfboe\FmLib\Entity\Helpers\TimeEntity::getStartTime
86
   */
87
  public function testStartTime()
88
  {
89
    $entity = $this->mock();
90
    $time = new \DateTime('2017-12-31 16:00', new \DateTimeZone('Europe/Vienna'));
91
    $entity->setStartTime($time);
92
    self::assertEquals($time, $entity->getStartTime());
93
  }
94
//</editor-fold desc="Public Methods">
95
96
//<editor-fold desc="Private Methods">
97
  /**
98
   * @return \PHPUnit_Framework_MockObject_MockObject|TimeEntity
99
   */
100
  private function mock(): \PHPUnit_Framework_MockObject_MockObject
101
  {
102
    return $this->getMockForTrait(TimeEntity::class, [], "MockedTrait");
103
  }
104
//</editor-fold desc="Private Methods">
105
}