View Javadoc

1   package com.atlassian.johnson.event;
2   
3   import com.atlassian.johnson.Johnson;
4   import org.junit.After;
5   import org.junit.Before;
6   import org.junit.Test;
7   
8   import java.util.function.Predicate;
9   
10  import static com.atlassian.johnson.event.EventLevels.error;
11  import static com.atlassian.johnson.event.EventLevels.fatal;
12  import static com.atlassian.johnson.event.EventLevels.warning;
13  import static org.hamcrest.Matchers.is;
14  import static org.junit.Assert.assertThat;
15  import static org.mockito.Mockito.mock;
16  import static org.mockito.Mockito.when;
17  
18  public class EventPredicatesTest {
19  
20      private static final String ATTRIBUTE_NAME = "foo";
21  
22      private static Event eventWithAttribute(final Object value) {
23          final Event event = mock(Event.class);
24          when(event.getAttribute(ATTRIBUTE_NAME)).thenReturn(value);
25          return event;
26      }
27  
28      private static Event eventWithLevel(final EventLevel eventLevel) {
29          final Event event = mock(Event.class);
30          when(event.getLevel()).thenReturn(eventLevel);
31          return event;
32      }
33  
34      private static Event eventWithType(final EventType eventType) {
35          final Event event = mock(Event.class);
36          when(event.getKey()).thenReturn(eventType);
37          return event;
38      }
39  
40      @Before
41      public void initialiseJohnson() {
42          Johnson.initialize("test-johnson-config.xml");
43      }
44  
45      @After
46      public void terminateJohnson() {
47          Johnson.terminate();
48      }
49  
50      @Test
51      public void warningOrErrorPredicateShouldOnlyMatchEventsWithEitherOfThoseLevels() {
52          // Invoke
53          final Predicate<Event> predicate = EventPredicates.level(error(), warning());
54  
55          // Check
56          assertThat(predicate.test(eventWithLevel(error())), is(true));
57          assertThat(predicate.test(eventWithLevel(warning())), is(true));
58          assertThat(predicate.test(eventWithLevel(fatal())), is(false));
59      }
60  
61      @Test
62      public void typeBasedPredicateShouldOnlyMatchEventsOfThatType() {
63          // Set up
64          final EventType matchingEventType = EventType.get("database");
65          final EventType nonMatchingEventType = EventType.get("upgrade");
66  
67          // Invoke
68          final Predicate<Event> predicate = EventPredicates.type(matchingEventType);
69  
70          // Check
71          assertThat(predicate.test(eventWithType(matchingEventType)), is(true));
72          assertThat(predicate.test(eventWithType(nonMatchingEventType)), is(false));
73      }
74  
75      @Test
76      public void attributeBasedPredicateWithNullValueShouldOnlyMatchEventsWithNoSuchAttribute() {
77          // Invoke
78          final Predicate<Event> predicate = EventPredicates.attributeEquals(ATTRIBUTE_NAME, null);
79  
80          // Check
81          assertThat(predicate.test(eventWithAttribute(null)), is(true));
82          assertThat(predicate.test(eventWithAttribute("bar")), is(false));
83      }
84  
85      @Test
86      public void attributeBasedPredicateWithNonNullValueShouldOnlyMatchEventsWithThatAttributeValue() {
87          // Invoke
88          final Predicate<Event> predicate = EventPredicates.attributeEquals(ATTRIBUTE_NAME, "bar");
89  
90          // Check
91          assertThat(predicate.test(eventWithAttribute("bar")), is(true));
92          assertThat(predicate.test(eventWithAttribute(null)), is(false));
93      }
94  }