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 }