Skip to content

Commit

Permalink
Add tests for war and error logging messages
Browse files Browse the repository at this point in the history
  • Loading branch information
fabri1983 committed Sep 20, 2019
1 parent c202d72 commit d8ea3ea
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ public void whenCreatingLogWithFileOuput_thenFileContainsMessage() throws Except
PowerMock.verifyAll();

Assert.assertTrue(tempFile.exists());
String loggedMessage = XmlDomUtil.getFirstMessageFromXmlFile(tempFile);
String loggedMessage = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0);
Assert.assertEquals(messageToLog, loggedMessage);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,26 @@ public void whenCreatingLogWithConsoleOuput_thenConsoleContainsMessage() throws
// given: a Console Job Logger
IEnhancedJobLogger logger = JobLoggerFactory.newConsoleJobLogger();

// when: logging a message to console
String messageToLog = "message to be logged";
logger.info(messageToLog);
// when: logging messages to console
String infoMessage = "info message";
logger.info(infoMessage);
String warningMessage = "warning message";
logger.warn(warningMessage);
String errorMessage = "error message";
logger.error(errorMessage);

// then: retrieve logged message from cusotm console
String loggedMessage = StandardConsoleRedirector.getCurrentConsoleContent();
String loggedMessages = StandardConsoleRedirector.getCurrentConsoleContent();

// then: restore system console
StandardConsoleRedirector.restoreStd();
StandardConsoleRedirector.closeCustomConsole();

// then: message from custom console matches with expected message
boolean contains = loggedMessage.contains(messageToLog);
Assert.assertTrue("Console logged message is not the same than expected message.", contains);
// then: messages from custom console matches with expected messages
boolean containsAll = loggedMessages.contains(infoMessage)
&& loggedMessages.contains(warningMessage)
&& loggedMessages.contains(errorMessage);
Assert.assertTrue("Console logged messages are not the same than expected messages.", containsAll);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class DatabaseJobLoggerTest {

@Before
public void setUp() throws Exception {
mockComponents();
mockComponentsForThreeCalls();
}

@Test
Expand All @@ -49,8 +49,12 @@ public void whenCreatingLogWithDatabaseOuput_thenDatabaseExecutedStatement() thr
IEnhancedJobLogger logger = JobLoggerFactory.newDatabaseJobLogger(connection);

// when: login a message
String messageToLog = "message to be logged";
logger.info(messageToLog);
String infoMessage = "info message";
logger.info(infoMessage);
String warningMessage = "warning message";
logger.info(warningMessage);
String errorMessage = "error message";
logger.info(errorMessage);

// then: verify components has been called as per expectations
PowerMock.verifyAll();
Expand All @@ -61,7 +65,7 @@ private Connection createConnection() throws SQLException {
return connection;
}

private void mockComponents() throws SQLException {
private void mockComponentsForThreeCalls() throws SQLException {
Connection mockConnection = createMock(Connection.class);
PreparedStatement mockStatement = createMock(PreparedStatement.class);

Expand All @@ -70,16 +74,21 @@ private void mockComponents() throws SQLException {
.andReturn(mockConnection);

expect(mockConnection.prepareStatement(anyString()))
.andReturn(mockStatement);
.andReturn(mockStatement)
.times(3);

expect(mockStatement.execute())
.andReturn(true);
mockStatement.setString(anyInt(), anyString());
expectLastCall();
mockStatement.setInt(anyInt(), anyInt());
expectLastCall();
mockStatement.close();
expectLastCall();
.andReturn(true)
.times(3);

for (int i=0; i < 3; ++i) {
mockStatement.setString(anyInt(), anyString());
expectLastCall();
mockStatement.setInt(anyInt(), anyInt());
expectLastCall();
mockStatement.close();
expectLastCall();
}

PowerMock.replayAll(mockConnection, mockStatement);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package org.fabri1983.refactorexample.joblogger.enhanced.implementation;

import java.io.File;
import java.util.Arrays;
import java.util.List;

import org.fabri1983.refactorexample.joblogger.category.AllLoggersCategoryTest;
import org.fabri1983.refactorexample.joblogger.category.EnhancedLoggerCategoryTest;
Expand Down Expand Up @@ -56,14 +58,17 @@ public void whenCreatingLogWithFileOuput_thenFileContainsMessage() throws Except
// given: a File Job Logger
IEnhancedJobLogger logger = JobLoggerFactory.newFileJobLogger(tempFile);

// when: logging a message
String messageToLog = "message to be logged";
logger.info(messageToLog);
// when: logging messages
String infoMessage = "info message";
logger.info(infoMessage);
String warningMessage = "warning message";
logger.info(warningMessage);
String errorMessage = "error message";
logger.info(errorMessage);

// then: logged message exists in file
Assert.assertTrue(tempFile.exists());
String loggedMessage = XmlDomUtil.getFirstMessageFromXmlFile(tempFile);
Assert.assertEquals(messageToLog, loggedMessage);
// then: logged messages exists in file
List<String> loggedMessages = XmlDomUtil.getMessagesFromXmlFile(tempFile);
Assert.assertEquals(Arrays.asList(infoMessage, warningMessage, errorMessage), loggedMessages);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import java.io.StringReader;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
Expand All @@ -17,7 +19,7 @@

public class XmlDomUtil {

public static String getFirstMessageFromXmlFile(File file) throws ParserConfigurationException, SAXException, IOException {
public static List<String> getMessagesFromXmlFile(File file) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);

Expand All @@ -37,8 +39,13 @@ public static String getFirstMessageFromXmlFile(File file) throws ParserConfigur
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(fileContent)));

// collect all messages
NodeList nList = document.getElementsByTagName("message");
return nList.item(0).getTextContent();
List<String> messages = new ArrayList<>(nList.getLength());
for (int i=0, c=nList.getLength(); i < c; ++i) {
messages.add(nList.item(i).getTextContent());
}
return messages;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public void whenParsingIncompleteLogXmlFile_thenContentIsRetrievedCorrectly()
}

// when: parsing xml to extract message
String message = XmlDomUtil.getFirstMessageFromXmlFile(tempFile);
String message = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0);

// then: message is the expected
Assert.assertEquals(expectedMessage, message);
Expand Down Expand Up @@ -75,7 +75,7 @@ public void whenParsingCompleteLogXmlFile_thenContentIsRetrievedCorrectly()
}

// when: parsing xml to extract message
String message = XmlDomUtil.getFirstMessageFromXmlFile(tempFile);
String message = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0);

// then: message is the expected
Assert.assertEquals(expectedMessage, message);
Expand Down

0 comments on commit d8ea3ea

Please sign in to comment.