package org.ow2.choreos.ee.nodes.cm;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import java.util.List;
import org.junit.Test;
import org.ow2.choreos.ee.nodes.cm.UpdateHandler;
import org.ow2.choreos.ee.nodes.cm.UpdateHandlers;
public class UpdateHandlersTest {
@Test
public void shouldRetrieveAddedHandlers() {
UpdateHandler h1 = mock(UpdateHandler.class);
UpdateHandler h2 = mock(UpdateHandler.class);
UpdateHandlers handlers = new UpdateHandlers();
handlers.addHandler(h1);
handlers.addHandler(h2);
handlers.fetchHandlers();
List<UpdateHandler> retrievedHandlers = handlers.getHandlersForProcessing();
assertEquals(2, retrievedHandlers.size());
assertTrue(retrievedHandlers.get(0) == h1);
assertTrue(retrievedHandlers.get(1) == h2);
}
@Test
public void handlersShouldBeEmptyAfterRetrieving() {
UpdateHandler h1 = mock(UpdateHandler.class);
UpdateHandler h2 = mock(UpdateHandler.class);
UpdateHandlers handlers = new UpdateHandlers();
handlers.addHandler(h1);
handlers.addHandler(h2);
handlers.fetchHandlers();
handlers.getHandlersForProcessing();
handlers.fetchHandlers();
List<UpdateHandler> retrievedHandlers = handlers.getHandlersForProcessing();
assertTrue(retrievedHandlers.isEmpty());
}
@Test
public void shouldNotRetrieveWithoutFetch() {
UpdateHandler h1 = mock(UpdateHandler.class);
UpdateHandler h2 = mock(UpdateHandler.class);
UpdateHandlers handlers = new UpdateHandlers();
handlers.addHandler(h1);
handlers.addHandler(h2);
List<UpdateHandler> retrievedHandlers = handlers.getHandlersForProcessing();
assertTrue(retrievedHandlers.isEmpty());
}
@Test
public void shouldNotRetrieveHandlersAddedAfterTheFetch() {
UpdateHandler h1 = mock(UpdateHandler.class);
UpdateHandler h2 = mock(UpdateHandler.class);
UpdateHandler h3 = mock(UpdateHandler.class);
UpdateHandlers handlers = new UpdateHandlers();
handlers.addHandler(h1);
handlers.addHandler(h2);
handlers.fetchHandlers();
handlers.addHandler(h3);
List<UpdateHandler> retrievedHandlers = handlers.getHandlersForProcessing();
assertEquals(2, retrievedHandlers.size());
assertTrue(retrievedHandlers.get(0) == h1);
assertTrue(retrievedHandlers.get(1) == h2);
}
}