Skip to content

Commit

Permalink
add tests for decorator (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
RikudouSage committed Nov 29, 2020
1 parent ecd2ab2 commit cdc123b
Show file tree
Hide file tree
Showing 2 changed files with 199 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/Helper/DynamoDbCacheAdapterDecorator.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace Rikudou\DynamoDbCacheBundle\Helper;

use Psr\Cache\CacheItemInterface;
use Psr\Cache\InvalidArgumentException as PsrInvalidArgumentException;
use Rikudou\DynamoDbCache\Exception\InvalidArgumentException;
use Rikudou\DynamoDbCacheBundle\Cache\DynamoDbCacheAdapter;
use Symfony\Component\Cache\CacheItem;
Expand Down Expand Up @@ -119,4 +120,33 @@ public function commit()
{
return $this->originalAdapter->commit();
}

/**
* @param string $key
* @param callable $callback
* @param float|null $beta
* @param array|null $metadata
* @codeCoverageIgnore
*
* @throws PsrInvalidArgumentException
*
* @return mixed
*/
public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
{
return $this->originalAdapter->get($key, $callback, $beta, $metadata);
}

/**
* @param string $key
* @codeCoverageIgnore
*
* @throws PsrInvalidArgumentException
*
* @return bool
*/
public function delete(string $key): bool
{
return $this->originalAdapter->delete($key);
}
}
169 changes: 169 additions & 0 deletions tests/Helper/DynamoDbCacheAdapterDecoratorTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
<?php

namespace Rikudou\Tests\DynamoDbCacheBundle\Helper;

use Psr\Cache\InvalidArgumentException;
use Rikudou\Clock\Clock;
use Rikudou\DynamoDbCache\DynamoDbCache;
use Rikudou\DynamoDbCache\Encoder\SerializeItemEncoder;
use Rikudou\DynamoDbCacheBundle\Cache\DynamoDbCacheAdapter;
use Rikudou\DynamoDbCacheBundle\Converter\CacheItemConverter;
use Rikudou\DynamoDbCacheBundle\Helper\DynamoDbCacheAdapterDecorator;
use Rikudou\Tests\DynamoDbCacheBundle\AbstractDynamoDbTest;
use Symfony\Component\Cache\Adapter\AdapterInterface;
use Symfony\Component\Cache\CacheItem;
use Symfony\Contracts\Cache\CacheInterface;
use Symfony\Contracts\Cache\CallbackInterface;

class DynamoDbCacheAdapterDecoratorTest extends AbstractDynamoDbTest
{
/**
* @var DynamoDbCacheAdapter
*/
private $originalInstance;

/**
* @var AdapterInterface|CacheInterface
*/
private $instance;

protected function setUp(): void
{
$this->originalInstance = new DynamoDbCacheAdapter(
new DynamoDbCache('test', $this->getFakeDynamoDbClient($this->itemPoolDefault)),
new CacheItemConverter(
new Clock(),
new SerializeItemEncoder()
)
);
$this->instance = new class ($this->originalInstance) implements AdapterInterface, CacheInterface {
use DynamoDbCacheAdapterDecorator;
};
}

public function testGetItem()
{
$result1 = $this->originalInstance->getItem('test123');
$result2 = $this->instance->getItem('test123');
self::assertEquals($result1, $result2);
$result1 = $this->originalInstance->getItem('test456');
$result2 = $this->instance->getItem('test456');
self::assertEquals($result1, $result2);
$result1 = $this->originalInstance->getItem('test789');
$result2 = $this->instance->getItem('test789');
self::assertEquals($result1, $result2);
$result1 = $this->originalInstance->getItem('test852');
$result2 = $this->instance->getItem('test852');
self::assertEquals($result1, $result2);
}

public function testGetItems()
{
$result1 = $this->originalInstance->getItems([
'test123',
'test456',
'test852',
]);
$result2 = $this->instance->getItems([
'test123',
'test456',
'test852',
]);

self::assertSameSize($result1, $result2);
self::assertEquals($result1, $result2);
}

public function testClear()
{
self::assertEquals($this->originalInstance->clear(), $this->instance->clear());
}

public function testHasItem()
{
self::assertEquals(
$this->originalInstance->hasItem('test123'),
$this->instance->hasItem('test123')
);
self::assertEquals(
$this->originalInstance->hasItem('test456'),
$this->instance->hasItem('test456')
);
self::assertEquals(
$this->originalInstance->hasItem('test789'),
$this->instance->hasItem('test789')
);
self::assertEquals(
$this->originalInstance->hasItem('test852'),
$this->instance->hasItem('test852')
);
}

public function testDeleteItem()
{
self::assertEquals(
$this->originalInstance->deleteItem('test123'),
$this->instance->deleteItem('test123')
);
self::assertEquals(
$this->originalInstance->deleteItem('test456'),
$this->instance->deleteItem('test456')
);
self::assertEquals(
$this->originalInstance->deleteItem('test852'),
$this->instance->deleteItem('test852')
);
}

public function testDeleteItems()
{
self::assertEquals(
$this->originalInstance->deleteItems([
'test123',
'test456',
'test789',
'test852',
]),
$this->instance->deleteItems([
'test123',
'test456',
'test789',
'test852',
])
);
self::assertEquals(
$this->originalInstance->deleteItems([
'test456',
]),
$this->instance->deleteItems([
'test456',
])
);
self::assertEquals(
$this->originalInstance->deleteItems([
'test852',
]),
$this->instance->deleteItems([
'test852',
])
);
}

public function testSave()
{
self::assertCount(0, $this->itemPoolSaved);
$item = $this->instance->getItem('test123');
self::assertTrue($this->instance->save($item));
self::assertCount(1, $this->itemPoolSaved);
}

public function testSaveDeferred()
{
self::assertCount(0, $this->itemPoolSaved);
$item = $this->instance->getItem('test123');
self::assertTrue($this->instance->saveDeferred($item));
self::assertCount(0, $this->itemPoolSaved);
$this->instance->commit();
self::assertCount(1, $this->itemPoolSaved);
}
}

0 comments on commit cdc123b

Please sign in to comment.