View Javadoc

1   package com.atlassian.webdriver.rule;
2   
3   import com.atlassian.webdriver.testing.rule.LogPageSourceRule;
4   import org.junit.After;
5   import org.junit.Test;
6   import org.junit.runner.Description;
7   import org.junit.runner.RunWith;
8   import org.mockito.Mock;
9   import org.mockito.runners.MockitoJUnitRunner;
10  import org.openqa.selenium.WebDriver;
11  import org.slf4j.Logger;
12  
13  import static org.mockito.Mockito.verify;
14  import static org.mockito.Mockito.verifyNoMoreInteractions;
15  import static org.mockito.Mockito.verifyZeroInteractions;
16  import static org.mockito.Mockito.when;
17  
18  /**
19   * Test case for {@link com.atlassian.webdriver.testing.rule.LogPageSourceRule}.
20   *
21   * @since 2.2
22   */
23  @RunWith(MockitoJUnitRunner.class)
24  public class TestLogPageSourceRule
25  {
26      private static final String LOG_PAGE_SOURCE = "atlassian.test.logSourceOnFailure";
27  
28      @Mock private WebDriver mockWebDriver;
29  
30      @Mock private Logger mockLogger;
31  
32      @After
33      public void resetLogPageSourceProperty()
34      {
35          System.setProperty(LOG_PAGE_SOURCE, "");
36      }
37  
38      @Test
39      public void shouldLogSourceOnFailureWhenEnabled()
40      {
41          enableLogPageSource();
42          when(mockWebDriver.getPageSource()).thenReturn("The Source");
43          final LogPageSourceRule rule = createRule();
44          rule.failed(new RuntimeException(), Description.createTestDescription(TestLogPageSourceRule.class, "testMethod"));
45          verify(mockLogger).info("----- Test '{}' Failed. ", "testMethod");
46          verify(mockLogger).info("----- START PAGE SOURCE DUMP\n\n\n{}\n\n\n", "The Source");
47          verify(mockLogger).info("----- END PAGE SOURCE DUMP");
48          verifyNoMoreInteractions(mockLogger);
49      }
50  
51      @Test
52      public void shouldNotLogIfLoggingDisabled()
53      {
54          resetLogPageSourceProperty();
55          createRule().failed(new RuntimeException(), Description.createTestDescription(TestLogPageSourceRule.class, "testMethod"));
56          verifyZeroInteractions(mockLogger);
57      }
58  
59      private void enableLogPageSource()
60      {
61          System.setProperty(LOG_PAGE_SOURCE, "true");
62      }
63  
64      private LogPageSourceRule createRule()
65      {
66          return new LogPageSourceRule(mockWebDriver, mockLogger);
67      }
68  }