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 }