addCompilerPass(new SmsTransportPass()); $container ->register('foo') ->setPublic(true) ->setAbstract(true) ->addTag('mautic.sms_transport', ['alias'=>'fakeAliasDefault', 'integrationAlias' => 'fakeIntegrationDefault']); $container ->register('chocolate') ->setPublic(true) ->setAbstract(true); $container ->register('bar') ->setPublic(true) ->setAbstract(true) ->addTag('mautic.sms_transport'); $transport = $this->getMockBuilder(TransportChain::class) ->disableOriginalConstructor() ->onlyMethods(['addTransport']) ->getMock(); $container ->register('mautic.sms.transport_chain') ->setClass($transport::class) ->setArguments(['foo', $this->createMock(IntegrationHelper::class)]) ->setShared(false) ->setSynthetic(true) ->setAbstract(true); $pass = new SmsTransportPass(); $pass->process($container); $this->assertEquals(2, count($container->findTaggedServiceIds('mautic.sms_transport'))); $methodCalls = $container->getDefinition('mautic.sms.transport_chain')->getMethodCalls(); $this->assertCount(count($methodCalls), $container->findTaggedServiceIds('mautic.sms_transport')); // Translation string $this->assertEquals('fakeAliasDefault', $methodCalls[0][1][2]); // Integration name/alias $this->assertEquals('fakeIntegrationDefault', $methodCalls[0][1][3]); // Translation string is set as service ID by default $this->assertEquals('bar', $methodCalls[1][1][2]); // Integration name/alias is set to service ID by default $this->assertEquals('bar', $methodCalls[1][1][3]); } }