package eu.europeana.cloud.service.dls.listeners; import com.google.gson.Gson; import eu.europeana.cloud.common.model.CompoundDataSetId; import eu.europeana.cloud.service.dls.solr.SolrDAO; import eu.europeana.cloud.service.mcs.messages.RemoveAssignmentsFromDataSetMessage; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(value = { "classpath:/testContext.xml" }) public class AllDataSetAssignmentsRemovedMessageProcessorTest { @Autowired AllDataSetAssignmentsRemovedMessageProcessor listener; @Autowired SolrDAO solrDAO; private final Gson gson = new Gson(); @Before public void cleanUp() { Mockito.reset(solrDAO); } @Test public void shouldCallRemoveAssignmentFromDataSet() throws Exception { // given String dataSetId = "dataset123"; String providerId = "provider123123"; CompoundDataSetId compoundDataSetId = new CompoundDataSetId(providerId, dataSetId); RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verify(solrDAO, times(1)) .removeAssignmentFromDataSet(compoundDataSetId); verifyNoMoreInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedMessageWithNullBody() throws Exception { // given RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( null); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedEmptyMessage() throws Exception { // given RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( ""); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedNullCompundDataSetId() throws Exception { // given CompoundDataSetId compoundDataSetId = null; RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedNullProviderId() throws Exception { // given String dataSetId = "dataset123"; String providerId = null; CompoundDataSetId compoundDataSetId = new CompoundDataSetId(providerId, dataSetId); RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedEmptyProviderId() throws Exception { // given String dataSetId = "dataset123"; String providerId = ""; CompoundDataSetId compoundDataSetId = new CompoundDataSetId(providerId, dataSetId); RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedNullDataSetId() throws Exception { // given String dataSetId = null; String providerId = "provider123123"; CompoundDataSetId compoundDataSetId = new CompoundDataSetId(providerId, dataSetId); RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } @Test public void shouldNotCallDAOWhenReceivedEmptyDataSetId() throws Exception { // given String dataSetId = ""; String providerId = "provider123123"; CompoundDataSetId compoundDataSetId = new CompoundDataSetId(providerId, dataSetId); RemoveAssignmentsFromDataSetMessage message = new RemoveAssignmentsFromDataSetMessage( prepareAllDataSetAssignmentsRemovedMessage(compoundDataSetId)); // when listener.processMessage(message); // then verifyZeroInteractions(solrDAO); } private String prepareAllDataSetAssignmentsRemovedMessage( CompoundDataSetId compoundDataSetId) { return gson.toJson(compoundDataSetId); } }