View Javadoc
1   package com.atlassian.plugin.manager.store;
2   
3   import com.atlassian.plugin.Plugin;
4   import com.atlassian.plugin.manager.PluginPersistentState;
5   import com.atlassian.plugin.manager.PluginPersistentStateStore;
6   import org.junit.Rule;
7   import org.junit.Test;
8   import org.junit.rules.ExpectedException;
9   
10  import static org.hamcrest.MatcherAssert.assertThat;
11  import static org.hamcrest.Matchers.is;
12  import static org.mockito.Mockito.mock;
13  import static org.mockito.Mockito.when;
14  
15  public class TestLoadOnlyPluginPersistentStateStore {
16      @Rule
17      public final ExpectedException expectedException = ExpectedException.none();
18  
19      @Test
20      public void defaultConstructedReadOnlyStoreHasEmptyState() {
21          final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
22          final PluginPersistentState state = store.load();
23          assertThat(state.getStatesMap().isEmpty(), is(true));
24      }
25  
26      @Test
27      public void defaultConstructedReadOnlyStoreStateIsDefaulted() {
28          final Plugin enabledByDefaultPlugin = mock(Plugin.class);
29          when(enabledByDefaultPlugin.isEnabledByDefault()).thenReturn(true);
30          final Plugin disabledByDefaultPlugin = mock(Plugin.class);
31          when(disabledByDefaultPlugin.isEnabledByDefault()).thenReturn(false);
32  
33          final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
34          final PluginPersistentState state = store.load();
35          assertThat(state.isEnabled(enabledByDefaultPlugin), is(true));
36          assertThat(state.isEnabled(disabledByDefaultPlugin), is(false));
37      }
38  
39      @Test
40      public void saveAlwaysThrows() {
41          final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
42          final PluginPersistentState state = mock(PluginPersistentState.class);
43  
44          expectedException.expect(IllegalStateException.class);
45          store.save(state);
46      }
47  
48      @Test
49      public void readOnlyStoreGivenStateReturnsThatState() {
50          final PluginPersistentState state = mock(PluginPersistentState.class);
51          final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore(state);
52          assertThat(store.load(), is(state));
53      }
54  }