View Javadoc

1   package com.atlassian.sal.core.features;
2   
3   import com.atlassian.sal.api.features.EnabledDarkFeatures;
4   import com.atlassian.sal.api.user.UserManager;
5   import org.junit.Rule;
6   import org.junit.Test;
7   import org.junit.runner.RunWith;
8   import org.mockito.Mock;
9   import org.mockito.runners.MockitoJUnitRunner;
10  
11  import javax.annotation.Nonnull;
12  
13  import static org.hamcrest.Matchers.hasItem;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNull;
16  import static org.junit.Assert.assertThat;
17  import static org.junit.Assert.assertTrue;
18  
19  @RunWith(MockitoJUnitRunner.class)
20  public class TestDefaultDarkFeatureManager
21  {
22      private static final String FEATURE_FOO = "foo";
23  
24      @Rule public final ClearSystemPropertyRule systemPropertyRule = new ClearSystemPropertyRule();
25      @Mock private UserManager userManager;
26  
27      @Test
28      public void systemFeatureEnabled()
29      {
30          enableDarkFeature(FEATURE_FOO);
31          assertTrue(createFeatureManager().isSystemFeatureEnabled(FEATURE_FOO));
32      }
33  
34      @Test
35      public void systemFeatureNotEnabled()
36      {
37          assertNull(System.getProperty(FEATURE_FOO));
38          assertFalse(createFeatureManager().isSystemFeatureEnabled(FEATURE_FOO));
39      }
40  
41      @Test
42      public void enabledSystemFeatureContainedInList()
43      {
44          enableDarkFeature(FEATURE_FOO);
45          final EnabledDarkFeatures enabledDarkFeatures = createFeatureManager().getAllEnabledFeaturesForCurrentUser();
46          assertThat(enabledDarkFeatures.getAllEnabledFeatures(), hasItem(FEATURE_FOO));
47      }
48  
49      @Test
50      public void featureEnabledViaSystemFeature()
51      {
52          enableDarkFeature(FEATURE_FOO);
53          assertTrue(createFeatureManager().isFeatureEnabled(FEATURE_FOO));
54      }
55  
56      @Test
57      public void featureNotEnabled()
58      {
59          assertNull(System.getProperty(FEATURE_FOO));
60          assertFalse(createFeatureManager().isFeatureEnabled(FEATURE_FOO));
61      }
62  
63      private void enableDarkFeature(@Nonnull final String systemPropertyKey)
64      {
65          systemPropertyRule.setPropertyWithDarkFeaturePrefix(systemPropertyKey, "true");
66      }
67  
68      private DefaultDarkFeatureManager createFeatureManager()
69      {
70          return new DefaultDarkFeatureManager(userManager);
71      }
72  }