DatesUtilsTest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Tests\Unit\Service\Utils;
  3. use App\Service\Utils\DatesUtils;
  4. use PHPUnit\Framework\TestCase;
  5. class DatesUtilsTest extends TestCase
  6. {
  7. public function tearDown(): void
  8. {
  9. DatesUtils::clearFakeDatetime();
  10. }
  11. /**
  12. * @see DatesUtils::isNowInInterval()
  13. *
  14. * @noinspection PhpRedundantOptionalArgumentInspection
  15. */
  16. public function testIsNowInInterval(): void
  17. {
  18. DatesUtils::setFakeDatetime('2023-01-01');
  19. $this->assertTrue(DatesUtils::isNowInInterval(new \DateTime('2020-01-02'), new \DateTime('2025-01-02')));
  20. $this->assertTrue(DatesUtils::isNowInInterval(new \DateTime('2020-01-02'), null));
  21. }
  22. /**
  23. * @see DatesUtils::isNowInInterval()
  24. */
  25. public function testIsNowInIntervalFalse(): void
  26. {
  27. DatesUtils::setFakeDatetime('2023-01-01');
  28. $this->assertFalse(DatesUtils::isNowInInterval(new \DateTime('2019-01-02'), new \DateTime('2020-01-02')));
  29. }
  30. /**
  31. * @see DatesUtils::new()
  32. */
  33. public function testNew(): void
  34. {
  35. self::assertEquals('2021-01-01', DatesUtils::new('2021-01-01')->format('Y-m-d'));
  36. $now = new \DateTime();
  37. self::assertEquals(
  38. $now->format('Y-m-d'),
  39. DatesUtils::new()->format('Y-m-d')
  40. );
  41. DatesUtils::setFakeDatetime('2021-01-01');
  42. /* @noinspection PhpRedundantOptionalArgumentInspection */
  43. self::assertEquals('2021-01-01', DatesUtils::new('now')->format('Y-m-d'));
  44. DatesUtils::clearFakeDatetime();
  45. $now = new \DateTime();
  46. self::assertEquals(
  47. $now->format('Y-m-d'),
  48. DatesUtils::new()->format('Y-m-d')
  49. );
  50. }
  51. public function testGetDaysSinceLastUpdate(): void
  52. {
  53. DatesUtils::setFakeDatetime('2023-01-21');
  54. $this->assertEquals(
  55. DatesUtils::daysSince(new \DateTime('2023-01-01')),
  56. 20
  57. );
  58. }
  59. }