/** * @covers ::save * @covers ::doSave * * @depends testSaveInsert */ public function testSaveRename(ConfigEntityInterface $entity) { $config_object = $this->getMockBuilder('Drupal\\Core\\Config\\Config')->disableOriginalConstructor()->getMock(); $config_object->expects($this->atLeastOnce())->method('isNew')->will($this->returnValue(FALSE)); $config_object->expects($this->exactly(1))->method('setData'); $config_object->expects($this->once())->method('save'); $config_object->expects($this->atLeastOnce())->method('get')->willReturn([]); $this->cacheTagsInvalidator->expects($this->once())->method('invalidateTags')->with(array($this->entityTypeId . '_list')); $this->configFactory->expects($this->once())->method('rename')->willReturn($this->configFactory); $this->configFactory->expects($this->exactly(1))->method('getEditable')->with('the_config_prefix.bar')->will($this->returnValue($config_object)); $this->configFactory->expects($this->exactly(2))->method('loadMultiple')->with(array('the_config_prefix.foo'))->will($this->returnValue(array())); $this->configFactory->expects($this->once())->method('get')->with('the_config_prefix.foo')->will($this->returnValue($config_object)); // Performing a rename does not change the original ID until saving. $this->assertSame('foo', $entity->getOriginalId()); $entity->set('id', 'bar'); $this->assertSame('foo', $entity->getOriginalId()); $this->entityQuery->expects($this->once())->method('condition')->with('uuid', 'bar')->will($this->returnSelf()); $this->entityQuery->expects($this->once())->method('execute')->will($this->returnValue(array($entity->id()))); $return = $this->entityStorage->save($entity); $this->assertSame(SAVED_UPDATED, $return); $this->assertSame('bar', $entity->getOriginalId()); }
/** * {@inheritdoc} */ public function updateFromStorageRecord(ConfigEntityInterface $entity, array $values) { $entity->original = clone $entity; $data = $this->mapFromStorageRecords(array($values)); $updated_entity = current($data); foreach (array_keys($values) as $property) { $value = $updated_entity->get($property); $entity->set($property, $value); } return $entity; }