/* vim: set ts=2 et sw=2 cindent fo=qroca: */ package com.globant.katari.hibernate.coreuser; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.impl.DefaultExchange; import org.apache.camel.impl.DefaultMessage; import org.junit.Test; import static org.junit.Assert.assertThat; import static org.hamcrest.CoreMatchers.*; public class DeleteMessageAggregatorTest { @Test public void testAggregate_nullOld() { CamelContext camelContext = new DefaultCamelContext(); DeleteMessage message = new DeleteMessage(1); Exchange newExchange = new DefaultExchange(camelContext); DefaultMessage body = new DefaultMessage(); body.setBody(message); newExchange.setIn(body); DeleteMessageAggregator aggregator = new DeleteMessageAggregator(); Exchange result = aggregator.aggregate(null, newExchange); DeleteMessage resultMessage = result.getIn().getBody(DeleteMessage.class); assertThat(resultMessage.canDelete(), is(true)); assertThat(resultMessage.getUserId(), is(1l)); } @Test public void testAggregate_nonNullOld() { CamelContext camelContext = new DefaultCamelContext(); DeleteMessage oldMessage = new DeleteMessage(1).reject("No, you can't."); Exchange oldExchange = new DefaultExchange(camelContext); DefaultMessage oldBody = new DefaultMessage(); oldBody.setBody(oldMessage); oldExchange.setIn(oldBody); DeleteMessage newMessage = new DeleteMessage(1); Exchange newExchange = new DefaultExchange(camelContext); DefaultMessage newBody = new DefaultMessage(); newBody.setBody(newMessage); newExchange.setIn(newBody); DeleteMessageAggregator aggregator = new DeleteMessageAggregator(); Exchange result = aggregator.aggregate(oldExchange, newExchange); DeleteMessage resultMessage = result.getIn().getBody(DeleteMessage.class); assertThat(resultMessage.canDelete(), is(false)); assertThat(resultMessage.getUserId(), is(1l)); assertThat(resultMessage.getMessage("", ""), is("No, you can't.")); } @Test public void testGoAhead() { DeleteMessage message = new DeleteMessage(1); assertThat(message.goAhead().canDelete(), is(true)); } @Test public void testReject() { DeleteMessage message = new DeleteMessage(1); message = message.reject("No, you can't"); assertThat(message.canDelete(), is(false)); assertThat(message.getMessage("<", ">"), is("<No, you can't>")); } @Test public void testAggregate_reject_goAhead() { DeleteMessage message = new DeleteMessage(1); DeleteMessage aggregated = message.reject("No, you can't"); DeleteMessage message1 = message.goAhead(); aggregated = aggregated.aggregate(message1); assertThat(aggregated.canDelete(), is(false)); assertThat(aggregated.getMessage("<", ">"), is("<No, you can't>")); } @Test public void testAggregate_goAhead_reject() { DeleteMessage message = new DeleteMessage(1); DeleteMessage aggregated = message.goAhead(); DeleteMessage message1 = message.reject("No, you can't"); aggregated = aggregated.aggregate(message1); assertThat(aggregated.canDelete(), is(false)); assertThat(aggregated.getMessage("<", ">"), is("<No, you can't>")); } @Test public void testAggregate_multipleRejects() { DeleteMessage message = new DeleteMessage(1); DeleteMessage aggregated = message.reject("Nope"); DeleteMessage message1 = message.reject("No, you can't"); DeleteMessage message2 = message.reject("No."); aggregated = aggregated.aggregate(message1); aggregated = aggregated.aggregate(message2); assertThat(aggregated.canDelete(), is(false)); assertThat(aggregated.getMessage("<", ">"), is("<Nope><No, you can't><No.>")); } }