/** * allow to change data before insert for founded key using closure * * @param mixed $first * @param mixed $second * * @dataProvider baseDataProvider * @requires baseDataProvider */ public function testDataPreparationOnEnter($first, $second) { $object = new Object(); $object->putPreparationCallback('#data_[\\w]+#', function ($key, $value) { if ($key === 'data_second') { return 'second'; } $value .= '_modified'; return $value; }); $this->assertTrue($object->returnPreparationCallback()['#data_[\\w]+#'] instanceof \Closure); $object->stopInputPreparation(); $object->setDataFirst($first); $this->assertEquals($first, $object->getDataFirst()); $object->startInputPreparation(); $object->setDataFirst($first); $object->setDataSecond($second); $this->assertEquals($first . '_modified', $object->getDataFirst()); $this->assertEquals('second', $object->toArray('data_second')); $object->removePreparationCallback('#data_[\\w]+#'); $this->assertEmpty($object->returnPreparationCallback('#data_[\\w]+#')); }