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
7 import org.junit.Rule;
8 import org.junit.Test;
9 import org.junit.rules.ExpectedException;
10
11 import static org.hamcrest.MatcherAssert.assertThat;
12 import static org.hamcrest.Matchers.is;
13 import static org.mockito.Mockito.mock;
14 import static org.mockito.Mockito.when;
15
16 public class TestLoadOnlyPluginPersistentStateStore
17 {
18 @Rule
19 public ExpectedException expectedException = ExpectedException.none();
20
21 @Test
22 public void defaultConstructedReadOnlyStoreHasEmptyState()
23 {
24 final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
25 final PluginPersistentState state = store.load();
26 assertThat(state.getMap().isEmpty(), is(true));
27 }
28
29 @Test
30 public void defaultConstructedReadOnlyStoreStateIsDefaulted()
31 {
32 final Plugin enabledByDefaultPlugin = mock(Plugin.class);
33 when(enabledByDefaultPlugin.isEnabledByDefault()).thenReturn(true);
34 final Plugin disabledByDefaultPlugin = mock(Plugin.class);
35 when(disabledByDefaultPlugin.isEnabledByDefault()).thenReturn(false);
36
37 final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
38 final PluginPersistentState state = store.load();
39 assertThat(state.isEnabled(enabledByDefaultPlugin), is(true));
40 assertThat(state.isEnabled(disabledByDefaultPlugin), is(false));
41 }
42
43 @Test
44 public void saveAlwaysThrows()
45 {
46 final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore();
47 final PluginPersistentState state = mock(PluginPersistentState.class);
48
49 expectedException.expect(IllegalStateException.class);
50 store.save(state);
51 }
52
53 @Test
54 public void readOnlyStoreGivenStateReturnsThatState()
55 {
56 final PluginPersistentState state = mock(PluginPersistentState.class);
57 final PluginPersistentStateStore store = new LoadOnlyPluginPersistentStateStore(state);
58 assertThat(store.load(), is(state));
59 }
60 }