package org.uberfire.backend.server.plugins.processors; import javax.enterprise.event.Event; import org.jboss.errai.cdi.server.scripts.ScriptRegistry; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.uberfire.backend.server.plugins.engine.AbstractPluginsTest; import org.uberfire.workbench.events.PluginAddedEvent; import org.uberfire.workbench.events.PluginUpdatedEvent; import static org.junit.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class GWTScriptPluginProcessorTest extends AbstractPluginsTest { GWTScriptPluginProcessor processor; @Mock private ScriptRegistry scriptRegistry; @Mock private Event<PluginAddedEvent> pluginAddedEvent; @Mock private Event<PluginUpdatedEvent> pluginUpdatedEvent; @Before public void setup() { super.setup(); processor = new GWTScriptPluginProcessor(scriptRegistry, pluginAddedEvent, pluginUpdatedEvent); } @Test public void processTest() { assertFalse(processor.isRegistered("test-app.nocache.js")); processor.process("test-app.nocache.js", pluginDeploymentDir, true); assertTrue(processor.isRegistered("test-app.nocache.js")); verify(scriptRegistry, times(1)).addScript(eq("UF"), anyString()); verify(pluginAddedEvent, times(1)).fire(any()); processor.process("test-app.nocache.js", pluginDeploymentDir, true); verify(pluginUpdatedEvent, times(1)).fire(any()); } @Test public void shutDownShouldRemoveScripts() throws Exception { processor.shutDown(); verify(scriptRegistry, times(1)).removeScripts("UF"); } @Test public void removeAllShouldClearPluginsAndScriptRegistry() throws Exception { processor.availablePlugins.add("test"); assertFalse(processor.availablePlugins.isEmpty()); processor.removeAll(); verify(scriptRegistry, times(1)).removeScripts("UF"); assertTrue(processor.availablePlugins.isEmpty()); } @Test public void shouldProcessTest() throws Exception { assertFalse(processor.shouldProcess("pluginname.html")); assertTrue(processor.shouldProcess("pluginname.nocache.js")); } }