Skip to content

Commit f6f54fb

Browse files
authored
Added has message methods (#180)
* Added has message methods * Added tests * Added tests * Added tests
1 parent ec9a2ef commit f6f54fb

3 files changed

Lines changed: 120 additions & 0 deletions

File tree

src/main/java/nl/altindag/log/LogCaptor.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,35 @@ private <T> List<T> getLogs(Predicate<ILoggingEvent> logEventPredicate, Function
132132
}
133133
}
134134

135+
public boolean hasMessage(String message) {
136+
return getLogs().stream().anyMatch(log -> log.contains(message));
137+
}
138+
139+
public boolean hasInfoMessage(String message) {
140+
return hasMessage(Level.INFO, message);
141+
}
142+
143+
public boolean hasDebugMessage(String message) {
144+
return hasMessage(Level.DEBUG, message);
145+
}
146+
147+
public boolean hasWarnMessage(String message) {
148+
return hasMessage(Level.WARN, message);
149+
}
150+
151+
public boolean hasErrorMessage(String message) {
152+
return hasMessage(Level.ERROR, message);
153+
}
154+
155+
public boolean hasTraceMessage(String message) {
156+
return hasMessage(Level.TRACE, message);
157+
}
158+
159+
private boolean hasMessage(Level level, String message) {
160+
return getLogs(logEvent -> logEvent.getLevel() == level, ILoggingEvent::getFormattedMessage).stream()
161+
.anyMatch(log -> log.contains(message));
162+
}
163+
135164
public void addFilter(Filter<ILoggingEvent> filter) {
136165
appender.addFilter(filter);
137166
filter.start();

src/test/java/nl/altindag/log/LogCaptorShould.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import nl.altindag.log.service.lombok.ServiceWithLombokAndSlf4j;
4545
import nl.altindag.log.service.slfj4.ServiceWithNestedSlf4j;
4646
import nl.altindag.log.service.slfj4.ServiceWithSlf4j;
47+
import nl.altindag.log.service.slfj4.ServiceWithSlf4jAllLogLevels;
4748
import nl.altindag.log.service.slfj4.ServiceWithSlf4jAndCustomException;
4849
import nl.altindag.log.service.slfj4.ServiceWithSlf4jAndMarkers;
4950
import nl.altindag.log.service.slfj4.ServiceWithSlf4jAndMdcHeaders;
@@ -476,6 +477,54 @@ void captureLoggingEventsContainingMarkersWithSlf4j() {
476477
assertThat(childThree.getName()).isEqualTo("Elizabeth");
477478
}
478479

480+
@Test
481+
void haveHasMessageMethodsForMessages() {
482+
logCaptor = LogCaptor.forClass(ServiceWithSlf4jAllLogLevels.class);
483+
logCaptor.setLogLevelToTrace();
484+
485+
Service service = new ServiceWithSlf4jAllLogLevels();
486+
service.sayHello();
487+
488+
assertThat(logCaptor.hasMessage(LogMessage.INFO.getMessage())).isTrue();
489+
assertThat(logCaptor.hasMessage(LogMessage.ERROR.getMessage())).isTrue();
490+
assertThat(logCaptor.hasMessage(LogMessage.DEBUG.getMessage())).isTrue();
491+
assertThat(logCaptor.hasMessage(LogMessage.WARN.getMessage())).isTrue();
492+
assertThat(logCaptor.hasMessage(LogMessage.TRACE.getMessage())).isTrue();
493+
494+
assertThat(logCaptor.hasInfoMessage(LogMessage.INFO.getMessage())).isTrue();
495+
assertThat(logCaptor.hasErrorMessage(LogMessage.ERROR.getMessage())).isTrue();
496+
assertThat(logCaptor.hasDebugMessage(LogMessage.DEBUG.getMessage())).isTrue();
497+
assertThat(logCaptor.hasWarnMessage(LogMessage.WARN.getMessage())).isTrue();
498+
assertThat(logCaptor.hasTraceMessage(LogMessage.TRACE.getMessage())).isTrue();
499+
500+
assertThat(logCaptor.hasInfoMessage(LogMessage.ERROR.getMessage())).isFalse();
501+
assertThat(logCaptor.hasInfoMessage(LogMessage.DEBUG.getMessage())).isFalse();
502+
assertThat(logCaptor.hasInfoMessage(LogMessage.TRACE.getMessage())).isFalse();
503+
assertThat(logCaptor.hasInfoMessage(LogMessage.WARN.getMessage())).isFalse();
504+
505+
assertThat(logCaptor.hasErrorMessage(LogMessage.INFO.getMessage())).isFalse();
506+
assertThat(logCaptor.hasErrorMessage(LogMessage.DEBUG.getMessage())).isFalse();
507+
assertThat(logCaptor.hasErrorMessage(LogMessage.TRACE.getMessage())).isFalse();
508+
assertThat(logCaptor.hasErrorMessage(LogMessage.WARN.getMessage())).isFalse();
509+
510+
assertThat(logCaptor.hasDebugMessage(LogMessage.INFO.getMessage())).isFalse();
511+
assertThat(logCaptor.hasDebugMessage(LogMessage.ERROR.getMessage())).isFalse();
512+
assertThat(logCaptor.hasDebugMessage(LogMessage.TRACE.getMessage())).isFalse();
513+
assertThat(logCaptor.hasDebugMessage(LogMessage.WARN.getMessage())).isFalse();
514+
515+
assertThat(logCaptor.hasTraceMessage(LogMessage.INFO.getMessage())).isFalse();
516+
assertThat(logCaptor.hasTraceMessage(LogMessage.ERROR.getMessage())).isFalse();
517+
assertThat(logCaptor.hasTraceMessage(LogMessage.DEBUG.getMessage())).isFalse();
518+
assertThat(logCaptor.hasTraceMessage(LogMessage.WARN.getMessage())).isFalse();
519+
520+
assertThat(logCaptor.hasWarnMessage(LogMessage.INFO.getMessage())).isFalse();
521+
assertThat(logCaptor.hasWarnMessage(LogMessage.ERROR.getMessage())).isFalse();
522+
assertThat(logCaptor.hasWarnMessage(LogMessage.DEBUG.getMessage())).isFalse();
523+
assertThat(logCaptor.hasWarnMessage(LogMessage.TRACE.getMessage())).isFalse();
524+
525+
assertThat(logCaptor.hasMessage("This message is expected to be not expected")).isFalse();
526+
}
527+
479528
@Test
480529
void throwExceptionWhenLoggerImplementationIsNull() {
481530
try (MockedStatic<LoggerFactory> loggerFactoryMockedStatic = mockStatic(LoggerFactory.class)) {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* Copyright 2019 Thunderberry.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package nl.altindag.log.service.slfj4;
17+
18+
import nl.altindag.log.service.LogMessage;
19+
import nl.altindag.log.service.Service;
20+
import org.slf4j.Logger;
21+
import org.slf4j.LoggerFactory;
22+
23+
/**
24+
* @author Hakan Altindag
25+
*/
26+
public class ServiceWithSlf4jAllLogLevels implements Service {
27+
28+
private static final Logger LOGGER = LoggerFactory.getLogger(ServiceWithSlf4jAllLogLevels.class);
29+
30+
@Override
31+
public void sayHello() {
32+
LOGGER.info(LogMessage.INFO.getMessage());
33+
LOGGER.warn(LogMessage.WARN.getMessage());
34+
LOGGER.error(LogMessage.ERROR.getMessage());
35+
LOGGER.trace(LogMessage.TRACE.getMessage());
36+
37+
if (LOGGER.isDebugEnabled()) {
38+
LOGGER.debug(LogMessage.DEBUG.getMessage());
39+
}
40+
}
41+
42+
}

0 commit comments

Comments
 (0)