1 package com.atlassian.plugin.manager;
2
3 import com.atlassian.plugin.ModuleDescriptorFactory;
4 import com.atlassian.plugin.PluginAccessor;
5 import com.atlassian.plugin.PluginRegistry;
6 import com.atlassian.plugin.event.PluginEventManager;
7 import com.atlassian.plugin.scope.ScopeManager;
8 import org.junit.runner.RunWith;
9 import org.junit.runners.Parameterized;
10
11 import java.util.Arrays;
12 import java.util.Collection;
13
14 import static org.mockito.Mockito.mock;
15
16 @RunWith(Parameterized.class)
17 public class TestDefaultPluginManagerWithProductPluginAccessor extends TestDefaultPluginManager {
18
19 private interface PluginAccessorSupplier {
20 PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
21 final PluginPersistentStateStore store,
22 final ModuleDescriptorFactory moduleDescriptorFactory,
23 final PluginEventManager pluginEventManager,
24 final ScopeManager scopeManager);
25 }
26
27 @Parameterized.Parameters(name = "{0}")
28 public static Collection<Object[]> data() {
29 return Arrays.asList(new Object[][]{
30 {"ProductPluginAccessor", new PluginAccessorSupplier() {
31 @Override
32 public PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
33 final PluginPersistentStateStore store,
34 final ModuleDescriptorFactory moduleDescriptorFactory,
35 final PluginEventManager pluginEventManager,
36 final ScopeManager scopeManager) {
37 return new ProductPluginAccessor(pluginRegistry, store, moduleDescriptorFactory, pluginEventManager, scopeManager);
38 }
39 }},
40 {"ProductPluginAccessorBase", new PluginAccessorSupplier() {
41 @Override
42 public PluginAccessor supply(final PluginRegistry.ReadOnly pluginRegistry,
43 final PluginPersistentStateStore store,
44 final ModuleDescriptorFactory moduleDescriptorFactory,
45 final PluginEventManager pluginEventManager,
46 final ScopeManager scopeManager) {
47 return new ProductPluginAccessorBase(pluginRegistry, store, moduleDescriptorFactory, pluginEventManager, scopeManager);
48 }
49 }}
50 });
51 }
52
53 @Parameterized.Parameter
54 public String testName;
55
56 @Parameterized.Parameter(1)
57 public PluginAccessorSupplier pluginAccessorSupplier;
58
59 private PluginAccessor pluginAccessor;
60
61 private ScopeManager scopeManager = mock(ScopeManager.class);
62
63
64
65
66
67 @Override
68 protected DefaultPluginManager newDefaultPluginManager(DefaultPluginManager.Builder builder) {
69 final PluginRegistry.ReadWrite pluginRegistry = new PluginRegistryImpl();
70
71 pluginAccessor = pluginAccessorSupplier.supply(pluginRegistry, pluginStateStore, moduleDescriptorFactory, pluginEventManager, scopeManager);
72
73 builder
74 .withPluginRegistry(pluginRegistry)
75 .withPluginAccessor(pluginAccessor);
76 manager = super.newDefaultPluginManager(builder);
77
78 return manager;
79 }
80
81
82
83
84 @Override
85 protected PluginAccessor getPluginAccessor() {
86 return pluginAccessor;
87 }
88 }