/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.standalone.event;
import org.activiti.engine.delegate.event.ActivitiEvent;
import org.activiti.engine.delegate.event.ActivitiEventType;
import org.activiti.engine.delegate.event.impl.ActivitiEventImpl;
import org.activiti.engine.impl.test.ResourceActivitiTestCase;
import org.activiti.engine.test.api.event.TestActivitiEventListener;
/**
* Test to verify event-listeners, which are configured in the cfg.xml, are notified.
*
* @author Frederik Heremans
*/
public class TypedEventListenersConfigurationTest extends ResourceActivitiTestCase {
public TypedEventListenersConfigurationTest() {
super("org/activiti/standalone/event/activiti-typed-eventlistener.cfg.xml");
}
public void testEventListenerConfiguration() {
// Fetch the listener to check received events
TestActivitiEventListener listener = (TestActivitiEventListener) processEngineConfiguration.getBeans().get("eventListener");
assertNotNull(listener);
// Clear any events received (eg. engine initialisation)
listener.clearEventsReceived();
// Dispath a custom event
ActivitiEvent event = new ActivitiEventImpl(ActivitiEventType.CUSTOM);
processEngineConfiguration.getEventDispatcher().dispatchEvent(event);
assertEquals(1, listener.getEventsReceived().size());
assertEquals(event, listener.getEventsReceived().get(0));
listener.clearEventsReceived();
// Dispatch another event the listener is registered for
event = new ActivitiEventImpl(ActivitiEventType.ENTITY_DELETED);
processEngineConfiguration.getEventDispatcher().dispatchEvent(event);
event = new ActivitiEventImpl(ActivitiEventType.ENTITY_UPDATED);
processEngineConfiguration.getEventDispatcher().dispatchEvent(event);
assertEquals(2, listener.getEventsReceived().size());
assertEquals(ActivitiEventType.ENTITY_DELETED, listener.getEventsReceived().get(0).getType());
assertEquals(ActivitiEventType.ENTITY_UPDATED, listener.getEventsReceived().get(1).getType());
listener.clearEventsReceived();
// Dispatch an event that is NOT part of the types configured
event = new ActivitiEventImpl(ActivitiEventType.ENTITY_CREATED);
processEngineConfiguration.getEventDispatcher().dispatchEvent(event);
assertTrue(listener.getEventsReceived().isEmpty());
}
}