package org.cad.interruptus.core.esper; import com.espertech.esper.client.EPAdministrator; import com.espertech.esper.client.EPStatement; import java.util.List; import org.cad.interruptus.entity.Statement; import org.junit.Before; import org.junit.Test; import static org.mockito.Mockito.*; import static org.junit.Assert.*; public class StatementConfigurationTest { EPAdministrator epAdministrator; @Before public void setUp() { epAdministrator = mock(EPAdministrator.class); } @Test public void testList() { final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(epAdministrator.getStatementNames()).thenReturn(new String[]{ "sttm1", "sttm2" }); final List<String> result = instance.list(); assertEquals(2, result.size()); assertEquals("sttm1", result.get(0)); assertEquals("sttm2", result.get(1)); } @Test public void testSaveNewStatement() { final EPStatement existing = null; final String name = "sttm1"; final String query = "sttm..."; final EPStatement sttm = mock(EPStatement.class); final Statement statement = new Statement(name, query, false); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); statement.setStarted(false); when(sttm.isStopped()).thenReturn(false); when(epAdministrator.getStatement(eq(name))).thenReturn(existing); when(epAdministrator.createEPL(eq(query), eq(name))).thenReturn(sttm); instance.save(statement); verify(sttm).stop(); verify(epAdministrator).getStatement(eq(name)); verify(epAdministrator).createEPL(eq(query), eq(name)); } @Test public void testSaveExistingStatement() { final String name = "sttm1"; final String query = "sttm..."; final EPStatement sttm = mock(EPStatement.class); final EPStatement existing = mock(EPStatement.class); final Statement statement = new Statement(name, query, false); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); statement.setStarted(true); when(sttm.isStopped()).thenReturn(false); when(epAdministrator.getStatement(eq(name))).thenReturn(existing); when(epAdministrator.createEPL(eq(query), eq(name))).thenReturn(sttm); instance.save(statement); verify(existing).destroy(); verify(sttm, never()).stop(); verify(epAdministrator, times(2)).getStatement(eq(name)); verify(epAdministrator).createEPL(eq(query), eq(name)); } @Test public void testRemoveExistingStatement() { final String name = "sttm1"; final EPStatement existing = mock(EPStatement.class); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(existing.isStarted()).thenReturn(true); when(epAdministrator.getStatement(eq(name))).thenReturn(existing); assertTrue(instance.remove(name)); verify(existing).destroy(); verify(epAdministrator).getStatement(eq(name)); } @Test public void testRemoveNotExistingStatement() { final String name = "sttm1"; final EPStatement existing = null; final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(epAdministrator.getStatement(eq(name))).thenReturn(existing); assertTrue(instance.remove(name)); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStartStatement() { final String name = "sttm1"; final EPStatement sttm = mock(EPStatement.class); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(sttm.isStarted()).thenReturn(false); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertTrue(instance.start(name)); verify(sttm).start(); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStartRunningStatement() { final String name = "sttm1"; final EPStatement sttm = mock(EPStatement.class); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(sttm.isStarted()).thenReturn(true); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertTrue(instance.start(name)); verify(sttm, never()).start(); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStartNotExistingStatement() { final String name = "sttm1"; final EPStatement sttm = null; final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertFalse(instance.start(name)); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStopStatement() { final String name = "sttm1"; final EPStatement sttm = mock(EPStatement.class); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(sttm.isStopped()).thenReturn(false); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertTrue(instance.stop(name)); verify(sttm).stop(); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStopRunningStatement() { final String name = "sttm1"; final EPStatement sttm = mock(EPStatement.class); final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(sttm.isStopped()).thenReturn(true); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertTrue(instance.stop(name)); verify(sttm, never()).stop(); verify(epAdministrator).getStatement(eq(name)); } @Test public void testStopNotExistingStatement() { final String name = "sttm1"; final EPStatement sttm = null; final StatementConfiguration instance = new StatementConfiguration(epAdministrator); when(epAdministrator.getStatement(eq(name))).thenReturn(sttm); assertFalse(instance.stop(name)); verify(epAdministrator).getStatement(eq(name)); } }