setUpInterceptionConfig(
[\Magento\Framework\Interception\Fixture\InterceptedInterface::class =>
[
'plugins' => [
'first' => [
'instance' =>
\Magento\Framework\Interception\Fixture\Intercepted\InterfacePlugin::class,
'sortOrder' => 10,
],
],
], \Magento\Framework\Interception\Fixture\Intercepted::class =>
[
'plugins' => [
'second' => [
'instance' => \Magento\Framework\Interception\Fixture\Intercepted\Plugin::class,
'sortOrder' => 20,
],
],
],
]
);
parent::setUp();
}
public function testMethodCanBePluginized()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('1: test', $subject->D('test'));
}
public function testPluginCanCallOnlyNextMethodOnNext()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals(
'test',
$subject->G('test')
);
}
public function testBeforeAndAfterPluginsAreExecuted()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals(
'1: prefix_test' . '',
$subject->A('prefix_')->F('test')
);
}
public function testPluginCallsOtherMethodsOnSubject()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals(
'1: prefix_test' .
'',
$subject->A('prefix_')->K('test')
);
}
public function testInterfacePluginsAreInherited()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('test', $subject->C('test'));
}
public function testInternalMethodCallsAreIntercepted()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('121', $subject->B('1', '2'));
}
public function testChainedMethodsAreIntercepted()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('1: prefix_test', $subject->A('prefix_')->D('test'));
}
public function testFinalMethodWorks()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('1: prefix_test', $subject->A('prefix_')->D('test'));
$this->assertEquals('prefix_final', $subject->E('final'));
$this->assertEquals('2: prefix_test', $subject->D('test'));
}
public function testObjectKeepsStateBetweenInvocations()
{
$subject = $this->_objectManager->create(\Magento\Framework\Interception\Fixture\Intercepted::class);
$this->assertEquals('1: test', $subject->D('test'));
$this->assertEquals('2: test', $subject->D('test'));
}
}