View source
<?php
namespace Drupal\Tests\radioactivity\Unit;
use Drupal\Tests\UnitTestCase;
use Drupal\Core\Config\ConfigFactory;
use Drupal\Core\Config\ImmutableConfig;
use Drupal\Core\DependencyInjection\ClassResolverInterface;
use Drupal\radioactivity\DefaultIncidentStorage;
use Drupal\radioactivity\RestIncidentStorage;
use Drupal\radioactivity\StorageFactory;
class StorageFactoryTest extends UnitTestCase {
private $config;
private $classResolver;
private $configFactory;
protected function setUp() : void {
parent::setUp();
$this->config = $this
->getMockBuilder(ImmutableConfig::class)
->disableOriginalConstructor()
->setMethods([
'get',
])
->getMock();
$this->configFactory = $this
->getMockBuilder(ConfigFactory::class)
->disableOriginalConstructor()
->setMethods([
'get',
])
->getMock();
$this->configFactory
->expects($this
->any())
->method('get')
->will($this
->returnValue($this->config));
$mockRestStorage = $this
->getMockBuilder(RestIncidentStorage::class)
->getMock();
$mockDefaultStorage = $this
->getMockBuilder(DefaultIncidentStorage::class)
->disableOriginalConstructor()
->getMock();
$this->classResolver = $this
->getMockBuilder(ClassResolverInterface::class)
->setMethods([
'getInstanceFromDefinition',
])
->getMock();
$this->classResolver
->expects($this
->any())
->method('getInstanceFromDefinition')
->will($this
->returnValueMap([
[
'radioactivity.rest_incident_storage',
$mockRestStorage,
],
[
'radioactivity.default_incident_storage',
$mockDefaultStorage,
],
]));
}
public function testGet($storageType, $storageClass) {
$sut = $this
->getMockBuilder(StorageFactory::class)
->setMethods()
->setConstructorArgs([
$this->configFactory,
$this->classResolver,
])
->getMock();
$result = $sut
->get($storageType);
$this
->assertInstanceOf($storageClass, $result);
}
public function providerGet() {
return [
[
'rest_local',
RestIncidentStorage::class,
],
[
'rest_remote',
RestIncidentStorage::class,
],
[
'default',
DefaultIncidentStorage::class,
],
[
'unknown_type',
DefaultIncidentStorage::class,
],
];
}
public function testGetConfiguredStorage($configType, $storageType) {
$sut = $this
->getMockBuilder('Drupal\\radioactivity\\StorageFactory')
->setMethods([
'get',
])
->setConstructorArgs([
$this->configFactory,
$this->classResolver,
])
->getMock();
$sut
->expects($this
->once())
->method('get')
->with($this
->equalTo($storageType));
$this
->setConfig($configType, '');
$sut
->getConfiguredStorage();
}
public function providerGetConfiguredStorage() {
return [
[
'rest_local',
'rest_local',
],
[
'rest_remote',
'rest_remote',
],
[
'default',
'default',
],
[
NULL,
'default',
],
];
}
private function setConfig($storageType, $endpoint) {
$this->config
->expects($this
->any())
->method('get')
->will($this
->returnValueMap([
[
'type',
$storageType,
],
[
'endpoint',
$endpoint,
],
]));
}
}