package org.springframework.roo.project;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.roo.support.util.XmlUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Unit test of the {@link Execution} class
*
* @author Andrew Swan
* @since 1.2.0
*/
public class ExecutionTest extends XmlTestCase {
private static final String EXECUTION_CONFIGURATION_XML = " <configuration>\n"
+ " <sources>\n" + " <source>src/main/groovy</source>\n"
+ " </sources>\n" + " </configuration>\n";
private static final String GOAL_1 = "lock";
private static final String GOAL_2 = "load";
private static final String[] GOALS = {GOAL_1, GOAL_2};
private static final String ID = "some-id";
private static final String PHASE = "test";
private static final String EXECUTION_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ "<execution>\n" + " <id>" + ID + "</id>\n" + " <phase>" + PHASE + "</phase>\n"
+ " <goals>\n" + " <goal>" + GOAL_1 + "</goal>\n" + " <goal>" + GOAL_2
+ "</goal>\n" + " </goals>\n" + EXECUTION_CONFIGURATION_XML + "</execution>";
// Fixture
@Mock
private Configuration mockConfiguration;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testExecutionWithConfigurationDoesNotEqualOneWithout() {
// Set up
final Execution execution1 = new Execution(ID, PHASE, GOALS);
final Execution execution2 = new Execution(ID, PHASE, mockConfiguration, GOALS);
// Invoke
assertFalse(execution1.equals(execution2));
assertFalse(execution2.equals(execution1));
}
@Test
public void testGetElementForMinimalExecution() throws Exception {
// Set up
final Document document = DOCUMENT_BUILDER.newDocument();
final Configuration mockConfiguration = mock(Configuration.class);
when(mockConfiguration.getConfiguration()).thenReturn(
XmlUtils.stringToElement(EXECUTION_CONFIGURATION_XML));
final Execution execution = new Execution(ID, PHASE, mockConfiguration, GOALS);
// Invoke
final Element element = execution.getElement(document);
// Check
assertXmlEquals(EXECUTION_XML, element);
}
@Test
public void testIdenticalExecutionsAreEqual() {
assertEquals(new Execution(ID, PHASE, mockConfiguration, GOALS), new Execution(ID, PHASE,
mockConfiguration, GOALS));
}
@Test
public void testIdenticalExecutionsWithNoConfigurationAreEqual() {
assertEquals(new Execution(ID, PHASE, GOALS), new Execution(ID, PHASE, GOALS));
}
}