/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.mule.runtime.api.metadata.DataType;
import org.mule.runtime.core.api.MuleContext;
import org.mule.runtime.core.api.registry.MuleRegistry;
import org.mule.runtime.core.api.transformer.Transformer;
import org.mule.runtime.core.api.transformer.TransformerException;
import org.mule.runtime.core.internal.transformer.DynamicDataTypeConversionResolver;
import org.mule.runtime.core.transformer.builder.MockConverterBuilder;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.mule.tck.size.SmallTest;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.mockito.Mockito;
@SmallTest
public class DynamicDataTypeConverterResolverTestCase extends AbstractMuleTestCase {
private MuleContext muleContext = mock(MuleContext.class);
private MuleRegistry muleRegistry = mock(MuleRegistry.class);
@Test
public void doesNotFailWhenThereIsNoDataTypeResolution() throws TransformerException {
when(muleContext.getRegistry()).thenReturn(muleRegistry);
when(muleRegistry.lookupTransformer(Mockito.any(DataType.class), Mockito.any(DataType.class))).thenReturn(null);
DynamicDataTypeConversionResolver resolver = new DynamicDataTypeConversionResolver(muleContext);
List<DataType> targetTypes = new ArrayList<>();
targetTypes.add(DataType.STRING);
Transformer resolvedConverter = resolver.resolve(DataType.INPUT_STREAM, targetTypes);
assertEquals(null, resolvedConverter);
}
@Test
public void findsExpectedConverter() throws TransformerException {
Transformer expectedConverter = new MockConverterBuilder().from(DataType.BYTE_ARRAY).to(DataType.STRING).build();
when(muleContext.getRegistry()).thenReturn(muleRegistry);
when(muleRegistry.lookupTransformer(DataType.BYTE_ARRAY, DataType.STRING)).thenReturn(expectedConverter);
DynamicDataTypeConversionResolver resolver = new DynamicDataTypeConversionResolver(muleContext);
List<DataType> targetTypes = new ArrayList<>();
targetTypes.add(DataType.INPUT_STREAM);
targetTypes.add(DataType.STRING);
Transformer resolvedConverter = resolver.resolve(DataType.BYTE_ARRAY, targetTypes);
assertEquals(expectedConverter, resolvedConverter);
}
}