Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CacheBundle\Tests\Cache; | |
use Mautic\CacheBundle\Cache\Adapter\FilesystemTagAwareAdapter; | |
use Mautic\CacheBundle\Cache\CacheProvider; | |
use Mautic\CoreBundle\Helper\CoreParametersHelper; | |
use PHPUnit\Framework\MockObject\MockObject; | |
use PHPUnit\Framework\TestCase; | |
use Symfony\Component\Cache\Exception\InvalidArgumentException; | |
use Symfony\Component\Cache\Psr16Cache; | |
use Symfony\Component\DependencyInjection\ContainerInterface; | |
class CacheProviderTest extends TestCase | |
{ | |
private CacheProvider $cacheProvider; | |
/** | |
* @var MockObject|FilesystemTagAwareAdapter | |
*/ | |
private MockObject $adapter; | |
/** | |
* @var MockObject|CoreParametersHelper | |
*/ | |
private MockObject $coreParametersHelper; | |
/** | |
* @var MockObject|ContainerInterface | |
*/ | |
private MockObject $container; | |
public function setUp(): void | |
{ | |
parent::setUp(); | |
$this->adapter = $this->createMock(FilesystemTagAwareAdapter::class); | |
$this->coreParametersHelper = $this->createMock(CoreParametersHelper::class); | |
$this->container = $this->createMock(ContainerInterface::class); | |
$this->cacheProvider = new CacheProvider($this->coreParametersHelper, $this->container); | |
} | |
public function testRequestedCacheAdaptorIsReturned(): void | |
{ | |
$this->coreParametersHelper->expects($this->once()) | |
->method('get') | |
->with('cache_adapter') | |
->willReturn('foo.bar'); | |
$this->container->expects($this->once()) | |
->method('has') | |
->with('foo.bar') | |
->willReturn(true); | |
$this->container->expects($this->once()) | |
->method('get') | |
->with('foo.bar') | |
->willReturn($this->adapter); | |
$this->assertEquals($this->cacheProvider->getCacheAdapter(), $this->adapter); | |
} | |
public function testSimplePsrCacheIsReturned(): void | |
{ | |
$this->coreParametersHelper->expects($this->once()) | |
->method('get') | |
->with('cache_adapter') | |
->willReturn('foo.bar'); | |
$this->container->expects($this->once()) | |
->method('has') | |
->with('foo.bar') | |
->willReturn(true); | |
$this->container->expects($this->once()) | |
->method('get') | |
->with('foo.bar') | |
->willReturn($this->adapter); | |
$simpleCache = $this->cacheProvider->getSimpleCache(); | |
$this->assertInstanceOf(Psr16Cache::class, $simpleCache); | |
} | |
public function testExceptionThrownIfAdaptorNotFoundInContainer(): void | |
{ | |
$this->expectException(InvalidArgumentException::class); | |
$this->coreParametersHelper->expects($this->once()) | |
->method('get') | |
->with('cache_adapter') | |
->willReturn('bar.foo'); | |
$this->container->expects($this->once()) | |
->method('has') | |
->with('bar.foo') | |
->willReturn(false); | |
$this->container->expects($this->never()) | |
->method('get'); | |
$this->cacheProvider->getCacheAdapter(); | |
} | |
public function testExceptionThrownIfAdaptorEmpty(): void | |
{ | |
$this->expectException(InvalidArgumentException::class); | |
$this->coreParametersHelper->expects($this->once()) | |
->method('get') | |
->with('cache_adapter') | |
->willReturn(null); | |
$this->container->expects($this->never()) | |
->method('has'); | |
$this->container->expects($this->never()) | |
->method('get'); | |
$this->cacheProvider->getCacheAdapter(); | |
} | |
public function testExceptionThrownIfAdaptorNotInstanceOfTagAwareAdapterInterface(): void | |
{ | |
$this->expectException(InvalidArgumentException::class); | |
$this->coreParametersHelper->expects($this->once()) | |
->method('get') | |
->with('cache_adapter') | |
->willReturn('foo.bar'); | |
$this->container->expects($this->once()) | |
->method('has') | |
->with('foo.bar') | |
->willReturn(true); | |
$this->container->expects($this->once()) | |
->method('get') | |
->with('foo.bar') | |
->willReturn(new \stdClass()); | |
$this->cacheProvider->getCacheAdapter(); | |
} | |
} | |