assertThrows(PluginNotFoundException.class, () -> pluginManager.stopPlugin(pluginZip2.pluginId()));
}
+ @Test
+ void deletePluginWithDependency() throws IOException {
+ PluginZip pluginZip1 = new PluginZip.Builder(pluginsPath.resolve("my-first-plugin-1.1.1.zip"), "myPlugin1")
+ .pluginVersion("1.1.1")
+ .build();
+
+ PluginZip pluginZip2 = new PluginZip.Builder(pluginsPath.resolve("my-second-plugin-2.2.2.zip"), "myPlugin2")
+ .pluginVersion("2.2.2")
+ .pluginDependencies("myPlugin1")
+ .build();
+
+ PluginZip pluginZip3 = new PluginZip.Builder(pluginsPath.resolve("my-third-plugin-3.3.3.zip"), "myPlugin3")
+ .pluginVersion("3.3.3")
+ .pluginDependencies("myPlugin2")
+ .build();
+
+ pluginManager.loadPlugins();
+ pluginManager.startPlugins();
+
+ assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState());
+ assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip2.pluginId()).getPluginState());
+ assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip3.pluginId()).getPluginState());
+
+ System.out.println("Stopping " + pluginZip2.pluginId());
+ pluginManager.stopPlugin(pluginZip2.pluginId());
+ assertEquals(PluginState.STOPPED, pluginManager.getPlugin(pluginZip2.pluginId()).getPluginState());
+
+ boolean deleted = pluginManager.deletePlugin(pluginZip2.pluginId());
+ assertTrue(deleted);
+
+ assertEquals(1, pluginManager.getPlugins().size()); // myPlugin1 should still be there, myPlugin2 and myPlugin3 should be gone
+
+ pluginManager.stopPlugin(pluginZip1.pluginId());
+ assertEquals(PluginState.STOPPED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState());
+ }
+
}