3 namespace Drupal\Tests\Component\Bridge;
5 use Drupal\Component\Bridge\ZfExtensionManagerSfContainer;
6 use PHPUnit\Framework\TestCase;
7 use Symfony\Component\DependencyInjection\ContainerBuilder;
8 use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
9 use Zend\Feed\Reader\Extension\Atom\Entry;
10 use Zend\Feed\Reader\StandaloneExtensionManager;
13 * @coversDefaultClass \Drupal\Component\Bridge\ZfExtensionManagerSfContainer
16 class ZfExtensionManagerSfContainerTest extends TestCase {
19 * @covers ::setContainer
20 * @covers ::setStandalone
23 public function testGet() {
24 $service = new \stdClass();
25 $service->value = 'myvalue';
26 $container = new ContainerBuilder();
27 $container->set('foo', $service);
28 $bridge = new ZfExtensionManagerSfContainer();
29 $bridge->setContainer($container);
30 $this->assertEquals($service, $bridge->get('foo'));
31 $bridge->setStandalone(StandaloneExtensionManager::class);
32 $this->assertInstanceOf(Entry::class, $bridge->get('Atom\Entry'));
33 // Ensure that the container is checked first.
34 $container->set('atomentry', $service);
35 $this->assertEquals($service, $bridge->get('Atom\Entry'));
39 * @covers ::setContainer
40 * @covers ::setStandalone
43 public function testHas() {
44 $service = new \stdClass();
45 $service->value = 'myvalue';
46 $container = new ContainerBuilder();
47 $container->set('foo', $service);
48 $bridge = new ZfExtensionManagerSfContainer();
49 $bridge->setContainer($container);
50 $this->assertTrue($bridge->has('foo'));
51 $this->assertFalse($bridge->has('bar'));
52 $this->assertFalse($bridge->has('Atom\Entry'));
53 $bridge->setStandalone(StandaloneExtensionManager::class);
54 $this->assertTrue($bridge->has('Atom\Entry'));
58 * @covers ::setStandalone
60 public function testSetStandaloneException() {
61 if (method_exists($this, 'expectException')) {
62 $this->expectException(\RuntimeException::class);
63 $this->expectExceptionMessage('Drupal\Tests\Component\Bridge\ZfExtensionManagerSfContainerTest must implement Zend\Feed\Reader\ExtensionManagerInterface or Zend\Feed\Writer\ExtensionManagerInterface');
66 $this->setExpectedException(\RuntimeException::class, 'Drupal\Tests\Component\Bridge\ZfExtensionManagerSfContainerTest must implement Zend\Feed\Reader\ExtensionManagerInterface or Zend\Feed\Writer\ExtensionManagerInterface');
68 $bridge = new ZfExtensionManagerSfContainer();
69 $bridge->setStandalone(static::class);
75 public function testGetContainerException() {
76 if (method_exists($this, 'expectException')) {
77 $this->expectException(ServiceNotFoundException::class);
78 $this->expectExceptionMessage('You have requested a non-existent service "test.foo".');
81 $this->setExpectedException(ServiceNotFoundException::class, 'You have requested a non-existent service "test.foo".');
83 $container = new ContainerBuilder();
84 $bridge = new ZfExtensionManagerSfContainer('test.');
85 $bridge->setContainer($container);
86 $bridge->setStandalone(StandaloneExtensionManager::class);
91 * @covers ::__construct
95 public function testPrefix() {
96 $service = new \stdClass();
97 $service->value = 'myvalue';
98 $container = new ContainerBuilder();
99 $container->set('foo.bar', $service);
100 $bridge = new ZfExtensionManagerSfContainer('foo.');
101 $bridge->setContainer($container);
102 $this->assertTrue($bridge->has('bar'));
103 $this->assertFalse($bridge->has('baz'));
104 $this->assertEquals($service, $bridge->get('bar'));
108 * @covers ::canonicalizeName
109 * @dataProvider canonicalizeNameProvider
111 public function testCanonicalizeName($name, $canonical_name) {
112 $service = new \stdClass();
113 $service->value = 'myvalue';
114 $container = new ContainerBuilder();
115 $container->set($canonical_name, $service);
116 $bridge = new ZfExtensionManagerSfContainer();
117 $bridge->setContainer($container);
118 $this->assertTrue($bridge->has($name));
119 $this->assertEquals($service, $bridge->get($name));
123 * Data provider for testReverseProxyEnabled.
126 * array('-' => '', '_' => '', ' ' => '', '\\' => '', '/' => '')
128 public function canonicalizeNameProvider() {
154 // There is also a strtolower in canonicalizeName.