CacheEngineTest.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. declare(strict_types=1);
  3. namespace Cake\Test\TestCase\Cache\Engine;
  4. use Cake\Cache\InvalidArgumentException;
  5. use Cake\TestSuite\TestCase;
  6. use DateInterval;
  7. use TestApp\Cache\Engine\TestAppCacheEngine;
  8. class CacheEngineTest extends TestCase
  9. {
  10. public function durationProvider(): array
  11. {
  12. return [
  13. [null, 10],
  14. [2, 2],
  15. [new DateInterval('PT1S'), 1],
  16. [new DateInterval('P1D'), 86400],
  17. ];
  18. }
  19. /**
  20. * Test duration with null, int and DateInterval multiple format.
  21. *
  22. * @dataProvider durationProvider
  23. */
  24. public function testDuration($ttl, $expected): void
  25. {
  26. $engine = new TestAppCacheEngine();
  27. $engine->setConfig(['duration' => 10]);
  28. $result = $engine->getDuration($ttl);
  29. $this->assertSame($result, $expected);
  30. }
  31. /**
  32. * Test duration value should be \DateInterval, int or null.
  33. */
  34. public function testDurationException(): void
  35. {
  36. $engine = new TestAppCacheEngine();
  37. $this->expectException(InvalidArgumentException::class);
  38. $this->expectExceptionMessage('TTL values must be one of null, int, \DateInterval');
  39. $engine->getDuration('ttl');
  40. }
  41. }