<?php declare(strict_types=1); namespace ShlinkioTest\Shlink\Common\Cache; use Doctrine\Common\Cache\ApcuCache; use Doctrine\Common\Cache\ArrayCache; use PHPUnit\Framework\TestCase; use Shlinkio\Shlink\Common\Cache\CacheFactory; use Shlinkio\Shlink\Core\Options\AppOptions; use Zend\ServiceManager\ServiceManager; use function putenv; class CacheFactoryTest extends TestCase { /** @var CacheFactory */ private $factory; /** @var ServiceManager */ private $sm; public function setUp(): void { $this->factory = new CacheFactory(); $this->sm = new ServiceManager(['services' => [ AppOptions::class => new AppOptions(), ]]); } public static function tearDownAfterClass(): void { putenv('APP_ENV'); } /** @test */ public function productionReturnsApcAdapter(): void { putenv('APP_ENV=pro'); $instance = ($this->factory)($this->sm, ''); $this->assertInstanceOf(ApcuCache::class, $instance); } /** @test */ public function developmentReturnsArrayAdapter(): void { putenv('APP_ENV=dev'); $instance = ($this->factory)($this->sm, ''); $this->assertInstanceOf(ArrayCache::class, $instance); } }