### Question:
DatabaseDelegate extends AbstractDelegate implements ITransformer, SharedObjectAssembler<DatabaseMeta>,
    java.io.Serializable { public RepositoryElementInterface dataNodeToElement( final DataNode rootNode ) throws KettleException { DatabaseMeta databaseMeta = new DatabaseMeta(); dataNodeToElement( rootNode, databaseMeta ); return databaseMeta; } DatabaseDelegate( final PurRepository repo ); DataNode elementToDataNode( final RepositoryElementInterface element ); RepositoryElementInterface dataNodeToElement( final DataNode rootNode ); void dataNodeToElement( final DataNode rootNode, final RepositoryElementInterface element ); Repository getRepository(); DatabaseMeta assemble( RepositoryFile file, NodeRepositoryFileData data, VersionSummary version );  }### Answer:
@Test public void testExtraOptionUnescapeWithInvalidCharInDatabaseType() throws KettleException { DataNode mockDataNode = mock( DataNode.class ); DataNode unescapedExtraOptions = new DataNode( "options" ); unescapedExtraOptions.setProperty( "EXTRA_OPTION_AS%2F400.optionExtraOption", true ); when( mockDataNode.getNode( "attributes" ) ).thenReturn( unescapedExtraOptions ); DatabaseMeta unescapedDbMeta = mock( DatabaseMeta.class ); when( unescapedDbMeta.getAttributes() ).thenReturn( new Properties() ); dbDelegate.dataNodeToElement( mockDataNode, unescapedDbMeta ); assertEquals( "true", unescapedDbMeta.getAttributes().getProperty( "EXTRA_OPTION_AS/400.optionExtraOption" ) ); }