/** * @dataProvider configurationDataProvider */ public function testAssemble($configuration, $expected) { $factory = $this->getMock('Oro\\Component\\ConfigExpression\\ExpressionFactoryInterface'); $factory->expects($this->any())->method('create')->will($this->returnCallback(function ($type, $options) { $expr = new ExpressionStub($type); return $expr->initialize($options); })); $configurationPass = $this->getMockBuilder('Oro\\Component\\ConfigExpression\\ConfigurationPass\\ConfigurationPassInterface')->getMockForAbstractClass(); $configurationPass->expects($this->any())->method('passConfiguration')->will($this->returnCallback(function ($options) { return ['passed' => $options]; })); $assembler = new ExpressionAssembler($factory); $assembler->addConfigurationPass($configurationPass); $actual = $assembler->assemble($configuration); $this->assertEquals($expected, $actual); }