diff --git a/src/main/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLogger.java b/src/main/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLogger.java index ff8f7f2..1f1fff9 100644 --- a/src/main/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLogger.java +++ b/src/main/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLogger.java @@ -2,7 +2,6 @@ import java.sql.Connection; import java.sql.PreparedStatement; -import java.sql.SQLException; import org.fabri1983.refactorexample.joblogger.enhanced.contract.IEnhancedJobLogger; @@ -22,7 +21,7 @@ public void info(String message) { prepStatement.setString(1, message); prepStatement.setInt(2, 1); prepStatement.execute(); - } catch (SQLException ex) { + } catch (Exception ex) { logger.severe(ex.getMessage()); } } @@ -33,7 +32,7 @@ public void warn(String message) { prepStatement.setString(1, message); prepStatement.setInt(2, 3); prepStatement.execute(); - } catch (SQLException ex) { + } catch (Exception ex) { logger.severe(ex.getMessage()); } } @@ -44,7 +43,7 @@ public void error(String message) { prepStatement.setString(1, message); prepStatement.setInt(2, 2); prepStatement.execute(); - } catch (SQLException ex) { + } catch (Exception ex) { logger.severe(ex.getMessage()); } } diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/JobLoggerWithMocksTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/JobLoggerWithMocksTest.java index d3e4880..ab8093f 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/JobLoggerWithMocksTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/JobLoggerWithMocksTest.java @@ -64,7 +64,7 @@ public void whenCreatingLogWithFileOuput_thenFileContainsMessage() throws Except PowerMock.verifyAll(); Assert.assertTrue(tempFile.exists()); - String loggedMessage = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0); + String loggedMessage = XmlDomUtil.getMessagesFromLogXmlFile(tempFile).get(0); Assert.assertEquals(messageToLog, loggedMessage); } diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/CompoundJobLoggerTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/CompoundJobLoggerTest.java index ddd9d9c..d5f5588 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/CompoundJobLoggerTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/CompoundJobLoggerTest.java @@ -71,7 +71,7 @@ public void whenCreatingCompoundJobLogger_thenMessageIsLoggedInEachLogger() thro String errorMessage = "error message"; logger.error(errorMessage); - // then: retrieve logged message from custom console + // then: retrieve logged messages from custom console String consoleLoggedMessages = StandardConsoleRedirector.getCurrentConsoleContent(); // then: restore system console @@ -85,7 +85,7 @@ public void whenCreatingCompoundJobLogger_thenMessageIsLoggedInEachLogger() thro Assert.assertTrue("Console logged messages are not the same than expected messages.", containsAll); // then: logged messages exists in file - List fileLoggedMessages = XmlDomUtil.getMessagesFromXmlFile(tempFile); + List fileLoggedMessages = XmlDomUtil.getMessagesFromLogXmlFile(tempFile); Assert.assertEquals(Arrays.asList(infoMessage, warningMessage, errorMessage), fileLoggedMessages); } diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/ConsoleJobLoggerTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/ConsoleJobLoggerTest.java index 459aa0b..4051260 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/ConsoleJobLoggerTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/ConsoleJobLoggerTest.java @@ -30,7 +30,7 @@ public void whenCreatingLogWithConsoleOuput_thenConsoleContainsMessage() throws String errorMessage = "error message"; logger.error(errorMessage); - // then: retrieve logged message from custom console + // then: retrieve logged messages from custom console String loggedMessages = StandardConsoleRedirector.getCurrentConsoleContent(); // then: restore system console diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLoggerTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLoggerTest.java index f266534..059a2c5 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLoggerTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/DatabaseJobLoggerTest.java @@ -1,10 +1,24 @@ package org.fabri1983.refactorexample.joblogger.enhanced.implementation; +import java.sql.Array; +import java.sql.Blob; +import java.sql.CallableStatement; +import java.sql.Clob; import java.sql.Connection; +import java.sql.DatabaseMetaData; import java.sql.DriverManager; +import java.sql.NClob; import java.sql.PreparedStatement; +import java.sql.SQLClientInfoException; import java.sql.SQLException; +import java.sql.SQLWarning; +import java.sql.SQLXML; +import java.sql.Savepoint; +import java.sql.Statement; +import java.sql.Struct; +import java.util.Map; import java.util.Properties; +import java.util.concurrent.Executor; import static org.easymock.EasyMock.anyInt; import static org.easymock.EasyMock.anyObject; @@ -18,6 +32,7 @@ import org.fabri1983.refactorexample.joblogger.category.EnhancedLoggerCategoryTest; import org.fabri1983.refactorexample.joblogger.enhanced.contract.IEnhancedJobLogger; import org.fabri1983.refactorexample.joblogger.enhanced.factory.JobLoggerFactory; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; @@ -39,6 +54,27 @@ public void setUp() throws Exception { mockComponentsForThreeCalls(); } + @Test + public void whenCreatingLogWithDatabaseOuputAndDummyConnection_thenNoExceptionIsThrown() throws Exception { + + // given: a dummy connection + Connection connection = createDummyConnection(); + + // given: a Database Job Logger + IEnhancedJobLogger logger = JobLoggerFactory.newDatabaseJobLogger(connection); + + // when: login messages + String infoMessage = "info message"; + logger.info(infoMessage); + String warningMessage = "warning message"; + logger.warn(warningMessage); + String errorMessage = "error message"; + logger.error(errorMessage); + + // then: no exception is uncaught since they are handle internally + Assert.assertTrue(true); + } + @Test public void whenCreatingLogWithDatabaseOuput_thenDatabaseExecutedStatement() throws Exception { @@ -48,7 +84,7 @@ public void whenCreatingLogWithDatabaseOuput_thenDatabaseExecutedStatement() thr // given: a Database Job Logger IEnhancedJobLogger logger = JobLoggerFactory.newDatabaseJobLogger(connection); - // when: login a message + // when: login messages String infoMessage = "info message"; logger.info(infoMessage); String warningMessage = "warning message"; @@ -92,5 +128,340 @@ private void mockComponentsForThreeCalls() throws SQLException { PowerMock.replayAll(mockConnection, mockStatement); } + + private Connection createDummyConnection() { + return new Connection() { + + @Override + public T unwrap(Class iface) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isWrapperFor(Class iface) throws SQLException { + // TODO Auto-generated method stub + return false; + } + + @Override + public Statement createStatement() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public CallableStatement prepareCall(String sql) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public String nativeSQL(String sql) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setAutoCommit(boolean autoCommit) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public boolean getAutoCommit() throws SQLException { + // TODO Auto-generated method stub + return false; + } + + @Override + public void commit() throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public void rollback() throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public void close() throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public boolean isClosed() throws SQLException { + // TODO Auto-generated method stub + return false; + } + + @Override + public DatabaseMetaData getMetaData() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setReadOnly(boolean readOnly) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public boolean isReadOnly() throws SQLException { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setCatalog(String catalog) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public String getCatalog() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setTransactionIsolation(int level) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public int getTransactionIsolation() throws SQLException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public SQLWarning getWarnings() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void clearWarnings() throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) + throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) + throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Map> getTypeMap() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setTypeMap(Map> map) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public void setHoldability(int holdability) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public int getHoldability() throws SQLException { + // TODO Auto-generated method stub + return 0; + } + + @Override + public Savepoint setSavepoint() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Savepoint setSavepoint(String name) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void rollback(Savepoint savepoint) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public void releaseSavepoint(Savepoint savepoint) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) + throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, + int resultSetHoldability) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, + int resultSetHoldability) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Clob createClob() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Blob createBlob() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public NClob createNClob() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public SQLXML createSQLXML() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public boolean isValid(int timeout) throws SQLException { + // TODO Auto-generated method stub + return false; + } + + @Override + public void setClientInfo(String name, String value) throws SQLClientInfoException { + // TODO Auto-generated method stub + + } + + @Override + public void setClientInfo(Properties properties) throws SQLClientInfoException { + // TODO Auto-generated method stub + + } + + @Override + public String getClientInfo(String name) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Properties getClientInfo() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Array createArrayOf(String typeName, Object[] elements) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public Struct createStruct(String typeName, Object[] attributes) throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setSchema(String schema) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public String getSchema() throws SQLException { + // TODO Auto-generated method stub + return null; + } + + @Override + public void abort(Executor executor) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException { + // TODO Auto-generated method stub + + } + + @Override + public int getNetworkTimeout() throws SQLException { + // TODO Auto-generated method stub + return 0; + } + + }; + } } diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/FileJobLoggerTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/FileJobLoggerTest.java index bc4c986..45eb015 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/FileJobLoggerTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/enhanced/implementation/FileJobLoggerTest.java @@ -67,7 +67,7 @@ public void whenCreatingLogWithFileOuput_thenFileContainsMessage() throws Except logger.error(errorMessage); // then: logged messages exists in file - List loggedMessages = XmlDomUtil.getMessagesFromXmlFile(tempFile); + List loggedMessages = XmlDomUtil.getMessagesFromLogXmlFile(tempFile); Assert.assertEquals(Arrays.asList(infoMessage, warningMessage, errorMessage), loggedMessages); } diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtil.java b/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtil.java index 9784bd8..0a13f11 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtil.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtil.java @@ -19,7 +19,7 @@ public class XmlDomUtil { - public static List getMessagesFromXmlFile(File file) throws ParserConfigurationException, SAXException, IOException { + public static List getMessagesFromLogXmlFile(File file) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); diff --git a/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtilTest.java b/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtilTest.java index 51aa6cd..ed9f80c 100644 --- a/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtilTest.java +++ b/src/test/java/org/fabri1983/refactorexample/joblogger/util/XmlDomUtilTest.java @@ -46,7 +46,7 @@ public void whenParsingIncompleteLogXmlFile_thenContentIsRetrievedCorrectly() } // when: parsing xml to extract message - String message = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0); + String message = XmlDomUtil.getMessagesFromLogXmlFile(tempFile).get(0); // then: message is the expected Assert.assertEquals(expectedMessage, message); @@ -75,7 +75,7 @@ public void whenParsingCompleteLogXmlFile_thenContentIsRetrievedCorrectly() } // when: parsing xml to extract message - String message = XmlDomUtil.getMessagesFromXmlFile(tempFile).get(0); + String message = XmlDomUtil.getMessagesFromLogXmlFile(tempFile).get(0); // then: message is the expected Assert.assertEquals(expectedMessage, message);