package com.muleinaction;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import java.util.Map;
import org.external.ExternalItem;
import org.junit.Test;
import org.mule.api.MuleMessage;
import org.mule.module.client.MuleClient;
import org.mule.tck.junit4.FunctionalTestCase;
import com.prancingdonkey.model.json.Provider;
public class JsonTestCase extends FunctionalTestCase
{
@Override
protected String getConfigResources()
{
return "json.xml";
}
@Test
public void testRegularJson() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
Provider payload = new Provider();
payload.setName("test name");
MuleMessage result = muleClient.send("vm://json-marshalling.in", payload, null);
assertThat(result, is(notNullValue()));
assertThat(result.getPayload(), is(notNullValue()));
assertThat(result.getPayload(), is(instanceOf(Provider.class)));
}
@Test
public void testMixinJson() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
ExternalItem payload = new ExternalItem();
payload.setItemNumber("1234");
payload.setUnwantedValue("notWanted");
MuleMessage result = muleClient.send("vm://json-marshalling-mixin.in", payload, null);
assertThat(result, is(notNullValue()));
assertThat(result.getPayload(), is(notNullValue()));
assertThat(result.getPayload(), is(instanceOf(ExternalItem.class)));
assertThat(((ExternalItem) result.getPayload()).getUnwantedValue(), is(nullValue()));
}
@Test
@SuppressWarnings({ "rawtypes" })
public void testJsonQuery() throws Exception
{
MuleClient muleClient = new MuleClient(muleContext);
String payload = "{ \"requestType\":\"availability\", \"products\":[{ \"productId\":\"100345\", \"requestedUnits\":\"10\" } ] }";
MuleMessage result = muleClient.send("vm://json-query.in", payload, null);
assertThat(result, is(notNullValue()));
assertThat(result.getPayload(), is(notNullValue()));
assertThat(result.getPayload(), is(instanceOf(Map.class)));
Map mapResult = (Map) result.getPayload();
assertThat(mapResult.get("requestType"), is(instanceOf(String.class)));
assertThat((String) mapResult.get("requestType"), is("availability"));
}
}