package com.mozu.api.events;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import javax.servlet.http.HttpServletResponse;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.mozu.api.ApiContext;
import com.mozu.api.ApiException;
import com.mozu.api.contracts.event.Event;
import com.mozu.api.events.handlers.CartEventHandler;
import com.mozu.api.events.model.EventHandlerStatus;
public class EventManagerTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
EventManager.getInstance().clearEventHandlers();
}
@Test
public void RegisterTest() {
EventManager eventManager = EventManager.getInstance();
eventManager.registerHandler(new CartEventHandlerImpl());
Object handler = eventManager.getRegisteredClassHandlers("Cart");
assertEquals(CartEventHandlerImpl.class.getName(), handler.getClass().getName());
}
@Test
public void RegisterDuplicateTest() {
EventManager eventManager = EventManager.getInstance();
eventManager.registerHandler(new CartEventHandlerImpl());
try {
eventManager.registerHandler(new CartEventHandlerImpl());
fail("Duplicate exception expected");
} catch (ApiException e) {
assertTrue( e.getMessage().contains("Handler"));
}
}
@Test
public void RegisterInvalidClassTest() {
EventManager eventManager = EventManager.getInstance();
try {
eventManager.registerHandler(new InvalidCartHandlerImpl());
fail("Invalid class exception expected");
} catch (ApiException e) {
assertTrue( e.getMessage().contains("Class is invalid"));
}
}
@Test
public void RegisterNullClassTest() {
EventManager eventManager = EventManager.getInstance();
try {
eventManager.registerHandler(null);
fail("IllegalArgument exception expected");
} catch (IllegalArgumentException e) {
}
Object handler = eventManager.getRegisteredClassHandlers("Cart");
assertNull(handler);
}
public class CartEventHandlerImpl implements CartEventHandler {
@Override
public EventHandlerStatus created(ApiContext apiContext, Event eventPayLoad) {
return new EventHandlerStatus(null, HttpServletResponse.SC_OK);
}
@Override
public EventHandlerStatus updated(ApiContext apiContext, Event eventPayLoad) {
return new EventHandlerStatus(null, HttpServletResponse.SC_OK);
}
@Override
public EventHandlerStatus deleted(ApiContext apiContext, Event eventPayLoad) {
return new EventHandlerStatus(null, HttpServletResponse.SC_OK);
}
}
public class InvalidCartHandlerImpl {
}
}