banker/tests/ItemTest.php

110 lines
2.4 KiB
PHP
Raw Normal View History

2016-09-06 17:03:43 -04:00
<?php
namespace Aviat\Banker\Tests;
use Aviat\Banker\Item;
use Aviat\Banker\Driver\NullDriver;
2016-09-06 20:26:28 -04:00
use Aviat\Banker\Tests\Friend;
2016-09-06 17:03:43 -04:00
use PHPUnit\Framework\TestCase;
2016-09-06 20:26:28 -04:00
use DateTime;
use DateInterval;
2016-09-06 17:03:43 -04:00
class ItemTest extends TestCase {
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
protected $key = 'foo';
protected $item;
protected $driver;
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
public function setUp()
{
$this->driver = new NullDriver();
$this->item = new Item($this->driver, $this->key);
}
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
public function testGetKey()
{
$this->assertEquals($this->key, $this->item->getKey());
}
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
public function testGet()
{
// No value set yet
$this->assertNull($this->item->get());
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
// Set a value
$this->item->set('bar')
->save();
2016-09-06 20:26:28 -04:00
2016-09-06 17:03:43 -04:00
$this->assertEquals('bar', $this->item->get());
}
2016-09-06 20:26:28 -04:00
public function testExpiresAt()
{
$time = new DateTime("Next Tuesday");
$expected = $time->getTimestamp();
$this->item->expiresAt($time);
$friend = new Friend($this->item);
$this->assertEquals($expected, $friend->expiresAt, "DateTimeInterface");
$time2 = strtotime("July 16, 2024");
$this->item->expiresAt($time2);
$friend2 = new Friend($this->item);
$this->assertEquals($time2, $friend2->expiresAt, "Unix Timestamp");
}
public function testExpiresAfter()
{
$interval = new DateInterval('P5W');
$expected = (int) $interval->format("%s");
$this->item->expiresAfter($interval);
$friend = new Friend($this->item);
$this->assertEquals($expected, $friend->ttl);
$interval2 = 500;
$this->item->expiresAfter($interval2);
$friend2 = new Friend($this->item);
$this->assertEquals($interval2, $friend2->ttl);
}
public function testSaveWithExpiresAt()
{
$this->setUp();
$expires = new DateTime("6 weeks");
$this->item->expiresAt($expires);
$this->item->set('barbazfoo');
$result = $this->item->save();
$this->assertTrue($result);
$this->assertTrue($this->item->isHit());
$this->assertEquals('barbazfoo', $this->item->get());
}
public function testSaveWithExpiresAfter()
{
$this->setUp();
$interval = new DateInterval('P2D');
$expected = $interval->format("%s");
$this->item->expiresAfter($interval);
$friend = new Friend($this->item);
$this->assertEquals($expected, $friend->ttl);
$expected = [
'foo' => [
'bar' => []
],
'baz' => (object) []
];
$this->item->set($expected);
$result = $this->item->save();
$this->assertTrue($result);
$this->assertTrue($this->item->isHit());
$this->assertEquals($expected, $this->item->get());
}
2016-09-06 17:03:43 -04:00
}